Update Reference Sources to .NET Framework 4.6.1
authordotnet-bot <dotnet-bot@microsoft.com>
Fri, 4 Dec 2015 19:31:10 +0000 (11:31 -0800)
committerMarek Safar <marek.safar@gmail.com>
Tue, 3 May 2016 09:42:37 +0000 (11:42 +0200)
3440 files changed:
mcs/class/referencesource/SMDiagnostics/System/ServiceModel/Diagnostics/Utility.cs
mcs/class/referencesource/System.Activities.Core.Presentation/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/SR.Designer.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ArgumentIdentifierTrimConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/AssignDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CancellationScopeDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewInterface.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewModel.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBoxIsEnabledConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseLabelVisibilityConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CatchDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ComboBoxHelper.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CompensableActivityDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ConnectionPointType.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DelegateArgumentsValueEditor.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DesignerMetadata.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DisplayNameConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DoWhileDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooser.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooserViewModel.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyToTooltipConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemShowExpandedMultiValueConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemWrapper.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpressionToExpressionTextConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericForEachWithBodyFactory.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericParallelForEachWithBodyFactory.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/PickWithTwoBranchesFactory.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/StateMachineWithInitialStateFactory.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FakeRoot.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FinalState.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionLabelFeature.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchCaseEditorDialog.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDefaultLinkFeature.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLabelFeature.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLink.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkCasePropertyEditor.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkMultiValueConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartConnectionPointsAdorner.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Container.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Helpers.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChangeReactions.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChanges.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesignerCommands.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAdorner.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAutomationPeer.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartFreeFormPanel.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartResizeGrip.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartSizeFeature.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ForEachDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FreeFormPanelUtilities.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericFlowSwitchHelper.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericTypeArgumentConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextMaxWidthConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IFlowSwitch.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IfElseDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InteropDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateValidationFeature.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeMethodDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsLastSelectedItemConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsStateRootDesignerConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/LocationChangedEventArgs.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MaxValueConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MorphHelpers.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NoPersistScopeDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NotConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelSeparator.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickBranchDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocator.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocatorFeature.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PropertyNames.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/RegisterMetadataDelayedWorker.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ReorderableListEditor.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SelectedPropertyNameChangedEventArgs.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SequenceDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartNode.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartSymbol.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateConnectionPointToolTip.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.CompositeView.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChangeReactions.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChanges.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.Utilities.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerResizeGrip.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateLinkButtonToolTipConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineConnetionPointsAdorner.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineFreeFormPanel.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocator.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocatorFeature.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchTryCatchDesignerHelper.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/DesignerStyleDictionary.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/EditorCategoryTemplateDictionary.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/StringResourceDictionary.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransactionScopeDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionReorderChange.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TryCatchDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/VerticalConnector.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WhileDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WriteLineDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityDesignerHelper.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityXRefPropertyEditor.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/ArgumentCollectionPropertyEditor.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesignerOptions.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDialog.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionPropertyEditor.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ActivityXRefConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingEditor.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingPropertyValueEditor.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentButtonTitleConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentCorrelationTypeExpander.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentDialogViewModel.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveMessageContentSearchableStringConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveParametersContentSearchableStringConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendMessageContentSearchableStringConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendParametersContentSearchableStringConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/XPathMessageQuerySearchableStringConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelatesOnValueEditor.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationDataDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerValueEditor.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationScopeDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/EndpointDesigner.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/ReceiveAndSendReplyFactory.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/SendAndReceiveReplyFactory.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/InitializeCorrelationDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQueryEditor.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQuerySetDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessagingContentPropertyEditorResources.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentDialog.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentPropertyEditor.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyValidationFeature.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentDialog.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentPropertyEditor.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyValidationFeature.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ServiceContractImporter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TransactedReceiveScope.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TypeToTreeConverter.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Presentation/ServiceDesigner.xaml.cs [new file with mode: 0644]
mcs/class/referencesource/System.Activities.DurableInstancing/System/Activities/DurableInstancing/SqlCommandAsyncResult.cs
mcs/class/referencesource/System.Activities.Presentation/Microsoft.Tools.Common/Microsoft/Activities/Presentation/Xaml/XamlWriterExtensions.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/AssemblyInfo.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/SR.Designer.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ArgumentIdentifierTrimConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/AssignDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CancellationScopeDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewInterface.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewModel.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBoxIsEnabledConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseLabelVisibilityConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CatchDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ComboBoxHelper.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CompensableActivityDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ConnectionPointType.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DelegateArgumentsValueEditor.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DesignerMetadata.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DisplayNameConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DoWhileDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooser.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooserViewModel.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyToTooltipConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemShowExpandedMultiValueConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemWrapper.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpressionToExpressionTextConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericForEachWithBodyFactory.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericParallelForEachWithBodyFactory.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/PickWithTwoBranchesFactory.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/StateMachineWithInitialStateFactory.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FakeRoot.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FinalState.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionLabelFeature.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchCaseEditorDialog.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDefaultLinkFeature.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLabelFeature.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLink.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkCasePropertyEditor.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkMultiValueConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartConnectionPointsAdorner.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Container.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Helpers.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChangeReactions.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChanges.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesignerCommands.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAdorner.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAutomationPeer.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartFreeFormPanel.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartResizeGrip.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartSizeFeature.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ForEachDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FreeFormPanelUtilities.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericFlowSwitchHelper.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericTypeArgumentConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextMaxWidthConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IFlowSwitch.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IfElseDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InteropDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateValidationFeature.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeMethodDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsLastSelectedItemConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsStateRootDesignerConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/LocationChangedEventArgs.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MaxValueConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MorphHelpers.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NoPersistScopeDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NotConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelSeparator.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickBranchDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocator.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocatorFeature.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PropertyNames.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/RegisterMetadataDelayedWorker.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ReorderableListEditor.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SelectedPropertyNameChangedEventArgs.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SequenceDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartNode.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartSymbol.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateConnectionPointToolTip.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.CompositeView.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChangeReactions.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChanges.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.Utilities.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerResizeGrip.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateLinkButtonToolTipConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineConnetionPointsAdorner.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineFreeFormPanel.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocator.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocatorFeature.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchTryCatchDesignerHelper.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/DesignerStyleDictionary.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/EditorCategoryTemplateDictionary.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/StringResourceDictionary.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransactionScopeDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionReorderChange.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TryCatchDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/VerticalConnector.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WhileDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WriteLineDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityDesignerHelper.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityXRefPropertyEditor.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/ArgumentCollectionPropertyEditor.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesignerOptions.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDialog.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionPropertyEditor.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ActivityXRefConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingEditor.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingPropertyValueEditor.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentButtonTitleConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentCorrelationTypeExpander.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentDialogViewModel.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveMessageContentSearchableStringConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveParametersContentSearchableStringConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendMessageContentSearchableStringConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendParametersContentSearchableStringConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/XPathMessageQuerySearchableStringConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelatesOnValueEditor.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationDataDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerValueEditor.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationScopeDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/EndpointDesigner.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/ReceiveAndSendReplyFactory.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/SendAndReceiveReplyFactory.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/InitializeCorrelationDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQueryEditor.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQuerySetDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessagingContentPropertyEditorResources.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentDialog.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentPropertyEditor.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyValidationFeature.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentDialog.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentPropertyEditor.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyValidationFeature.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ServiceContractImporter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TransactedReceiveScope.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TypeToTreeConverter.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Presentation/ServiceDesigner.xaml.cs [deleted file]
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Annotations/NotifyArgumentVariableAnnotationTextChanged.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Internal/PropertyEditing/CategoryList.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Internal/PropertyEditing/EditModeSwitchButtonKeyboardFix.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Internal/PropertyEditing/Editors/EditorUtilities.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Internal/PropertyEditing/ExtensibilityAccessor.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Internal/PropertyEditing/FromExpression/Framework/Controls/WorkaroundPopup.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Internal/PropertyEditing/FromExpression/Framework/PropertyInspector/CategoryContainer.xaml.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Internal/PropertyEditing/FromExpression/Framework/PropertyInspector/PropertyContainerPopupHelper.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Internal/PropertyEditing/FromExpression/Framework/ValueEditors/ChoiceEditor.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Internal/PropertyEditing/PropertyValueDialogHost.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Internal/PropertyEditing/VisualTreeUtils.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/Metadata/MetadataStore.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Base/Core/PropertyEditing/EditModeSwitchButton.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/CachedResourceDictionaryExtension.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Hosting/WindowHelperService.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Model/ModelItemDictionaryImpl.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Model/ModelPropertyImpl.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/View/ArgumentDesigner.xaml.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/View/DataGridHelper.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/View/ExpressionTextBox.xaml.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/View/VBIdentifierName.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/View/VariableDesigner.xaml.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/WorkflowItemPresenter.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Xaml/ErrorTolerantObjectWriter.cs
mcs/class/referencesource/System.Activities.Presentation/System.Activities.Presentation/System/Activities/Presentation/Xaml/ObjectToSourceLocationMapping.cs
mcs/class/referencesource/System.Activities/System/Activities/Debugger/StateManager.cs
mcs/class/referencesource/System.Activities/System/Activities/Runtime/ActivityExecutor.cs
mcs/class/referencesource/System.Activities/System/Activities/Runtime/ActivityInstanceMap.cs
mcs/class/referencesource/System.Activities/System/Activities/Statements/MethodExecutor.cs
mcs/class/referencesource/System.Activities/System/Activities/Statements/MethodResolver.cs
mcs/class/referencesource/System.Activities/System/Activities/WorkflowApplication.cs
mcs/class/referencesource/System.Activities/System/Activities/WorkflowPersistenceContext.cs
mcs/class/referencesource/System.Activities/System/Activities/XamlIntegration/ActivityWithResultConverter.cs
mcs/class/referencesource/System.Activities/System/Activities/XamlIntegration/DynamicActivityXamlReader.cs
mcs/class/referencesource/System.Activities/System/Activities/XamlIntegration/XamlWriterExtensions.cs
mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AppContextDefaultValues.Default.cs [new file with mode: 0644]
mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AppSettings.cs [new file with mode: 0644]
mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/EmailAddressAttribute.cs
mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/LocalAppContextSwitches.cs [new file with mode: 0644]
mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/MetadataPropertyDescriptorWrapper.cs
mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/PhoneAttribute.cs
mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/RegularExpressionAttribute.cs
mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/UrlAttribute.cs
mcs/class/referencesource/System.ComponentModel.DataAnnotations/InternalApis/Clr/inc/AppContextDefaultValues.cs [new file with mode: 0644]
mcs/class/referencesource/System.ComponentModel.DataAnnotations/InternalApis/Clr/inc/LocalAppContext.cs [new file with mode: 0644]
mcs/class/referencesource/System.Configuration/System/Configuration/BaseConfigurationRecord.cs
mcs/class/referencesource/System.Configuration/System/Configuration/Internal/InternalConfigHost.cs
mcs/class/referencesource/System.Configuration/System/Configuration/MgmtConfigurationRecord.cs
mcs/class/referencesource/System.Configuration/System/Configuration/RSAProtectedConfigurationProvider.cs
mcs/class/referencesource/System.Core/Microsoft/Scripting/Ast/TypeBinaryExpression.cs
mcs/class/referencesource/System.Core/Microsoft/Scripting/Compiler/AssemblyGen.cs
mcs/class/referencesource/System.Core/Microsoft/Scripting/Compiler/LambdaCompiler.Unary.cs
mcs/class/referencesource/System.Core/Microsoft/Win32/SafeHandles/BCryptSafeHandles.cs
mcs/class/referencesource/System.Core/Microsoft/Win32/SafeHandles/NCryptSafeHandles.cs
mcs/class/referencesource/System.Core/System/Diagnostics/Eventing/EventDescriptor.cs
mcs/class/referencesource/System.Core/System/Diagnostics/Eventing/EventProvider.cs
mcs/class/referencesource/System.Core/System/Diagnostics/Eventing/Reader/EventLogSession.cs
mcs/class/referencesource/System.Core/System/Diagnostics/Eventing/Reader/EventMetadata.cs
mcs/class/referencesource/System.Core/System/Diagnostics/Eventing/Reader/EventOpcode.cs
mcs/class/referencesource/System.Core/System/Diagnostics/Eventing/Reader/EventRecord.cs
mcs/class/referencesource/System.Core/System/Diagnostics/Eventing/Reader/ProviderMetadata.cs
mcs/class/referencesource/System.Core/System/IO/BufferedStream2.cs
mcs/class/referencesource/System.Core/System/IO/LogStream.cs
mcs/class/referencesource/System.Core/System/IO/MemoryMappedFiles/MemoryMappedView.cs
mcs/class/referencesource/System.Core/System/IO/MemoryMappedFiles/MemoryMappedViewAccessor.cs
mcs/class/referencesource/System.Core/System/IO/MemoryMappedFiles/MemoryMappedViewStream.cs
mcs/class/referencesource/System.Core/System/IO/Pipes/PipeStream.cs
mcs/class/referencesource/System.Core/System/Linq/Enumerable.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Channels/AsynchronousChannel.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Channels/SynchronousChannel.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Enumerables/AggregationMinMaxHelpers.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Enumerables/EmptyEnumerable.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Enumerables/EnumerableWrapperWeakToStrong.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Enumerables/OrderedParallelQuery.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Enumerables/ParallelEnumerableWrapper.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Enumerables/ParallelQuery.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Enumerables/RangeEnumerable.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Enumerables/RepeatEnumerable.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Merging/ArrayMergeHelper.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Merging/AsynchronousChannelMergeEnumerator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Merging/DefaultMergeHelper.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Merging/MergeEnumerator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Merging/MergeExecutor.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Merging/OrderPreservingMergeHelper.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Merging/OrderPreservingPipeliningMergeHelper.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Merging/SynchronousChannelMergeEnumerator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Partitioning/HashRepartitionEnumerator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Partitioning/HashRepartitionStream.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Partitioning/OrderedHashRepartitionEnumerator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Partitioning/OrderedHashRepartitionStream.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Partitioning/PartitionedDataSource.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Partitioning/PartitionedStream.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Partitioning/UnorderedHashRepartitionStream.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/AssociativeAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Binary/ExceptQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Binary/GroupJoinQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Binary/HashJoinQueryOperatorEnumerator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Binary/IntersectQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Binary/JoinQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Binary/UnionQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Binary/ZipQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/BinaryQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/CountAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/DecimalAverageAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/DecimalMinMaxAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/DecimalSumAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/DoubleAverageAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/DoubleMinMaxAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/DoubleSumAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/FloatAverageAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/FloatMinMaxAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/FloatSumAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/InlinedAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/InlinedAggregationOperatorEnumerator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/IntAverageAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/IntMinMaxAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/IntSumAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/LongAverageAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/LongCountAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/LongMinMaxAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/LongSumAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableDecimalAverageAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableDecimalMinMaxAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableDecimalSumAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableDoubleAverageAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableDoubleMinMaxAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableDoubleSumAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableFloatAverageAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableFloatMinMaxAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableFloatSumAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableIntAverageAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableIntMinMaxAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableIntSumAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableLongAverageAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableLongMinMaxAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Inlined/NullableLongSumAggregationOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/ListQueryResults.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Options/OrderingQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Options/QueryExecutionOption.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/PartitionedStreamMerger.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/PartitionerQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/QueryOpeningEnumerator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/QueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/QueryOperatorEnumerator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/QueryResults.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/QuerySettings.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/ScanQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/AnyAllSearchOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/ConcatQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/ContainsSearchOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/DefaultIfEmptyQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/DistinctQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/ElementAtQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/FirstQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/ForAllOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/GroupByQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/IndexedSelectQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/IndexedWhereQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/LastQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/ReverseQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/SelectManyQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/SelectQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/SingleQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/SortQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/TakeOrSkipQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/TakeOrSkipWhileQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/Unary/WhereQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/QueryOperators/UnaryQueryOperator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Scheduling/CancellationState.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Scheduling/OrderPreservingPipeliningSpoolingTask.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Scheduling/OrderPreservingSpoolingTask.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Scheduling/QueryLifecycle.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Scheduling/QueryTask.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Scheduling/QueryTaskGroupState.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Scheduling/Scheduling.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Scheduling/SpoolingTask.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Scheduling/SpoolingTaskBase.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/CancellableEnumerable.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/ExceptionAggregator.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/ExchangeUtilities.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/FixedMaxHeap.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/GrowingArray.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/HashLookup.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/ListChunk.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/Lookup.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/PLINQETWProvider.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/Pair.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/PairComparer.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/ReverseComparer.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/Shared.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/Sorting.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/TraceHelpers.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/Util.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/Wrapper.cs
mcs/class/referencesource/System.Core/System/Linq/Parallel/Utils/WrapperEqualityComparer.cs
mcs/class/referencesource/System.Core/System/Linq/ParallelEnumerable.cs
mcs/class/referencesource/System.Core/System/Linq/SequenceQuery.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/BCryptNative.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/ECDsa.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/ECDsaCng.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/NCryptNative.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs [new file with mode: 0644]
mcs/class/referencesource/System.Core/System/Security/Cryptography/X509Certificates/RSACertificateExtensions.cs
mcs/class/referencesource/System.Core/System/Security/Cryptography/X509Certificates/X509Native.cs
mcs/class/referencesource/System.Core/System/threading/Tasks/TaskExtensions.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/DataRowComparer.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/DataRowExtensions.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/DataSetUtil.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/DataTableExtensions.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/EnumerableRowCollection.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/EnumerableRowCollectionExtensions.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/LinqDataView.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/OrderedEnumerableRowCollection.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/SortExpressionBuilder.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/TypedTableBase.cs
mcs/class/referencesource/System.Data.DataSetExtensions/System/Data/TypedTableBaseExtensions.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/AspNet/BuildProviderUtils.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/AspNet/EntityDesignerBuildProvider.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/AspNet/EntityModelBuildProvider.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/AspNet/MappingModelBuildProvider.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/AspNet/StorageModelBuildProvider.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/Common/EDesignUtil.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/Common/MetadataItemSerializer.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/Common/MetadataUtil.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/Common/OneToOneMappingSerializer.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/Common/UniqueIdentifierService.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/EntityCodeGenerator.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/EntityDesignerUtils.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/EntityFrameworkVersions.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/EntityModelSchemaGenerator.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/EntityStoreSchemaFilterEntry.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/EntityStoreSchemaGenerator.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/EntityStoreSchemaGenerator/EntityStoreSchemaGenerator.DbObjectKey.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/EntityStoreSchemaGenerator/EntityStoreSchemaGenerator.LoadMethodSessionState.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/EntityViewGeneration/EntityViewGenerationConstants.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/EntityViewGeneration/EntityViewGenerator.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/MetadataExtensionMethods.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/MetadataItemCollectionFactory.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/PluralizationService/BidirectionalDictionary.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/PluralizationService/EnglishPluralizationService.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/PluralizationService/EntityDesignPluralizationHandler.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/PluralizationService/PluralizationServiceUtil.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/SSDLGenerator/EntityStoreSchemaGeneratorDatabaseSchemaLoader.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/SSDLGenerator/FunctionDetailsReader.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/SSDLGenerator/RelationshipDetailsCollection.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/SSDLGenerator/RelationshipDetailsRow.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/SSDLGenerator/TableDetailsCollection.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/Entity/Design/SSDLGenerator/TableDetailsRow.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/EdmToObjectNamespaceMap.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/AssociationTypeEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/AttributeEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/ClientApiGenerator.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/CommentEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/ComplexTypeEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/Emitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/EntityContainerEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/EntityTypeEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/FixUp.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/FixUpCollection.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/MetadataItemEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/NamespaceEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/NavigationPropertyEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/PropertyEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/PropertyEmitterBase.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/SchemaTypeEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/StructuredTypeEmitter.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/TypeReference.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/Emitters/Utils.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/EntityClassGenerator.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/LazyTextWriterCreator.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/PropertyGeneratedEventArgs.cs
mcs/class/referencesource/System.Data.Entity.Design/System/Data/EntityModel/TypeGeneratedEventArgs.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/AbstractExpressions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Aggregates.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/BasicCommandTreeVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/BasicExpressionVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbCommandTree.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbDeleteCommandTree.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbExpressionVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbExpressionVisitor_TResultType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbFunctionCommandTree.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbInsertCommandTree.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbLambda.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbModificationClause.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbModificationCommandTree.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbQueryCommandTree.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbSetClause.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DbUpdateCommandTree.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/DefaultExpressionVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/ExpressionBindings.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/ExpressionBuilder/DbExpressionBuilder.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/ExpressionBuilder/EdmFunctions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/ExpressionBuilder/Internal/ArgumentValidation.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/ExpressionBuilder/Internal/EnumerableValidator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/ExpressionBuilder/Row.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/ExpressionBuilder/Spatial/SpatialEdmFunctions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/DbExpressionRules.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/ExpressionCopier.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/ExpressionDumper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/ExpressionKeyGen.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/ExpressionList.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/ExpressionPrinter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/ParameterRetriever.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/PatternMatchRules.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/Validator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/ViewSimplifier.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/Internal/XmlExpressionDumper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/OperatorExpressions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/RelationalExpressions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/CommandTrees/ValueExpressions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/DataRecord.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/DataRecordInfo.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/DbCommandDefinition.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/DbProviderManifest.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/DbProviderServices.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/DbXmlEnabledProviderManifest.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntityRecordInfo.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/AliasedExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/AstNode.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/BuiltInExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/CaseExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/Command.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/ConstructorExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/CreateRefExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/DotExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/FunctionDefinition.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/GroupAggregateExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/GroupPartitionExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/Identifier.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/Literal.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/MethodExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/NamespaceImport.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/NavigationExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/ParenExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/QueryExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/QueryParameter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/QueryStatement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/RefExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/AST/TypeDefinition.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/CqlErrorHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/CqlLexer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/CqlLexerHelpers.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/CqlParser.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/CqlParserHelpers.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/CqlQuery.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/EntitySqlParser.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/FunctionOverloadResolver.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/ParseResult.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/ParserOptions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/SemanticAnalyzer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/SemanticResolver.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/StaticContext.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntitySql/TypeResolver.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/EntityUtil.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/FieldMetadata.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/FieldNameLookup.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/DbTypeMap.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/ColumnMapKeyBuilder.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/CompensatingCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/Coordinator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/CoordinatorFactory.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/CoordinatorScratchpad.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/RecordState.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/RecordStateFactory.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/RecordStateScratchpad.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/Shaper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/ShaperFactory.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/Translator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/Materialization/Util.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Internal/MultipartIdentifier.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/QueryCache/CompiledQueryCacheEntry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/QueryCache/CompiledQueryCacheKey.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/QueryCache/EntityClientCacheKey.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/QueryCache/EntitySqlQueryCacheKey.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/QueryCache/LinqQueryCacheKey.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/QueryCache/QueryCacheEntry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/QueryCache/QueryCacheKey.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/QueryCache/QueryCacheManager.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/QueryCache/ShaperFactoryQueryCacheKey.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/AliasGenerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/BoolExpr.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/Clause.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/ConversionContext.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/Converter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/DomainConstraint.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/IdentifierService.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/KnowledgeBase.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/Literal.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/NegationPusher.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/Sentence.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/Simplifier.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/Solver.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/Vertex.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Boolean/Visitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/ByValueEqualityComparer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/CommandHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/DisposableCollectionWrapper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Helpers.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/InternalBase.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/KeyToListMap.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Memoizer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/MetadataHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/ModifiableIteratorCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Pair.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Set.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/Singleton.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/StringUtil.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/ThreadSafeList.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/TrailingSpaceComparer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Common/Utils/TreePrinter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/DbConnectionOptions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/DbParameterCollectionHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/DbParameterHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityAdapter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityCommand.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityCommandDefinition.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityConnection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityConnectionStringBuilder.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityDataReader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityParameter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityParameterCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityProviderFactory.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityProviderServices.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/EntityTransaction.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityClient/NameValuePair.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityCommandCompilationException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityCommandExecutionException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityKey.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/BooleanFacetDescriptionElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ByteFacetDescriptionElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/CollectionTypeElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/Documentation.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/EntityContainer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/EntityContainerAssociationSet.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/EntityContainerAssociationSetEnd.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/EntityContainerEntitySet.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/EntityContainerEntitySetDefiningQuery.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/EntityContainerRelationshipSet.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/EntityContainerRelationshipSetEnd.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/EntityKeyElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/FacetDescriptionElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/FacetEnabledSchemaElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/FilteredSchemaElementLookUpTable.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/Function.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/FunctionCommandText.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/FunctionImportElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/IntegerFacetDescriptionElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ItemType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/KeyProperty.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ModelFunction.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ModelFunctionTypeElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/NavigationProperty.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/OnOperation.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/Parameter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/PrimitiveSchema.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/Property.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ReferenceSchema.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ReferenceTypeElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ReferentialConstraint.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ReferentialConstraintRoleElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/Relationship.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/RelationshipEnd.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/RelationshipEndCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ReturnType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ReturnValue.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/RowTypeElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/RowTypePropertyElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ScalarType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/Schema.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/SchemaComplexType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/SchemaElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/SchemaElementLookUpTable.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/SchemaElementLookUpTableEnumerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/SchemaEnumMember.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/SchemaEnumType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/SchemaLookupTable.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/SchemaManager.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/SchemaType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/SridFacetDescriptionElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/StructuredProperty.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/StructuredType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/TextElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/TypeElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/TypeRefElement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/TypeUsageBuilder.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/Utils.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/ValidationHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntityModel/SchemaObjectModel/XmlSchemaResource.cs
mcs/class/referencesource/System.Data.Entity/System/Data/EntitySqlException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/InternalMappingException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/InvalidCommandTreeException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/BaseMetadataMappingVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/DefaultObjectMappingItemCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/EntityViewContainer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/EntityViewGenerationAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/FunctionImportMapping.ReturnTypeRenameMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/FunctionImportMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/FunctionImportMappingComposable.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/FunctionImportMappingNonComposable.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Mapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/MappingItemCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/MetadataMappingHasherVisitor.HashSourceBuilder.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/MetadataMappingHasherVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ObjectAssociationEndMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ObjectComplexPropertyMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ObjectMemberMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ObjectNavigationPropertyMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ObjectPropertyMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ObjectTypeMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageAssociationSetMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageAssociationTypeMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageComplexPropertyMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageComplexTypeMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageConditionPropertyMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageEndPropertyMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageEntityContainerMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageEntitySetMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageEntityTypeMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageMappingFragment.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageMappingItemCollection.ViewDictionary.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageMappingItemCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageMappingItemLoader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageModificationFunctionMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StoragePropertyMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageScalarPropertyMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageSetMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/StorageTypeMapping.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/AssociationSetMetadata.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/ChangeNode.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/CompositeKey.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/DynamicUpdateCommand.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/ExtractedStateEntry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/ExtractorMetadata.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/FunctionMappingTranslator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/FunctionUpdateCommand.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/Graph.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/KeyManager.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/Propagator.Evaluator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/Propagator.ExtentPlaceholderCreator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/Propagator.JoinPropagator.JoinPredicateVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/Propagator.JoinPropagator.SubstitutingCloneVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/Propagator.JoinPropagator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/Propagator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/PropagatorResult.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/RecordConverter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/RelationshipConstraintValidator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/SourceInterpreter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/TableChangeProcessor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/UndirectedGraph.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/UpdateCommand.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/UpdateCommandOrderer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/UpdateCompiler.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/UpdateExpressionVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/UpdateTranslator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/Update/Internal/ViewLoader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/BasicViewGenerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CellCreator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CellPartitioner.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CellTreeSimplifier.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/ConfigViewGenerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGeneration/AliasedSlot.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGeneration/BooleanProjectedSlot.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGeneration/CaseCqlBlock.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGeneration/CqlBlock.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGeneration/CqlIdentifiers.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGeneration/CqlWriter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGeneration/ExtentCqlBlock.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGeneration/JoinCqlBlock.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGeneration/SlotInfo.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGeneration/UnionCqlBlock.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/CqlGenerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/DiscriminatorMap.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/GeneratedView.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/QueryRewriting/FragmentQuery.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/QueryRewriting/FragmentQueryKB.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/QueryRewriting/FragmentQueryProcessor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/QueryRewriting/QueryRewriter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/QueryRewriting/RewritingPass.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/QueryRewriting/RewritingProcessor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/QueryRewriting/RewritingSimplifier.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/QueryRewriting/RewritingValidator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/QueryRewriting/RoleBoolean.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/QueryRewriting/Tile.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/BoolExpression.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/BoolExpressionVisitors.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/BoolLiteral.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/CaseStatement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/CaseStatementProjectedSlot.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/Cell.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/CellIdBoolean.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/CellLabel.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/CellQuery.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/CellTreeNode.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/CellTreeNodeVisitors.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/Constant.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/ConstantProjectedSlot.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/Domain.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/ErrorLog.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/LeafCellTreeNode.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/LeftCellWrapper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/MemberDomainMap.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/MemberMaps.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/MemberPath.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/MemberProjectedSlot.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/MemberProjectionIndex.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/MemberRestriction.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/NegatedConstant.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/OpCellTreeNode.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/ProjectedSlot.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/QualifiedCellIdBoolean.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/ScalarConstant.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/ScalarRestriction.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/TypeConstant.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/TypeRestriction.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Structures/WithStatement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Utils/ExceptionHelpers.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Utils/ExternalCalls.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/BasicCellRelation.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/BasicKeyConstraint.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/CellRelation.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/ErrorPatternMatcher.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/ExtentKey.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/ForeignConstraint.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/KeyConstraint.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/SchemaConstraints.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/ViewCellRelation.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/ViewCellSlot.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validation/ViewKeyConstraint.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/Validator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/ViewGenResults.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/ViewGenerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/ViewgenContext.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewGeneration/ViewgenGatekeeper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Mapping/ViewValidator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/MappingException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/AspProxy.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/CacheForPrimitiveTypes.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ClrPerspective.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Converter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/CustomAssemblyResolver.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/DefaultAssemblyResolver.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/AssociationEndMember.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/AssociationSet.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/AssociationSetEnd.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/AssociationType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/CollectionType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/ComplexType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/Documentation.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EdmConstants.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EdmFunction.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EdmMember.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EdmProperty.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EdmType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EntityContainer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EntitySet.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EntitySetBase.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EntitySetBaseCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EntityType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EntityTypeBase.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EnumMember.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/EnumType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/Facet.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/FacetDescription.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/FacetValueContainer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/FacetValues.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/FilteredReadOnlyMetadataCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/FunctionParameter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/GlobalItem.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/ItemCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/LightweightCodeGenerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/MemberCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/MetadataCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/MetadataItem.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/MetadataItem_Static.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/MetadataProperty.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/MetadataPropertyAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/MetadataPropertyCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/MetadataPropertyvalue.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/NavigationProperty.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/NavigationPropertyAccessor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/PrimitiveType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/Provider/ClrProviderManifest.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/Provider/EdmProviderManifest.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/Provider/EdmProviderManifestFunctionBuilder.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/Provider/EdmProviderManifestSpatialFunctions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/ReadOnlyMetadataCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/RefType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/ReferentialConstraint.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/RelationshipEndMember.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/RelationshipSet.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/RelationshipType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/RowType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/SafeLink.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/SafeLinkCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/SimpleType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/StructuralType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/TypeUsage.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Edm/util.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/EdmError.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/EdmItemCollection.OcAssemblyCache.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/EdmItemCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/EdmItemError.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/EdmSchemaError.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/EdmValidator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Helper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/MappingMetadataHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/MetadataArtifactLoader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/MetadataArtifactLoaderComposite.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/MetadataArtifactLoaderCompositeFile.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/MetadataArtifactLoaderCompositeResource.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/MetadataArtifactLoaderFile.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/MetadataArtifactLoaderResource.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/MetadataArtifactLoaderXmlReaderWrapper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/MetadataCache.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/MetadataWorkspace.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ModelPerspective.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectItemCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/AssemblyCache.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/AssemblyCacheEntry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/ImmutableAssemblyCacheEntry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/KnownAssembliesSet.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/KnownAssemblyEntry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/LoadMessageLogger.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/LockedAssemblyCache.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/MetadataAssemblyHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/MutableAssemblyCacheEntry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/ObjectItemAssemblyLoader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/ObjectItemAttributeAssemblyLoader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/ObjectItemCachedAssemblyLoader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/ObjectItemConventionAssemblyLoader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/ObjectItemLoadingSessionData.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/ObjectLayer/ObjectItemNoOpAssemblyLoader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/Perspective.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/StoreItemCollection.Loader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/StoreItemCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/TargetPerspective.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/TypeHelpers.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Metadata/TypeSemantics.cs
mcs/class/referencesource/System.Data.Entity/System/Data/MetadataException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/ObjectNotFoundException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/AdditionalEntityFunctions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/CompiledQuery.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/ComplexObject.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmComplexPropertyAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmComplexTypeAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmEntityTypeAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmEnumTypeAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmFunctionAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmPropertyAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmRelationshipNavigationPropertyAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmRelationshipRoleAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmScalarPropertyAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmSchemaAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EdmTypeAttribute.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EntityCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EntityObject.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EntityReference.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/EntityReference_TResultType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/RelatedEnd.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/RelationshipFixer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/RelationshipManager.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/RelationshipNavigation.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataClasses/StructuralObject.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/DataRecordObjectView.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/BindingContext.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/CompiledELinqQueryState.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/ELinqQueryState.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/ExpressionConverter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/ExpressionVisitorHelpers.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/Funcletizer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/InitializerFacet.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/LinqExpressionNormalizer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/MethodCallTranslator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/ObjectQueryProvider.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/OrderByLifter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/ReflectionUtil.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/SpatialMethodCallTranslator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/SpatialPropertyTranslator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/Translator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ELinq/TypeSystem.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/EntityEntry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/EntityFunctions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/FieldDescriptor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/BaseEntityWrapper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/ComplexTypeMaterializer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/EntityProxyFactory.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/EntityProxyTypeInfo.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/EntitySqlQueryBuilder.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/EntitySqlQueryState.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/EntityWrapper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/EntityWrapperFactory.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/LazyLoadBehavior.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/LightweightEntityWrapper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/NullEntityWrapper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/ObjectFullSpanRewriter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/ObjectQueryExecutionPlan.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/ObjectQueryState.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/ObjectSpanRewriter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Internal/TransactionManager.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectContext.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectMaterializedEventArgs.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectParameter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectParameterCollection.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectQuery.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectQuery_EntitySqlExtensions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectQuery_TResultType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectResult.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectResult_TResultType.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectSet.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectStateEntry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectStateEntryBaseUpdatableDataRecord.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectStateEntryDbDataRecord.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectStateEntryDbUpdatableDataRecord.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectStateEntryOriginalDbUpdatableDataRecord.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectStateManager.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectStateManagerMetadata.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectView.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectViewEntityCollectionData.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectViewFactory.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectViewListener.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ObjectViewQueryResultData.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/ProxyDataContractResolver.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/RelationshipEntry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/RelationshipWrapper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/Span.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/SpanIndex.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/SqlClient/SqlFunctions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Objects/SqlClient/SqlSpatialFunctions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/OptimisticConcurrencyException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/PropertyConstraintException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/ProviderIncompatibleException.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/AncillaryOps.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/ColumnMap.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/ColumnMapCopier.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/ColumnMapFactory.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/ColumnMapVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/Command.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/Dump.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/ExplicitDiscriminatorMap.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/Metadata.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/NodeCounter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/NodeInfo.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/Nodes.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/OpCopier.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/Ops.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/PhysicalOps.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/RelOps.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/RelPropertyHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/Rule.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/RulePatternOps.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/RuleProcessor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/ScalarOps.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/Vars.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/InternalTrees/Visitors.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/AggregatePushdown.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/CTreeGenerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/CodeGen.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/ColumnMapProcessor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/ColumnMapTranslator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/CommandPlan.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/ConstraintManager.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/ITreeGenerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/JoinElimination.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/JoinGraph.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/KeyPullup.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/NestPullup.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/NominalTypeEliminator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/Normalizer.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/PlanCompiler.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/PlanCompilerUtil.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/PreProcessor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/Predicate.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/ProjectionPruner.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/PropertyPushdownHelper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/PropertyRef.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/ProviderCommandInfoUtils.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/StructuredTypeInfo.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/SubqueryTrackingVisitor.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/TransformationRules.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/TypeInfo.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/TypeUtils.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/VarInfo.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/VarRefManager.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/PlanCompiler/VarRemapper.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/ResultAssembly/BridgeDataReader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Query/ResultAssembly/BridgeDataRecord.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Spatial/DbGeography.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Spatial/DbGeographyWellKnownValue.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Spatial/DbGeometry.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Spatial/DbGeometryWellKnownValue.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Spatial/DbSpatialServices.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Spatial/DefaultSpatialServices.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Spatial/ExtensionMethods.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Spatial/Internal/SpatialExceptions.cs
mcs/class/referencesource/System.Data.Entity/System/Data/Spatial/SpatialHelpers.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/IDbSpatialValue.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/DmlSqlGenerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/JoinSymbol.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/OptionalColumn.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/Sql8ConformanceChecker.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/Sql8ExpressionRewriter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/SqlBuilder.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/SqlFunctionCallHandler.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/SqlGenerator.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/SqlSelectClauseBuilder.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/SqlSelectStatement.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/SqlWriter.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/Symbol.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/SymbolPair.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/SymbolTable.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/SymbolUsageManager.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlGen/TopClause.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlProviderManifest.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlProviderServices.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlProviderUtilities.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlSpatialDataReader.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlSpatialServices.Generated.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlSpatialServices.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlTypesAssembly.cs
mcs/class/referencesource/System.Data.Entity/System/Data/SqlClient/SqlVersion.cs
mcs/class/referencesource/System.Data.Entity/System/Data/UpdateException.cs
mcs/class/referencesource/System.Data.Entity/Util/AppSettings.cs
mcs/class/referencesource/System.Data.Linq/ChangeConflicts.cs
mcs/class/referencesource/System.Data.Linq/ChangeDirector.cs
mcs/class/referencesource/System.Data.Linq/ChangeProcessor.cs
mcs/class/referencesource/System.Data.Linq/ChangeTracker.cs
mcs/class/referencesource/System.Data.Linq/CompiledQuery.cs
mcs/class/referencesource/System.Data.Linq/DataContext.cs
mcs/class/referencesource/System.Data.Linq/DataShape.cs
mcs/class/referencesource/System.Data.Linq/DbConvert.cs
mcs/class/referencesource/System.Data.Linq/IdentityManager.cs
mcs/class/referencesource/System.Data.Linq/Mapping/MetaModel.cs
mcs/class/referencesource/System.Data.Linq/Provider/IProvider.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/Common/SqlVisitor.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/Query/Funcletizer.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/Query/QueryConverter.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/Query/SqlBinder.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/Query/SqlComparer.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/Query/SqlDeflator.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/Query/SqlFlattener.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/Query/SqlMethodCallConverter.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/Reader/ObjectReaderCompiler.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/SqlMethods.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/SqlProvider.cs
mcs/class/referencesource/System.Data.Linq/SqlClient/SqlTypeSystemProvider.cs
mcs/class/referencesource/System.Data.Linq/Types.cs
mcs/class/referencesource/System.Data.Linq/misc/SecurityUtils.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/GenerateHelper.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/IteratorDescriptor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/OptimizerPatterns.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/StaticDataManager.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/TailCallAnalyzer.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/XmlILAnnotation.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/XmlILConstructAnalyzer.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/XmlILModule.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/XmlILOptimizerVisitor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/XmlIlTypeHelper.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/IlGen/XmlIlVisitor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/ListBase.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Pair.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilBinary.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilChoice.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilCloneVisitor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilDataSource.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilExpression.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilFactory.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilFunction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilInvoke.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilInvokeEarlyBound.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilInvokeLateBound.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilIterator.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilList.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilLiteral.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilLoop.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilName.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilNode.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilParameter.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilPatternFactory.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilPatternVisitor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilReference.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilReplaceVisitor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilScopedVisitor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilSortKey.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilStrConcat.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilTargetType.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilTernary.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilTypeChecker.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilUnary.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilValidationVisitor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilVisitor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilXmlReader.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/QilXmlWriter.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/SubstitutionList.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QIL/WhitespaceRule.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/QueryReaderSettings.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/ContentIterators.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/DecimalFormatter.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/DocumentOrderComparer.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/DodSequenceMerge.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/EarlyBoundInfo.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/NumberFormatter.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/RtfNavigator.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/SetIterators.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/SiblingIterators.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/StringConcat.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/TreeIterators.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/WhitespaceRuleLookup.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/WhitespaceRuleReader.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlAggregates.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlAttributeCache.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlCollation.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlExtensionFunction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlILIndex.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlILStorageConverter.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlIterators.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlNavigatorFilter.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlNavigatorStack.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlQueryContext.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlQueryOutput.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlQueryRuntime.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlQuerySequence.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlQueryStaticData.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlRawWriterWrapper.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlSequenceWriter.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlSortKey.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XmlSortKeyAccumulator.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XslNumber.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XsltConvert.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XsltFunctions.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Runtime/XsltLibrary.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/SourceLineInfo.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XPath/XPathBuilder.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XPath/XPathCompileException.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XPath/XPathParser.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XPath/XPathQilFactory.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XPath/XPathScanner.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XPathConvert.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XmlILCommand.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XmlIlGenerator.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XmlQualifiedNameTest.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XmlQueryCardinality.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XmlQueryType.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XmlQueryTypeFactory.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XslException.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/Compiler.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/CompilerScopeManager.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/Focus.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/InvokeGenerator.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/KeyMatchBuilder.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/Keywords.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/MatcherBuilder.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/OutputScopeManager.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/QilGenerator.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/QilGeneratorEnv.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/QilStrConcatenator.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/Scripts.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/Stylesheet.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/XPathPatternBuilder.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/XPathPatternParser.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/XslAst.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/XslAstAnalyzer.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/XslVisitor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/XsltInput.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/XsltLoader.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/Xslt/XsltQilFactory.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/Action.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/ActionFrame.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/ApplyImportsAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/ApplyTemplatesAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/AttributeAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/AttributeSetAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/Avt.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/AvtEvent.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/BeginEvent.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/BuilderInfo.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/CallTemplateAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/ChooseAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/CommentAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/CompiledAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/Compiler.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/ContainerAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/CopyAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/CopyAttributesAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/CopyCodeAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/CopyNamespacesAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/CopyNodesetAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/CopyOfAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/DbgCompiler.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/DocumentScope.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/ElementAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/EndEvent.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/Event.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/ForeachAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/HtmlProps.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/IfAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/InputScope.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/InputScopeManager.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/MessageAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/NamespaceDecl.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/NamespaceEvent.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/NavigatorInput.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/NavigatorOutput.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/NewInstructionAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/NumberAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/OutKeywords.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/OutputScope.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/OutputScopeManager.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/PrefixQname.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/ProcessingInstructionAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/Processor.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/ReaderOutput.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/RecordBuilder.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/RootAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/SequentialOutput.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/SortAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/StateMachine.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/StringOutput.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/Stylesheet.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/TemplateAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/TemplateBaseAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/TemplateLookupAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/Templatemanager.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/TextAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/TextEvent.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/TextOnlyOutput.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/TextOutput.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/TheQuery.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/UseAttributesetsAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/ValueOfAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/VariableAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/WithParamAction.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/WriterOutput.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/XsltCompileContext.cs
mcs/class/referencesource/System.Data.SqlXml/System/Xml/Xsl/XsltOld/XsltOutput.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/MemoryRecordBuffer.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/MetadataUtilsSmi.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiConnection.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiContext.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiContextFactory.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiEventSink.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiEventSink_Default.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiEventSink_DeferedProcessing.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiEventStream.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiGettersStream.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiMetaData.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiMetaDataProperty.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiRecordBuffer.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiRequestExecutor.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiSettersStream.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiTypedGetterSetter.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SmiXetterAccessMap.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SqlDataRecord.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SqlRecordBuffer.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/SqlTriggerContext.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/ValueUtilsSmi.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/sqlcontext.cs
mcs/class/referencesource/System.Data/Microsoft/SqlServer/Server/sqlpipe.cs
mcs/class/referencesource/System.Data/System/Data/BaseCollection.cs
mcs/class/referencesource/System.Data/System/Data/CodeGen/StrongTypingException.cs
mcs/class/referencesource/System.Data/System/Data/CodeGen/datacache.cs
mcs/class/referencesource/System.Data/System/Data/ColumnTypeConverter.cs
mcs/class/referencesource/System.Data/System/Data/Common/ActivityCorrelator.cs
mcs/class/referencesource/System.Data/System/Data/Common/AdapterUtil.cs
mcs/class/referencesource/System.Data/System/Data/Common/BigIntegerStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/BooleanStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/ByteStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/CharStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/DBCommand.cs
mcs/class/referencesource/System.Data/System/Data/Common/DBCommandBuilder.cs
mcs/class/referencesource/System.Data/System/Data/Common/DBConnection.cs
mcs/class/referencesource/System.Data/System/Data/Common/DBConnectionString.cs
mcs/class/referencesource/System.Data/System/Data/Common/DBDataPermission.cs
mcs/class/referencesource/System.Data/System/Data/Common/DBDataPermissionAttribute.cs
mcs/class/referencesource/System.Data/System/Data/Common/DBParameter.cs
mcs/class/referencesource/System.Data/System/Data/Common/DBSchemaRow.cs
mcs/class/referencesource/System.Data/System/Data/Common/DBSchemaTable.cs
mcs/class/referencesource/System.Data/System/Data/Common/DataAdapter.cs
mcs/class/referencesource/System.Data/System/Data/Common/DataColumnMapping.cs
mcs/class/referencesource/System.Data/System/Data/Common/DataColumnMappingCollection.cs
mcs/class/referencesource/System.Data/System/Data/Common/DataRecordInternal.cs
mcs/class/referencesource/System.Data/System/Data/Common/DataStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/DataTableMapping.cs
mcs/class/referencesource/System.Data/System/Data/Common/DataTableMappingCollection.cs
mcs/class/referencesource/System.Data/System/Data/Common/DateTimeOffsetStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/DateTimeStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbConnectionOptions.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbConnectionPoolKey.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbConnectionStringBuilder.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbConnectionStringCommon.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbDataAdapter.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbDataReader.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbDataSourceEnumerator.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbException.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbParameterCollection.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbProviderConfigurationHandler.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbProviderFactories.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbProviderFactoriesConfigurationHandler.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbProviderFactory.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbProviderSpecificTypePropertyAttribute.cs
mcs/class/referencesource/System.Data/System/Data/Common/DbTransaction.cs
mcs/class/referencesource/System.Data/System/Data/Common/DecimalStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/DoubleStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/FieldNameLookup.cs
mcs/class/referencesource/System.Data/System/Data/Common/GreenMethods.cs
mcs/class/referencesource/System.Data/System/Data/Common/HandlerBase.cs
mcs/class/referencesource/System.Data/System/Data/Common/Int16Storage.cs
mcs/class/referencesource/System.Data/System/Data/Common/Int32Storage.cs
mcs/class/referencesource/System.Data/System/Data/Common/Int64Storage.cs
mcs/class/referencesource/System.Data/System/Data/Common/MultipartIdentifier.cs
mcs/class/referencesource/System.Data/System/Data/Common/NameValuePair.cs
mcs/class/referencesource/System.Data/System/Data/Common/NameValuePermission.cs
mcs/class/referencesource/System.Data/System/Data/Common/ObjectStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/RowUpdatedEventArgs.cs
mcs/class/referencesource/System.Data/System/Data/Common/RowUpdatingEventArgs.cs
mcs/class/referencesource/System.Data/System/Data/Common/SByteStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLConvert.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLBinaryStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLByteStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLBytesStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLCharsStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLDateTimeStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLDecimalStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLDoubleStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLGuidStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLInt16Storage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLInt32Storage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLInt64Storage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLMoneyStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLSingleStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQLStringStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SQlBooleanStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SqlUDTStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SQLTypes/SqlXmlStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/SafeNativeMethods.cs
mcs/class/referencesource/System.Data/System/Data/Common/SchemaTableColumn.cs
mcs/class/referencesource/System.Data/System/Data/Common/SchemaTableOptionalColumn.cs
mcs/class/referencesource/System.Data/System/Data/Common/SingleStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/StringStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/System.Data_BID.cs
mcs/class/referencesource/System.Data/System/Data/Common/TimeSpanStorage.cs
mcs/class/referencesource/System.Data/System/Data/Common/UInt16Storage.cs
mcs/class/referencesource/System.Data/System/Data/Common/UInt32Storage.cs
mcs/class/referencesource/System.Data/System/Data/Common/UInt64Storage.cs
mcs/class/referencesource/System.Data/System/Data/Common/UnsafeNativeMethods.cs
mcs/class/referencesource/System.Data/System/Data/Common/dbdatarecord.cs
mcs/class/referencesource/System.Data/System/Data/Common/dbenumerator.cs
mcs/class/referencesource/System.Data/System/Data/Constraint.cs
mcs/class/referencesource/System.Data/System/Data/ConstraintCollection.cs
mcs/class/referencesource/System.Data/System/Data/ConstraintConverter.cs
mcs/class/referencesource/System.Data/System/Data/ConstraintEnumerator.cs
mcs/class/referencesource/System.Data/System/Data/DBConcurrencyException.cs
mcs/class/referencesource/System.Data/System/Data/DataColumn.cs
mcs/class/referencesource/System.Data/System/Data/DataColumnChangeEvent.cs
mcs/class/referencesource/System.Data/System/Data/DataColumnCollection.cs
mcs/class/referencesource/System.Data/System/Data/DataColumnPropertyDescriptor.cs
mcs/class/referencesource/System.Data/System/Data/DataError.cs
mcs/class/referencesource/System.Data/System/Data/DataException.cs
mcs/class/referencesource/System.Data/System/Data/DataKey.cs
mcs/class/referencesource/System.Data/System/Data/DataRelation.cs
mcs/class/referencesource/System.Data/System/Data/DataRelationCollection.cs
mcs/class/referencesource/System.Data/System/Data/DataRelationPropertyDescriptor.cs
mcs/class/referencesource/System.Data/System/Data/DataRow.cs
mcs/class/referencesource/System.Data/System/Data/DataRowChangeEvent.cs
mcs/class/referencesource/System.Data/System/Data/DataRowCollection.cs
mcs/class/referencesource/System.Data/System/Data/DataRowView.cs
mcs/class/referencesource/System.Data/System/Data/DataSet.cs
mcs/class/referencesource/System.Data/System/Data/DataSysAttribute.cs
mcs/class/referencesource/System.Data/System/Data/DataTable.cs
mcs/class/referencesource/System.Data/System/Data/DataTableClearEvent.cs
mcs/class/referencesource/System.Data/System/Data/DataTableCollection.cs
mcs/class/referencesource/System.Data/System/Data/DataTableNewRowEvent.cs
mcs/class/referencesource/System.Data/System/Data/DataTablePropertyDescriptor.cs
mcs/class/referencesource/System.Data/System/Data/DataTableReader.cs
mcs/class/referencesource/System.Data/System/Data/DataTableReaderListener.cs
mcs/class/referencesource/System.Data/System/Data/DataTableTypeConverter.cs
mcs/class/referencesource/System.Data/System/Data/DataView.cs
mcs/class/referencesource/System.Data/System/Data/DataViewListener.cs
mcs/class/referencesource/System.Data/System/Data/DataViewManager.cs
mcs/class/referencesource/System.Data/System/Data/DataViewManagerListItemTypeDescriptor.cs
mcs/class/referencesource/System.Data/System/Data/DataViewSetting.cs
mcs/class/referencesource/System.Data/System/Data/DataViewSettingCollection.cs
mcs/class/referencesource/System.Data/System/Data/DefaultValueTypeConverter.cs
mcs/class/referencesource/System.Data/System/Data/FillErrorEventArgs.cs
mcs/class/referencesource/System.Data/System/Data/Filter/AggregateNode.cs
mcs/class/referencesource/System.Data/System/Data/Filter/BinaryNode.cs
mcs/class/referencesource/System.Data/System/Data/Filter/ConstNode.cs
mcs/class/referencesource/System.Data/System/Data/Filter/DataExpression.cs
mcs/class/referencesource/System.Data/System/Data/Filter/ExpressionNode.cs
mcs/class/referencesource/System.Data/System/Data/Filter/ExpressionParser.cs
mcs/class/referencesource/System.Data/System/Data/Filter/FilterException.cs
mcs/class/referencesource/System.Data/System/Data/Filter/FunctionNode.cs
mcs/class/referencesource/System.Data/System/Data/Filter/LookupNode.cs
mcs/class/referencesource/System.Data/System/Data/Filter/NameNode.cs
mcs/class/referencesource/System.Data/System/Data/Filter/Operators.cs
mcs/class/referencesource/System.Data/System/Data/Filter/UnaryNode.cs
mcs/class/referencesource/System.Data/System/Data/Filter/ZeroOpNode.cs
mcs/class/referencesource/System.Data/System/Data/ForeignKeyConstraint.cs
mcs/class/referencesource/System.Data/System/Data/MergeFailedEvent.cs
mcs/class/referencesource/System.Data/System/Data/Merger.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/DbDataRecord.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/Odbc32.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcCommand.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcCommandBuilder.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcConnection.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcConnectionFactory.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcConnectionHandle.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcConnectionOpen.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcConnectionPoolProviderInfo.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcConnectionString.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcConnectionStringbuilder.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcDataAdapter.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcDataReader.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcEnvironment.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcEnvironmentHandle.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcError.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcErrorCollection.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcException.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcFactory.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcHandle.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcInfoMessageEvent.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcParameter.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcParameterCollection.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcPermission.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcReferenceCollection.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcRowUpdatingEvent.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcStatementHandle.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcTransaction.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/OdbcUtils.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/odbcmetadatacollectionnames.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/odbcmetadatacolumnnames.cs
mcs/class/referencesource/System.Data/System/Data/Odbc/odbcmetadatafactory.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/ColumnBinding.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/DBBindings.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/DBPropSet.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OLEDB_Enum.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OLEDB_Util.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbCommand.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbCommandBuilder.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbConnection.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbConnectionFactory.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbConnectionInternal.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbConnectionPoolGroupProviderInfo.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbDataAdapter.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbDataReader.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbEnumerator.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbError.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbErrorCollection.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbException.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbFactory.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbInfoMessageEvent.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbMetaDataFactory.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbParameter.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbParameterCollection.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbPermission.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbPropertySetGuid.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbReferenceCollection.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbRowUpdatedEvent.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbRowUpdatingEvent.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbSchemaGuid.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbStruct.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbTransaction.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OleDbWrapper.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/OledbConnectionStringbuilder.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/PropertyIDSet.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/PropertyInfoSet.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/RowBinding.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/SafeHandles.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/oledbconnectionstring.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/oledbmetadatacollectionnames.cs
mcs/class/referencesource/System.Data/System/Data/OleDb/oledbmetadatacolumnnames.cs
mcs/class/referencesource/System.Data/System/Data/OperationAbortedException.cs
mcs/class/referencesource/System.Data/System/Data/PrimaryKeyTypeConverter.cs
mcs/class/referencesource/System.Data/System/Data/PropertyCollection.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DataReaderContainer.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbBuffer.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbConnectionClosed.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbConnectionFactory.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbConnectionHelper.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbConnectionInternal.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPool.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolCounters.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolGroup.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolGroupProviderInfo.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolIdentity.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolOptions.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbMetaDataCollectionNames.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbMetaDataColumnNames.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbMetaDataFactory.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbParameterCollectionHelper.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbParameterHelper.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/DbReferenceCollection.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/SchemaMapping.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/TimeoutTimer.cs
mcs/class/referencesource/System.Data/System/Data/ProviderBase/WrappedIUnknown.cs
mcs/class/referencesource/System.Data/System/Data/Range.cs
mcs/class/referencesource/System.Data/System/Data/RbTree.cs
mcs/class/referencesource/System.Data/System/Data/RecordManager.cs
mcs/class/referencesource/System.Data/System/Data/RecordsAffectedEventArgs.cs
mcs/class/referencesource/System.Data/System/Data/RelatedView.cs
mcs/class/referencesource/System.Data/System/Data/RelationshipConverter.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLBinary.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLBoolean.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLByte.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLBytes.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLChars.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLDateTime.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLDecimal.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLDouble.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLFileStream.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLGuid.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLInt16.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLInt32.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLInt64.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLMoney.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLResource.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLSingle.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLString.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SQLUtility.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SqlCharStream.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SqlTypesSchemaImporter.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/SqlXml.cs
mcs/class/referencesource/System.Data/System/Data/SQLTypes/UnsafeNativeMethods.cs
mcs/class/referencesource/System.Data/System/Data/Select.cs
mcs/class/referencesource/System.Data/System/Data/Selection.cs
mcs/class/referencesource/System.Data/System/Data/SimpleType.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlDataSourceEnumerator.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlFacetAttribute.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlFunctionAttribute.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlGenericUtil.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlMetaData.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlMethodAttribute.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlNotificationRequest.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlProcedureAttribute.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlTriggerAttribute.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlUserDefinedAggregateAttribute.cs
mcs/class/referencesource/System.Data/System/Data/Sql/SqlUserDefinedTypeAttribute.cs
mcs/class/referencesource/System.Data/System/Data/Sql/invalidudtexception.cs
mcs/class/referencesource/System.Data/System/Data/Sql/sqlnorm.cs
mcs/class/referencesource/System.Data/System/Data/Sql/sqlser.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/RowsCopiedEventArgs.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlBuffer.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlBulkCopy.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlBulkCopyColumnMapping.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlBulkCopyColumnMappingCollection.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlBulkCopyOptions.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlCachedBuffer.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlClientFactory.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlClientMetaDataCollectionNames.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlClientPermission.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlClientWrapperSmiStream.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlClientWrapperSmiStreamChars.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlColumnEncryptionCertificateStoreProvider.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlColumnEncryptionCngProvider.cs [new file with mode: 0644]
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlColumnEncryptionCspProvider.cs [new file with mode: 0644]
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlCommand.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlCommandBuilder.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlCommandSet.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlConnection.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlConnectionFactory.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlConnectionPoolGroupProviderInfo.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlConnectionPoolKey.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlConnectionPoolProviderInfo.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlConnectionString.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlConnectionStringBuilder.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlConnectionTimeoutErrorInternal.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlCredential.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlDataAdapter.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlDataReader.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlDataReaderSmi.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlDelegatedTransaction.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlDependency.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlDependencyListener.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlDependencyUtils.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlEnums.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlError.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlErrorCollection.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlException.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlInfoMessageEvent.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlInternalConnection.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlInternalConnectionSmi.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlInternalConnectionTds.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlNotificationEventArgs.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlParameter.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlParameterCollection.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlReferenceCollection.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlRowUpdatedEvent.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlRowUpdatingEvent.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlSequentialTextReader.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlStatistics.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlStream.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlTransaction.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlUdtInfo.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlUtil.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/TdsEnums.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/TdsParameterSetter.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/TdsParser.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/TdsParserHelperClasses.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/TdsParserSafeHandles.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/TdsParserSessionPool.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/TdsParserStateObject.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/TdsParserStaticMethods.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/TdsRecordBufferSetter.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/TdsValueSetter.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/assemblycache.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/sqlinternaltransaction.cs
mcs/class/referencesource/System.Data/System/Data/SqlClient/sqlmetadatafactory.cs
mcs/class/referencesource/System.Data/System/Data/StateChangeEvent.cs
mcs/class/referencesource/System.Data/System/Data/UniqueConstraint.cs
mcs/class/referencesource/System.Data/System/Data/XDRSchema.cs
mcs/class/referencesource/System.Data/System/Data/XMLDiffLoader.cs
mcs/class/referencesource/System.Data/System/Data/XMLSchema.cs
mcs/class/referencesource/System.Data/System/Data/XmlDataLoader.cs
mcs/class/referencesource/System.Data/System/Data/XmlKeywords.cs
mcs/class/referencesource/System.Data/System/Data/XmlToDatasetMap.cs
mcs/class/referencesource/System.Data/System/Data/xmlsaver.cs
mcs/class/referencesource/System.Data/System/NewXml/BaseTreeIterator.cs
mcs/class/referencesource/System.Data/System/NewXml/DataDocumentXPathNavigator.cs
mcs/class/referencesource/System.Data/System/NewXml/DataPointer.cs
mcs/class/referencesource/System.Data/System/NewXml/DataSetMappper.cs
mcs/class/referencesource/System.Data/System/NewXml/RegionIterator.cs
mcs/class/referencesource/System.Data/System/NewXml/TreeIterator.cs
mcs/class/referencesource/System.Data/System/NewXml/XPathNodePointer.cs
mcs/class/referencesource/System.Data/System/NewXml/XmlBoundElement.cs
mcs/class/referencesource/System.Data/System/NewXml/XmlDataDocument.cs
mcs/class/referencesource/System.Data/System/NewXml/XmlDataImplementation.cs
mcs/class/referencesource/System.Data/bid/inc/cs/bidPrivateBase.cs
mcs/class/referencesource/System.IdentityModel.Selectors/infocard/common/managed/InfoCardCryptoHelper.cs
mcs/class/referencesource/System.IdentityModel/InternalApis/Clr/inc/AppContextDefaultValues.cs
mcs/class/referencesource/System.IdentityModel/System/AppContextDefaultValues.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/AsyncResult.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Claims/Claim.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Claims/X509CertificateClaimSet.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/CryptoApi.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/CryptoHelper.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/HashStream.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/LocalAppContextSwitches.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Protocols/WSTrust/WSTrustSerializationHelper.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/SafeCryptHandles.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/SecurityUtils.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/SignedXml.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/SspiSafeHandles.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Tokens/BinaryKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Tokens/EncryptedKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Tokens/GenericXmlSecurityKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Tokens/LocalIdKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Tokens/RsaKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Tokens/Saml2SecurityTokenHandler.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Tokens/SamlAssertionKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Tokens/SamlSecurityTokenHandler.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Tokens/WrappedSaml2AssertionKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/Tokens/X509IssuerSerialKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/IdentityModel/X509Util.cs
mcs/class/referencesource/System.IdentityModel/System/ServiceModel/Security/BinarySecretKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/ServiceModel/Security/KeyNameIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/ServiceModel/Security/ReferenceList.cs
mcs/class/referencesource/System.IdentityModel/System/ServiceModel/Security/RelAssertionDirectKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/ServiceModel/Security/SamlAssertionDirectKeyIdentifierClause.cs
mcs/class/referencesource/System.IdentityModel/System/ServiceModel/Security/SecurityContextKeyIdentifierClause.cs
mcs/class/referencesource/System.Net/net/PeerToPeer/Collaboration/ContactManager.cs
mcs/class/referencesource/System.Net/net/PeerToPeer/Collaboration/PeerNearMe.cs
mcs/class/referencesource/System.Net/net/PeerToPeer/PeerName.cs
mcs/class/referencesource/System.Net/net/PeerToPeer/PeerNameResolver.cs
mcs/class/referencesource/System.Numerics/System/Numerics/Complex.cs
mcs/class/referencesource/System.Numerics/System/Numerics/Vector2_Intrinsics.cs
mcs/class/referencesource/System.Numerics/System/Numerics/Vector3_Intrinsics.cs
mcs/class/referencesource/System.Numerics/System/Numerics/Vector4_Intrinsics.cs
mcs/class/referencesource/System.Runtime.Caching/System/Caching/MemoryCache.cs
mcs/class/referencesource/System.Runtime.Caching/System/Caching/PerfCounters.cs
mcs/class/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstanceHandle.cs
mcs/class/referencesource/System.Runtime.DurableInstancing/System/Runtime/DurableInstancing/InstancePersistenceContext.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Configuration/SerializationSectionGroup.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/DataContractSet.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonEncodingStreamWrapper.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/JsonWriterDelegator.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/Json/XmlJsonWriter.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Runtime/Serialization/XmlObjectSerializerReadContextComplex.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Xml/EncodingStreamWrapper.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Xml/UniqueID.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Xml/ValueHandle.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Xml/XmlBaseReader.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Xml/XmlConverter.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Xml/XmlDictionaryWriter.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Xml/XmlMtomReader.cs
mcs/class/referencesource/System.Runtime.Serialization/System/Xml/XmlStreamNodeWriter.cs
mcs/class/referencesource/System.ServiceModel.Activation/System/ServiceModel/Activation/HostedHttpContext.cs
mcs/class/referencesource/System.ServiceModel.Activation/System/ServiceModel/Activation/HostedImpersonationContext.cs
mcs/class/referencesource/System.ServiceModel.Activation/System/ServiceModel/ServiceHostingEnvironment.cs
mcs/class/referencesource/System.ServiceModel.Activities/System/ServiceModel/Activities/Dispatcher/BufferedReceiveManager.cs
mcs/class/referencesource/System.ServiceModel.Activities/System/ServiceModel/Activities/Dispatcher/DurableInstanceManager.cs
mcs/class/referencesource/System.ServiceModel.Activities/System/ServiceModel/Activities/Dispatcher/PersistenceContext.cs
mcs/class/referencesource/System.ServiceModel.Activities/System/ServiceModel/Activities/Dispatcher/PersistenceProviderDirectory.cs
mcs/class/referencesource/System.ServiceModel.Activities/System/ServiceModel/Activities/Dispatcher/WorkflowServiceInstance.cs
mcs/class/referencesource/System.ServiceModel.Activities/System/ServiceModel/Activities/InternalSendMessage.cs
mcs/class/referencesource/System.ServiceModel.Activities/System/ServiceModel/Activities/WorkflowOperationContext.cs
mcs/class/referencesource/System.ServiceModel.Channels/System/ServiceModel/Channels/UdpChannelBase.cs
mcs/class/referencesource/System.ServiceModel.Channels/System/ServiceModel/Channels/UdpOutputChannel.cs
mcs/class/referencesource/System.ServiceModel.Channels/System/ServiceModel/Channels/UdpSocket.cs
mcs/class/referencesource/System.ServiceModel.Discovery/System/ServiceModel/Discovery/AnnouncementService.cs
mcs/class/referencesource/System.ServiceModel.Discovery/System/ServiceModel/Discovery/DiscoveryProxy.cs
mcs/class/referencesource/System.ServiceModel.Discovery/System/ServiceModel/Discovery/DiscoveryService.cs
mcs/class/referencesource/System.ServiceModel.Internals/System/Runtime/AsyncResult.cs
mcs/class/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/DiagnosticTraceBase.cs
mcs/class/referencesource/System.ServiceModel.Internals/System/Runtime/Diagnostics/EtwDiagnosticTrace.cs
mcs/class/referencesource/System.ServiceModel.Internals/System/Runtime/IOThreadScheduler.cs
mcs/class/referencesource/System.ServiceModel.Internals/System/Runtime/MruCache.cs
mcs/class/referencesource/System.ServiceModel.Internals/System/Runtime/ThreadNeutralSemaphore.cs
mcs/class/referencesource/System.ServiceModel.Internals/System/Runtime/TraceLevelHelper.cs
mcs/class/referencesource/System.ServiceModel.Routing/System/ServiceModel/Routing/ProcessRequestAsyncResult.cs
mcs/class/referencesource/System.ServiceModel.Routing/System/ServiceModel/Routing/RoutingService.cs
mcs/class/referencesource/System.ServiceModel.Web/System/ServiceModel/Description/WebHttpBehavior.cs
mcs/class/referencesource/System.ServiceModel.Web/System/ServiceModel/Description/WebScriptEnablingBehavior.cs
mcs/class/referencesource/System.ServiceModel.Web/System/ServiceModel/Dispatcher/HelpHtmlBuilder.cs
mcs/class/referencesource/System.ServiceModel.Web/System/ServiceModel/Dispatcher/HttpUnhandledOperationInvoker.cs
mcs/class/referencesource/System.ServiceModel.Web/System/ServiceModel/Dispatcher/WebHttpDispatchOperationSelector.cs
mcs/class/referencesource/System.ServiceModel.Web/System/ServiceModel/Web/HttpDateParse.cs
mcs/class/referencesource/System.ServiceModel.Web/System/ServiceModel/Web/WebOperationContext.cs
mcs/class/referencesource/System.ServiceModel.Web/System/ServiceModel/WebHttpBinding.cs
mcs/class/referencesource/System.ServiceModel/InternalApis/Clr/inc/AppContextDefaultValues.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Activation/Configuration/ServiceModelActivationSectionGroup.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Activation/ListenerUnsafeNativeMethods.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Activation/Utility.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Administration/ProviderBase.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Administration/WbemProvider.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/AddressHeader.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/AddressHeaderCollection.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/BinaryMessageEncoder.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/BufferedOutputAsyncStream.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/ChannelDemuxer.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/CompositeDuplexBindingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/Connection.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/ConnectionDemuxer.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/ConnectionModeReader.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/ConnectionPool.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/ContentOnlyMessage.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/FramingChannels.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/FramingDecoders.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/HttpChannelFactory.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/HttpChannelHelpers.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/HttpPipeline.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/HttpRequestContext.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/HttpTransportBindingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/HttpsChannelFactory.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/IdlingCommunicationPool.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/InitialServerConnectionReader.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/InputChannel.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/InternalDuplexBindingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/InternalDuplexChannelListener.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/Message.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/MessageBuffer.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/MessageEncodingBindingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/MessageEncodingBindingElementImporter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/MessageFault.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/MessageHeaders.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/MsmqDecodeHelper.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/OneWayChannelFactory.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/OneWayChannelListener.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/OverlappedContext.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/PeerCustomResolverBindingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/PeerFlooder.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/PeerNeighborManager.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/PipeConnection.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/ReplyChannel.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/RequestChannel.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/RequestContextBase.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/SecurityBindingElementImporter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/ServiceChannelProxy.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/SessionConnectionReader.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/SingletonConnectionReader.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/SocketConnection.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/SslStreamSecurityBindingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/SslStreamSecurityUpgradeProvider.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/StandardBindingImporter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/StreamSecurityUpgradeAcceptorAsyncResult.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/StreamSecurityUpgradeInitiatorAsyncResult.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/StreamedFramingRequestChannel.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/SynchronizedMessageSource.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/TransportBindingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/TransportBindingElementImporter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/TransportDefaults.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/TransportDuplexSessionChannel.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/TransportManager.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/TransportSecurityHelpers.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/UnsafeNativeMethods.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/UriPrefixTable.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/WebSocketTransportDuplexSessionChannel.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/WindowsStreamSecurityBindingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Channels/WindowsStreamSecurityUpgradeProvider.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/ClientBase.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/ComIntegration/SafeNativeMethods.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/BinaryMessageEncodingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/CallbackDebugElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/CallbackTimeoutsElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ClientCredentialsElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ClientViaElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/CommonEndpointBehaviorElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/CommonServiceBehaviorElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/CompositeDuplexElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ConfigurationHelpers.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ConnectionOrientedTransportElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/DataContractSerializerElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/EndpointBehaviorElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ExtensionElementCollection.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/HttpTransportElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/HttpsTransportElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/IdentityElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/IssuedTokenClientElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/IssuedTokenServiceElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/MtomMessageEncodingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/NamedPipeTransportElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/OneWayElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/PeerTransportElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/PrivacyNoticeElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ReliableMessagingVersionConverter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ReliableSessionElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/RemoveBehaviorElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/SecurityElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/SecurityElementBase.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceAuthorizationElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceBehaviorElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceCredentialsElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceDebugElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceMetadataPublishingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceModelConfigurationElementCollection.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceModelExtensionCollectionElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceModelSectionGroup.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceSecurityAuditElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceThrottlingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/ServiceTimeoutsElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/SslStreamSecurityElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/StandardBindingCollectionElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/StandardEndpointCollectionElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/TcpTransportElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/TextMessageEncodingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/TransactedBatchingElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/TransactionFlowElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/TransactionProtocolConverter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/TransportElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Configuration/WindowsStreamSecurityElement.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/ClientClassGenerator.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/ConfigWriter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/ImportedPolicyConversionContext.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/MessageContractExporter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/MetadataSection.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/PolicyReader.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/ServiceEndpoint.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/SoapHelper.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/TaskOperationDescriptionValidator.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/TypeLoader.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/WsdlExporter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Description/WsdlImporter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Diagnostics/MessageLogger.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Diagnostics/PerformanceCountersBase.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Diagnostics/TraceUtility.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/ActionMessageFilterTable.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/ChannelHandler.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/DuplexChannelBinder.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/EndpointAddressMessageFilter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/EndpointAddressMessageFilterTable.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/ErrorHandlingAcceptor.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/ImmutableDispatchRuntime.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/InputChannelBinder.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/MessageFilterTable.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/OperationInvokerBehavior.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/OutputChannelBinder.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/PrefixEndpointAddressMessageFilter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/PrefixEndpointAddressMessageFilterTable.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/PrimitiveOperationFormatter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/QueryFunctions.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/QueryMatcher.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/QueryNode.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/QueryProcessor.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/QuerySelectOp.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/QuerySubExprEliminator.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/QueryUtil.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/ReplyChannelBinder.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/SecurityImpersonationBehavior.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/SecurityValidationBehavior.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/SeekableMessageNavigator.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/ServiceThrottle.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/StreamFormatter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Dispatcher/XPathMessageContext.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/DnsEndpointIdentity.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/EndpointAddress.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/EndpointIdentity.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/FaultReason.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/LocalAppContextSwitches.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/RsaEndpointIdentity.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/CryptoHelper.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/FederatedSecurityTokenManager.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/RequestSecurityToken.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/RequestSecurityTokenResponse.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/SctClaimSerializer.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/SecureConversationDriver.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/SecuritySessionClientSettings.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/SecuritySessionSecurityTokenProvider.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/SecurityUtils.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/SecurityVerifiedMessage.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/TlsSspiNegotiation.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/TrustDriver.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/WSSecurityOneDotZeroReceiveSecurityHeader.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/WSSecurityPolicy.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/WSSecurityTokenSerializer.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/WSTrust.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/WSTrustFeb2005.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Security/WSTrustServiceContract.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/SpnEndpointIdentity.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Syndication/Rss20FeedFormatter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/Transactions/WsatTransactionFormatter.cs
mcs/class/referencesource/System.ServiceModel/System/ServiceModel/UpnEndpointIdentity.cs
mcs/class/referencesource/System.Web.DynamicData/DynamicData/DynamicDataExtensions.cs
mcs/class/referencesource/System.Web.DynamicData/DynamicData/DynamicDataManager.cs
mcs/class/referencesource/System.Web.DynamicData/DynamicData/FieldTemplateUserControl.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityConnectionStringBuilderItem.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceConfigureObjectContext.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceConfigureObjectContextPanel.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceConfigureObjectContextPanel.designer.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceContainerNameConverter.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceContainerNameItem.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceDataSelection.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceDataSelectionPanel.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceDataSelectionPanel.designer.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceDesigner.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceDesignerHelper.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceEntitySetNameConverter.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceEntitySetNameItem.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceEntityTypeFilterConverter.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceEntityTypeFilterItem.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceState.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceStatementEditor.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceStatementEditorForm.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDataSourceWizardForm.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/EntityDesignerDataSourceView.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/Util/DesignerForm.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/Util/RTLAwareMessageBox.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/Util/ResourceDescriptionAttribute.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/Util/TaskFormBase.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/Util/UIHelper.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/Util/WizardForm.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/Util/WizardPanel.cs
mcs/class/referencesource/System.Web.Entity.Design/System/Data/WebControls/Design/Util/WizardPanelChangingEventArgs.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSource.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceChangedEventArgs.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceChangingEventArgs.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceColumn.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceContextCreatedEventArgs.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceContextCreatingEventArgs.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceContextDisposingEventArgs.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceMemberPath.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceQueryBuilder.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceReferenceGroup.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceSelectedEventArgs.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceSelectingEventArgs.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceUtil.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceValidationException.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceView.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceViewSchema.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceWrapper.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceWrapperCollection.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/EntityDataSourceWrapperPropertyDescriptor.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/ResourceDescriptionAttribute.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/ResourceDisplayNameAttribute.cs
mcs/class/referencesource/System.Web.Entity/System/Data/WebControls/WebControlParameterProxy.cs
mcs/class/referencesource/System.Web.Extensions/Compilation/WCFModel/VSWCFServiceContractGenerator.cs
mcs/class/referencesource/System.Web.Extensions/Handlers/ScriptResourceHandler.cs
mcs/class/referencesource/System.Web.Extensions/Script/Services/PageClientProxyGenerator.cs
mcs/class/referencesource/System.Web.Extensions/Script/Services/RestHandler.cs
mcs/class/referencesource/System.Web.Extensions/ui/AssemblyCache.cs
mcs/class/referencesource/System.Web.Extensions/ui/ProfileServiceManager.cs
mcs/class/referencesource/System.Web.Extensions/ui/RoleServiceManager.cs
mcs/class/referencesource/System.Web.Extensions/ui/ScriptManager.cs
mcs/class/referencesource/System.Web.Mobile/Mobile/UrlPath.cs
mcs/class/referencesource/System.Web.Mobile/UI/MobileControls/Adapters/XhtmlAdapters/XhtmlBasicObjectListAdapter.cs
mcs/class/referencesource/System.Web.Mobile/UI/MobileControls/Design/AppliedDeviceFiltersDialog.cs
mcs/class/referencesource/System.Web.Mobile/UI/MobileControls/Design/ListComponentEditorPage.cs
mcs/class/referencesource/System.Web.Mobile/UI/MobileControls/Design/StylesEditorDialog.cs
mcs/class/referencesource/System.Web.Mobile/UI/MobileControls/Design/Util/GenericUI.cs
mcs/class/referencesource/System.Web.Mobile/UI/MobileControls/Design/Util/MSHTMLHost.cs
mcs/class/referencesource/System.Web.Mobile/UI/MobileControls/MobilePage.cs
mcs/class/referencesource/System.Web.Mobile/UI/MobileControls/ObjectList.cs
mcs/class/referencesource/System.Web.Mobile/UI/MobileControls/SessionViewState.cs
mcs/class/referencesource/System.Web.Services/System/Web/Services/Description/SoapProtocolImporter.cs
mcs/class/referencesource/System.Web.Services/System/Web/Services/Discovery/DiscoveryDocument.cs
mcs/class/referencesource/System.Web.Services/System/Web/Services/Discovery/DiscoveryDocumentReference.cs
mcs/class/referencesource/System.Web.Services/System/Web/Services/Discovery/DynamicVirtualDiscoSearcher.cs
mcs/class/referencesource/System.Web.Services/System/Web/Services/Protocols/ClientProtocol.cs
mcs/class/referencesource/System.Web.Services/System/Web/Services/Protocols/LogicalMethodInfo.cs
mcs/class/referencesource/System.Web.Services/System/Web/Services/Protocols/Scalars.cs
mcs/class/referencesource/System.Web.Services/System/Web/Services/Protocols/SoapException.cs
mcs/class/referencesource/System.Web/AspNetEventSource.cs
mcs/class/referencesource/System.Web/AspNetSynchronizationContext.cs
mcs/class/referencesource/System.Web/Cache/SqlCacheDependency.cs
mcs/class/referencesource/System.Web/Compilation/BaseResourcesBuildProvider.cs
mcs/class/referencesource/System.Web/Compilation/BaseTemplateCodeDomTreeGenerator.cs
mcs/class/referencesource/System.Web/Compilation/BrowserCapabilitiesCompiler.cs
mcs/class/referencesource/System.Web/Compilation/BuildManager.cs
mcs/class/referencesource/System.Web/Compilation/BuildProvidersCompiler.cs
mcs/class/referencesource/System.Web/Compilation/BuildResult.cs
mcs/class/referencesource/System.Web/Compilation/BuildResultCache.cs
mcs/class/referencesource/System.Web/Compilation/CompilationLock.cs
mcs/class/referencesource/System.Web/Compilation/CompilationUtil.cs
mcs/class/referencesource/System.Web/Compilation/MultiTargetingUtil.cs
mcs/class/referencesource/System.Web/Compilation/PreservationFileReader.cs
mcs/class/referencesource/System.Web/Compilation/XsdBuildProvider.cs
mcs/class/referencesource/System.Web/Configuration/BrowserCapabilitiesCodeGenerator.cs
mcs/class/referencesource/System.Web/Configuration/HttpCapabilitiesBase.cs
mcs/class/referencesource/System.Web/Configuration/MembershipSection.cs
mcs/class/referencesource/System.Web/Configuration/MetabaseServerConfig.cs
mcs/class/referencesource/System.Web/Configuration/ProcessHostMapPath.cs
mcs/class/referencesource/System.Web/Configuration/RegexWorker.cs
mcs/class/referencesource/System.Web/Configuration/SessionStateSection.cs
mcs/class/referencesource/System.Web/Configuration/WebConfigurationHost.cs
mcs/class/referencesource/System.Web/FileChangesMonitor.cs
mcs/class/referencesource/System.Web/Hosting/ApplicationManager.cs
mcs/class/referencesource/System.Web/Hosting/HostingEnvironment.cs
mcs/class/referencesource/System.Web/Hosting/IIS7WorkerRequest.cs
mcs/class/referencesource/System.Web/Hosting/IISUnsafeMethods.cs
mcs/class/referencesource/System.Web/Hosting/ISAPIWorkerRequest.cs
mcs/class/referencesource/System.Web/HttpApplication.cs
mcs/class/referencesource/System.Web/HttpBufferlessInputStream.cs
mcs/class/referencesource/System.Web/HttpCachePolicy.cs
mcs/class/referencesource/System.Web/HttpContext.cs
mcs/class/referencesource/System.Web/HttpCookieCollection.cs
mcs/class/referencesource/System.Web/HttpRequest.cs
mcs/class/referencesource/System.Web/HttpResponse.cs
mcs/class/referencesource/System.Web/HttpRuntime.cs
mcs/class/referencesource/System.Web/HttpWriter.cs
mcs/class/referencesource/System.Web/InternalApis/NDP_Common/inc/StrongNameHelpers.cs
mcs/class/referencesource/System.Web/LegacyAspNetSynchronizationContext.cs
mcs/class/referencesource/System.Web/Management/WebEvents.cs
mcs/class/referencesource/System.Web/ModelBinding/ControlValueProvider.cs
mcs/class/referencesource/System.Web/ModelBinding/RangeAttributeAdapter.cs
mcs/class/referencesource/System.Web/PipelineModuleStepContainer.cs
mcs/class/referencesource/System.Web/RootedObjects.cs
mcs/class/referencesource/System.Web/Routing/Route.cs
mcs/class/referencesource/System.Web/Routing/RouteCollection.cs
mcs/class/referencesource/System.Web/Security/ADMembershipProvider.cs
mcs/class/referencesource/System.Web/Security/Cryptography/CryptoAlgorithms.cs
mcs/class/referencesource/System.Web/Security/MembershipPasswordAttribute.cs
mcs/class/referencesource/System.Web/Security/RoleClaimProvider.cs
mcs/class/referencesource/System.Web/Security/SQLMembershipProvider.cs
mcs/class/referencesource/System.Web/State/StateRuntime.cs
mcs/class/referencesource/System.Web/State/StateWorkerRequest.cs
mcs/class/referencesource/System.Web/StaticFileHandler.cs
mcs/class/referencesource/System.Web/ThreadContext.cs
mcs/class/referencesource/System.Web/UI/BaseParser.cs
mcs/class/referencesource/System.Web/UI/Control.cs
mcs/class/referencesource/System.Web/UI/ControlBuilder.cs
mcs/class/referencesource/System.Web/UI/HTMLTextWriter.cs
mcs/class/referencesource/System.Web/UI/HtmlForm.cs
mcs/class/referencesource/System.Web/UI/ObjectStateFormatter.cs
mcs/class/referencesource/System.Web/UI/Page.cs
mcs/class/referencesource/System.Web/UI/PartialCachingControl.cs
mcs/class/referencesource/System.Web/UI/TargetFrameworkUtil.cs
mcs/class/referencesource/System.Web/UI/TemplateParser.cs
mcs/class/referencesource/System.Web/UI/TraceContext.cs
mcs/class/referencesource/System.Web/UI/WebControls/Adapters/MenuAdapter.cs
mcs/class/referencesource/System.Web/UI/WebControls/ChangePassword.cs
mcs/class/referencesource/System.Web/UI/WebControls/DataBoundControl.cs
mcs/class/referencesource/System.Web/UI/WebControls/DetailsView.cs
mcs/class/referencesource/System.Web/UI/WebControls/LoginView.cs
mcs/class/referencesource/System.Web/UI/WebControls/MenuItem.cs
mcs/class/referencesource/System.Web/UI/WebControls/ModelDataSourceView.cs
mcs/class/referencesource/System.Web/UI/WebControls/Panel.cs
mcs/class/referencesource/System.Web/UI/WebControls/PasswordRecovery.cs
mcs/class/referencesource/System.Web/UI/WebControls/RegularExpressionValidator.cs
mcs/class/referencesource/System.Web/UI/WebControls/Repeater.cs
mcs/class/referencesource/System.Web/UI/WebControls/TextBox.cs
mcs/class/referencesource/System.Web/UI/WebControls/TreeNode.cs
mcs/class/referencesource/System.Web/UI/WebControls/Wizard.cs
mcs/class/referencesource/System.Web/UI/WebControls/basecomparevalidator.cs
mcs/class/referencesource/System.Web/UI/WebParts/CatalogZoneBase.cs
mcs/class/referencesource/System.Web/UI/WebParts/EditorPart.cs
mcs/class/referencesource/System.Web/UI/WebParts/EditorZoneBase.cs
mcs/class/referencesource/System.Web/UI/WebParts/ProxyWebPartConnectionCollection.cs
mcs/class/referencesource/System.Web/UI/WebParts/WebPartManager.cs
mcs/class/referencesource/System.Web/UI/WebParts/WebPartZoneBase.cs
mcs/class/referencesource/System.Web/UnsafeNativeMethods.cs
mcs/class/referencesource/System.Web/Util/AppVerifier.cs
mcs/class/referencesource/System.Web/Util/BinaryCompatibility.cs
mcs/class/referencesource/System.Web/Util/FastPropertyAccessor.cs
mcs/class/referencesource/System.Web/Util/HttpEncoder.cs
mcs/class/referencesource/System.Web/Util/ParseHttpDate.cs
mcs/class/referencesource/System.Web/Util/RegexUtil.cs [new file with mode: 0644]
mcs/class/referencesource/System.Web/Util/SecUtil.cs
mcs/class/referencesource/System.Web/Util/UriUtil.cs
mcs/class/referencesource/System.Web/Util/VersionUtil.cs
mcs/class/referencesource/System.Web/WebSockets/AspNetWebSocket.cs
mcs/class/referencesource/System.Web/httpserverutility.cs
mcs/class/referencesource/System.Web/misc/SecurityUtils.cs
mcs/class/referencesource/System.Workflow.Activities/Common/BasePropertyDescriptor.cs
mcs/class/referencesource/System.Workflow.Activities/Common/CompModHelpers.cs
mcs/class/referencesource/System.Workflow.Activities/Common/CompilerHelpers.cs
mcs/class/referencesource/System.Workflow.Activities/Common/DelegateTypeInfo.cs
mcs/class/referencesource/System.Workflow.Activities/Common/NativeMethods.cs
mcs/class/referencesource/System.Workflow.Activities/Common/TypeSystemHelpers.cs
mcs/class/referencesource/System.Workflow.Activities/Common/ValidationHelpers.cs
mcs/class/referencesource/System.Workflow.Activities/Common/Walker.cs
mcs/class/referencesource/System.Workflow.Activities/Common/userdatakeys.cs
mcs/class/referencesource/System.Workflow.Activities/CorrelationValidator.cs
mcs/class/referencesource/System.Workflow.Activities/Delay.cs
mcs/class/referencesource/System.Workflow.Activities/LocalService/CorrelationService.cs
mcs/class/referencesource/System.Workflow.Activities/LocalService/FollowerQueueCreator.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Activity.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/ActivityExecutor.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Compiler/TypeSystem/DesignTimeType.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Compiler/TypeSystem/TypeProvider.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Compiler/XomlCompiler.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Compiler/XomlCompilerHelpers.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/DependencyProperty.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Design/CommandSet.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Design/CompositeActivityDesigner.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Design/CustomActivityDesigner.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Design/Dialogs/ThemeConfigurationDialog.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Design/Dialogs/TypeBrowserDialog.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Design/Dialogs/WorkflowPageSetupDialog.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Design/MenuCommands.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Design/ReferenceService.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Design/StructuredCompositeActivityDesigner.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/Design/WorkflowView.cs
mcs/class/referencesource/System.Workflow.ComponentModel/AuthoringOM/ScheduleChanges.cs
mcs/class/referencesource/System.Workflow.ComponentModel/Shared/BasePropertyDescriptor.cs
mcs/class/referencesource/System.Workflow.ComponentModel/Shared/CompModHelpers.cs
mcs/class/referencesource/System.Workflow.ComponentModel/Shared/CompilerHelpers.cs
mcs/class/referencesource/System.Workflow.ComponentModel/Shared/DelegateTypeInfo.cs
mcs/class/referencesource/System.Workflow.ComponentModel/Shared/NativeMethods.cs
mcs/class/referencesource/System.Workflow.ComponentModel/Shared/TypeSystemHelpers.cs
mcs/class/referencesource/System.Workflow.ComponentModel/Shared/ValidationHelpers.cs
mcs/class/referencesource/System.Workflow.ComponentModel/Shared/Walker.cs
mcs/class/referencesource/System.Workflow.ComponentModel/Shared/XomlSerializationHelpers.cs
mcs/class/referencesource/System.Workflow.ComponentModel/Shared/userdatakeys.cs
mcs/class/referencesource/System.Workflow.Runtime/DebugEngine/DebugController.cs
mcs/class/referencesource/System.Workflow.Runtime/DebugEngine/DebugControllerThread.cs
mcs/class/referencesource/System.Workflow.Runtime/ExecutorLocksHeldException.cs
mcs/class/referencesource/System.Workflow.Runtime/Hosting/SqlWorkflowPersistenceService.cs
mcs/class/referencesource/System.Workflow.Runtime/Hosting/WorkflowWebHostingModule.cs
mcs/class/referencesource/System.Workflow.Runtime/Scheduler.cs
mcs/class/referencesource/System.Workflow.Runtime/System/Activities/Statements/Interop.cs
mcs/class/referencesource/System.Workflow.Runtime/WorkflowEventArgs.cs
mcs/class/referencesource/System.Workflow.Runtime/WorkflowExecutor.cs
mcs/class/referencesource/System.WorkflowServices/System/ServiceModel/QueueNameHelper.cs
mcs/class/referencesource/System.WorkflowServices/System/ServiceModel/WorkflowServiceHost.cs
mcs/class/referencesource/System.WorkflowServices/System/Workflow/Activities/Design/OperationPickerDialog.cs
mcs/class/referencesource/System.WorkflowServices/System/Workflow/Runtime/Hosting/SynchronizationContextWorkflowSchedulerService.cs
mcs/class/referencesource/System.Xml/InternalApis/Clr/inc/AppContextDefaultValues.cs
mcs/class/referencesource/System.Xml/InternalApis/NDP_Common/inc/Win8Helpers.cs
mcs/class/referencesource/System.Xml/System/Xml/Base64Decoder.cs
mcs/class/referencesource/System.Xml/System/Xml/Base64Encoder.cs
mcs/class/referencesource/System.Xml/System/Xml/BinHexDecoder.cs
mcs/class/referencesource/System.Xml/System/Xml/BinHexEncoder.cs
mcs/class/referencesource/System.Xml/System/Xml/BinaryXml/SqlUtils.cs
mcs/class/referencesource/System.Xml/System/Xml/BinaryXml/XmlBinaryReader.cs
mcs/class/referencesource/System.Xml/System/Xml/BinaryXml/XmlBinaryReaderAsync.cs
mcs/class/referencesource/System.Xml/System/Xml/BitStack.cs
mcs/class/referencesource/System.Xml/System/Xml/Bits.cs
mcs/class/referencesource/System.Xml/System/Xml/ByteStack.cs
mcs/class/referencesource/System.Xml/System/Xml/Cache/XPathDocumentBuilder.cs
mcs/class/referencesource/System.Xml/System/Xml/Cache/XPathDocumentIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/Cache/XPathDocumentNavigator.cs
mcs/class/referencesource/System.Xml/System/Xml/Cache/XPathNode.cs
mcs/class/referencesource/System.Xml/System/Xml/Cache/XPathNodeHelper.cs
mcs/class/referencesource/System.Xml/System/Xml/Cache/XPathNodeInfoAtom.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/CharEntityEncoderFallback.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/HtmlEncodedRawTextWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/HtmlTernaryTree.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/HtmlUtf8RawTextWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/IncrementalReadDecoders.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/QueryOutputWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/QueryOutputWriterV1.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/ReadContentAsBinaryHelper.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/ReadOnlyTernaryTree.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/SecureStringHasher.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/TextEncodedRawTextWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/TextUtf8RawTextWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/ValidatingReaderNodeData.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlAsyncCheckReader.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlAsyncCheckWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlAutoDetectWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlCharCheckingReader.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlCharCheckingWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlEncodedRawTextWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlEncodedRawTextWriterAsync.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlEventCache.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlParserContext.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlRawWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlReader.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlReaderSettings.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlSubtreeReader.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlTextEncoder.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlTextReader.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlTextReaderImpl.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlTextReaderImplHelpers.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlTextWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlUtf8RawTextWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlUtf8RawTextWriterAsync.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlValidatingReader.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlValidatingReaderImpl.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlWellFormedWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlWellFormedWriterAsync.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlWellFormedWriterHelpers.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlWrappingReader.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlWrappingWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlWriterAsync.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XmlWriterSettings.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XsdCachingReader.cs
mcs/class/referencesource/System.Xml/System/Xml/Core/XsdValidatingReader.cs
mcs/class/referencesource/System.Xml/System/Xml/DiagnosticsSwitches.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/DocumentSchemaValidator.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/DocumentXPathNavigator.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/DocumentXmlWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/DomNameTable.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XPathNodeList.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlAttributeCollection.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlCDataSection.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlCharacterData.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlChildEnumerator.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlChildNodes.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlComment.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlDeclaration.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlDocument.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlDocumentFragment.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlDocumentType.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlDomTextWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlElement.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlElementList.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlEntity.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlEntityReference.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlImplementation.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlLinkedNode.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlLoader.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlName.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlNamedNodemap.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlNode.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlNodeChangedEventArgs.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlNodeList.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlNodeReader.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlNotation.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlProcessingInstruction.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlSignificantWhiteSpace.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlText.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlUnspecifiedAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Dom/XmlWhitespace.cs
mcs/class/referencesource/System.Xml/System/Xml/EmptyEnumerator.cs
mcs/class/referencesource/System.Xml/System/Xml/HWStack.cs
mcs/class/referencesource/System.Xml/System/Xml/IXmlLineInfo.cs
mcs/class/referencesource/System.Xml/System/Xml/LineInfo.cs
mcs/class/referencesource/System.Xml/System/Xml/NameTable.cs
mcs/class/referencesource/System.Xml/System/Xml/Ref.cs
mcs/class/referencesource/System.Xml/System/Xml/Resolvers/XmlPreloadedResolver.cs
mcs/class/referencesource/System.Xml/System/Xml/Resolvers/XmlPreloadedResolverAsync.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/Asttree.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/AutoValidator.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/BaseProcessor.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/BaseValidator.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/BitSet.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/Chameleonkey.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/CompiledidEntityConstraint.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/ConstraintStruct.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/ContentValidator.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/DataTypeImplementation.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/DtdParser.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/DtdValidator.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/FacetChecker.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/Inference/Infer.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/Inference/XmlSchemaInferenceException.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/NamespaceList.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/Parser.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/Preprocessor.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaAttDef.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaCollectionCompiler.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaCollectionpreProcessor.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaDeclBase.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaElementDecl.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaEntity.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaInfo.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaNames.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaNamespacemanager.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaNotation.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/SchemaSetCompiler.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/ValidationEventArgs.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/ValidationState.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XdrBuilder.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XdrValidator.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlAtomicValue.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchema.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaAll.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaAnnotated.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaAnnotation.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaAny.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaAnyAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaAppInfo.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaAttributeGroup.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaAttributeGroupref.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaChoice.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaCollection.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaCompilationSettings.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaComplexContent.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaComplexContentExtension.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaComplexContentRestriction.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaComplexType.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaDataType.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaDocumentation.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaElement.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaException.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaExternal.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaFacet.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaGroup.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaGroupRef.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaIdEntityConstraint.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaImport.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaInclude.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaInfo.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaNotation.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaObject.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaObjectCollection.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaObjectTable.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaParticle.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaRedefine.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaSequence.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaSet.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaSimpleContent.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaSimpleContentExtension.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaSimpleContentRestriction.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaSimpleType.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaSimpleTypeList.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaSimpleTypeRestriction.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaSimpleTypeUnion.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaSubstitutionGroup.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaType.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaValidationException.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlSchemaValidator.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XmlValueConverter.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XsdBuilder.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XsdDateTime.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XsdDuration.cs
mcs/class/referencesource/System.Xml/System/Xml/Schema/XsdValidator.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Advanced/SchemaImporterExtension.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/CodeExporter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/CodeGenerator.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/CodeIdentifier.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/CodeIdentifiers.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Compilation.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Compiler.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Configuration/ConfigurationStrings.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Configuration/DateTimeSerializationSection.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Configuration/SchemaImporterExtensionElement.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Configuration/SchemaImporterExtensionElementCollection.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Configuration/SchemaImporterExtensionsSection.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Configuration/SerializationSectionGroup.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/ImportContext.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Mappings.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Models.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/NameTable.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/PrimitiveXmlSerializers.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SchemaImporter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SchemaObjectWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapAttributeAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapAttributeOverrides.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapAttributes.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapCodeExporter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapElementAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapEnumAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapIgnoreAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapIncludeAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapReflectionImporter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapSchemaExporter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapSchemaImporter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapSchemamember.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SoapTypeAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/SourceInfo.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Types.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlAnyAttributeAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlAnyElementAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlAnyElementAttributes.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlArrayAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlArrayItemAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlArrayItemAttributes.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlAttributeAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlAttributeOverrides.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlAttributes.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlChoiceIdentifierAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlCodeExporter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlElementAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlElementAttributes.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlEnumAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlIgnoreAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlIncludeAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlMapping.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlMemberMapping.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlMembersMapping.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlNamespaceDeclarationsAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlReflectionImporter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlReflectionMember.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlRootAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSchemaExporter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSchemaImporter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSchemaProviderAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSchemas.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializationGeneratedCode.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializationILGen.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializationReader.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializationReaderILGen.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializationWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializationWriterILGen.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializer.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializerAssemblyAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializerFactory.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializerNamespaces.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlSerializerVersionAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlTextAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlTypeAttribute.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/XmlTypeMapping.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/Xmlcustomformatter.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/_Events.cs
mcs/class/referencesource/System.Xml/System/Xml/Serialization/indentedWriter.cs
mcs/class/referencesource/System.Xml/System/Xml/ValidateNames.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/AbsoluteQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/AttributeQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/Axis.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/BaseAxisQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/BooleanExpr.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/BooleanFunctions.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/CacheAxisQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/CacheChildrenQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/CacheOutputQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/ChildrenQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/ClonableStack.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/CompiledXPathExpr.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/ContextQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/DescendantBaseQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/DescendantQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/DescendantoverDescendantQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/DocumentorderQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/EmptyQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/ExtensionQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/Filter.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/FilterQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/FollowingQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/FollowingSibling.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/ForwardPositionQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/Function.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/FunctionQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/Group.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/GroupQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/IdQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/IteratorFilter.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/LogicalExpr.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/MergeFilterQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/NamespaceQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/NodeFunctions.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/NumberFunctions.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/NumericExpr.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/Operand.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/OperandQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/Operator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/ParentQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/PrecedingQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/PrecedingSibling.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/Query.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/QueryBuilder.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/ResetableIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/ReversePositionQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/Root.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/SortQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/StringFunctions.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/UnionExpr.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/ValueQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/Variable.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/VariableQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathAncestorIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathAncestorQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathArrayIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathAxisIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathChildIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathDescendantIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathEmptyIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathMultyIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathParser.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathScanner.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathSelectionIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathSelfQuery.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/Internal/XPathSingletonIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/XPathDocument.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/XPathException.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/XPathExpr.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/XPathItem.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/XPathNavigator.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/XPathNavigatorKeyComparer.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/XPathNavigatorReader.cs
mcs/class/referencesource/System.Xml/System/Xml/XPath/XPathNodeIterator.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlCharType.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlComplianceUtil.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlConvert.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlDownloadManager.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlEncoding.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlException.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlNamespacemanager.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlNullResolver.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlQualifiedName.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlResolver.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlSecureResolver.cs
mcs/class/referencesource/System.Xml/System/Xml/XmlUrlResolver.cs
mcs/class/referencesource/System.Xml/System/Xml/Xslt/XslCompiledTransform.cs
mcs/class/referencesource/System.Xml/System/Xml/Xslt/XslTransform.cs
mcs/class/referencesource/System.Xml/System/Xml/Xslt/XsltArgumentList.cs
mcs/class/referencesource/System.Xml/System/Xml/Xslt/XsltContext.cs
mcs/class/referencesource/System.Xml/System/Xml/Xslt/XsltException.cs
mcs/class/referencesource/System.Xml/System/Xml/Xslt/XsltSettings.cs
mcs/class/referencesource/System/InternalApis/Clr/inc/AppContextDefaultValues.cs
mcs/class/referencesource/System/compmod/microsoft/visualbasic/VBCodeProvider.cs
mcs/class/referencesource/System/compmod/microsoft/win32/UnsafeNativeMethods.cs
mcs/class/referencesource/System/compmod/microsoft/win32/safehandles/SafeEventLogReadHandle.cs
mcs/class/referencesource/System/compmod/microsoft/win32/safehandles/SafeEventLogWriteHandle.cs
mcs/class/referencesource/System/compmod/microsoft/win32/safehandles/SafeFileMapViewHandle.cs
mcs/class/referencesource/System/compmod/microsoft/win32/safehandles/SafeFileMappingHandle.cs
mcs/class/referencesource/System/compmod/microsoft/win32/safehandles/SafeLibraryHandle.cs
mcs/class/referencesource/System/compmod/microsoft/win32/safehandles/SafeLocalMemHandle.cs
mcs/class/referencesource/System/compmod/microsoft/win32/safehandles/SafeTimerHandle.cs
mcs/class/referencesource/System/compmod/microsoft/win32/safehandles/SafeUserTokenHandle.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeArgumentReferenceExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeArrayCreateExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeArrayIndexerExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeAssignStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeAttachEventStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeAttributeArgument.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeAttributeArgumentCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeAttributeDeclaration.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeAttributeDeclarationCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeBinaryOperatorExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeCastExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeCatchClause.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeCatchClauseCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeChecksumPragma.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeComment.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeCommentStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeCommentStatementCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeCompileUnit.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeConditionStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeConstructor.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeDefaultValueExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeDelegateCreateExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeDelegateInvokeExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeDirectionExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeDirectiveCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeEntryPointMethod.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeEventReferenceExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeExpressionCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeExpressionStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeFieldReferenceExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeGotoStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeIndexerExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeIterationStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeLabeledStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeLinePragma.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeMemberEvent.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeMemberField.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeMemberMethod.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeMemberProperty.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeMethodInvokeExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeMethodReturnStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeNamespace.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeNamespaceCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeNamespaceImport.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeNamespaceImportCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeObject.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeObjectCreateExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeParameterDeclarationExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeParameterDeclarationExpressionCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodePrimitiveExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodePropertyReferenceExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeRegionDirective.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeRemoveEventStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeSnippetCompileUnit.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeSnippetExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeSnippetStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeSnippetTypeMember.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeStatementCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeThrowExceptionStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTryCatchFinallyStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeConstructor.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeDeclaration.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeDeclarationCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeDelegate.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeMember.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeMemberCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeOfExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeParameter.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeParameterCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeReference.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeReferenceCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeTypeReferenceExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeVariableDeclarationStatement.cs
mcs/class/referencesource/System/compmod/system/codedom/CodeVariableReferenceExpression.cs
mcs/class/referencesource/System/compmod/system/codedom/codemethodreferenceexpression.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CodeCompiler.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CodeDOMProvider.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CodeDomConfigurationHandler.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CodeGenerator.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CodeGeneratorOptions.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CodeValidator.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CompilerError.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CompilerErrorCollection.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CompilerInfo.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CompilerParameters.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/CompilerResults.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/Executor.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/GeneratedCodeAttribute.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/IndentTextWriter.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/RedistVersionInfo.cs
mcs/class/referencesource/System/compmod/system/codedom/compiler/TempFiles.cs
mcs/class/referencesource/System/compmod/system/collections/generic/stack.cs
mcs/class/referencesource/System/compmod/system/collections/objectmodel/observablecollection.cs
mcs/class/referencesource/System/compmod/system/collections/specialized/marshalinghelpers.cs
mcs/class/referencesource/System/compmod/system/collections/specialized/stringdictionary.cs
mcs/class/referencesource/System/compmod/system/componentmodel/AsyncOperation.cs
mcs/class/referencesource/System/compmod/system/componentmodel/InstallerTypeAttribute.cs
mcs/class/referencesource/System/compmod/system/componentmodel/LicenseProviderAttribute.cs
mcs/class/referencesource/System/compmod/system/componentmodel/MemberDescriptor.cs
mcs/class/referencesource/System/compmod/system/componentmodel/PropertyDescriptor.cs
mcs/class/referencesource/System/compmod/system/componentmodel/design/DesignerVerb.cs
mcs/class/referencesource/System/compmod/system/componentmodel/design/DesigntimeLicenseContextSerializer.cs
mcs/class/referencesource/System/compmod/system/componentmodel/design/PropertyTabAttribute.cs
mcs/class/referencesource/System/compmod/system/componentmodel/design/ToolboxItemAttribute.cs
mcs/class/referencesource/System/compmod/system/diagnostics/XmlWriterTraceListener.cs
mcs/class/referencesource/System/compmod/system/diagnostics/assertwrapper.cs
mcs/class/referencesource/System/misc/ClientUtils.cs
mcs/class/referencesource/System/misc/SecurityUtils.cs
mcs/class/referencesource/System/net/System/Net/Cache/HttpRequestCacheValidator.cs
mcs/class/referencesource/System/net/System/Net/Cache/IERequestCache.cs
mcs/class/referencesource/System/net/System/Net/Cache/RequestCachePolicy.cs
mcs/class/referencesource/System/net/System/Net/Cache/WinInetCache.cs
mcs/class/referencesource/System/net/System/Net/Configuration/DefaultProxySection.cs
mcs/class/referencesource/System/net/System/Net/Configuration/TimeoutValidationAttribute.cs
mcs/class/referencesource/System/net/System/Net/FtpWebRequest.cs
mcs/class/referencesource/System/net/System/Net/HttpListener.cs
mcs/class/referencesource/System/net/System/Net/HttpListenerRequest.cs
mcs/class/referencesource/System/net/System/Net/HttpWebRequest.cs
mcs/class/referencesource/System/net/System/Net/HttpWebResponse.cs
mcs/class/referencesource/System/net/System/Net/Internal.cs
mcs/class/referencesource/System/net/System/Net/SecureProtocols/NegotiateStream.cs
mcs/class/referencesource/System/net/System/Net/SecureProtocols/_FixedSizeReader.cs
mcs/class/referencesource/System/net/System/Net/SecureProtocols/_NegoStream.cs
mcs/class/referencesource/System/net/System/Net/SecureProtocols/_SslState.cs
mcs/class/referencesource/System/net/System/Net/SecureProtocols/_SslStream.cs
mcs/class/referencesource/System/net/System/Net/ServicePoint.cs
mcs/class/referencesource/System/net/System/Net/Sockets/NetworkStream.cs
mcs/class/referencesource/System/net/System/Net/Sockets/Socket.cs
mcs/class/referencesource/System/net/System/Net/Sockets/UDPClient.cs
mcs/class/referencesource/System/net/System/Net/TransportContext.cs
mcs/class/referencesource/System/net/System/Net/UnsafeNativeMethods.cs
mcs/class/referencesource/System/net/System/Net/WebRequest.cs
mcs/class/referencesource/System/net/System/Net/WebSockets/WebSocketHttpListenerDuplexStream.cs
mcs/class/referencesource/System/net/System/Net/WebUtility.cs
mcs/class/referencesource/System/net/System/Net/_AuthenticationState.cs
mcs/class/referencesource/System/net/System/Net/_AutoWebProxyScriptEngine.cs
mcs/class/referencesource/System/net/System/Net/_AutoWebProxyScriptHelper.cs
mcs/class/referencesource/System/net/System/Net/_AutoWebProxyScriptWrapper.cs
mcs/class/referencesource/System/net/System/Net/_ChunkParser.cs
mcs/class/referencesource/System/net/System/Net/_CommandStream.cs
mcs/class/referencesource/System/net/System/Net/_ConnectStream.cs
mcs/class/referencesource/System/net/System/Net/_Connection.cs
mcs/class/referencesource/System/net/System/Net/_ContextAwareResult.cs
mcs/class/referencesource/System/net/System/Net/_DigestClient.cs
mcs/class/referencesource/System/net/System/Net/_HTTPDateParse.cs
mcs/class/referencesource/System/net/System/Net/_LazyAsyncResult.cs
mcs/class/referencesource/System/net/System/Net/_ListenerResponseStream.cs
mcs/class/referencesource/System/net/System/Net/_SafeNetHandles.cs
mcs/class/referencesource/System/net/System/Net/_SecureChannel.cs
mcs/class/referencesource/System/net/System/Net/_TLSstream.cs
mcs/class/referencesource/System/net/System/Net/_TimerThread.cs
mcs/class/referencesource/System/net/System/Net/mail/MailHeaderInfo.cs
mcs/class/referencesource/System/net/System/Net/mail/SmtpClient.cs
mcs/class/referencesource/System/net/System/Net/mail/SmtpTransport.cs
mcs/class/referencesource/System/net/System/Net/mail/smtpconnection.cs
mcs/class/referencesource/System/net/System/URI.cs
mcs/class/referencesource/System/net/System/_UriSyntax.cs
mcs/class/referencesource/System/regex/system/text/regularexpressions/Regex.cs
mcs/class/referencesource/System/regex/system/text/regularexpressions/RegexCompiler.cs
mcs/class/referencesource/System/security/system/security/Authentication/ExtendedProtection/TokenBinding.cs [new file with mode: 0644]
mcs/class/referencesource/System/security/system/security/cryptography/cryptoapi.cs
mcs/class/referencesource/System/security/system/security/cryptography/x509/x509chain.cs
mcs/class/referencesource/System/services/monitoring/system/diagnosticts/EventLog.cs
mcs/class/referencesource/System/services/monitoring/system/diagnosticts/EventLogEntry.cs
mcs/class/referencesource/System/services/monitoring/system/diagnosticts/EventLogEntryCollection.cs
mcs/class/referencesource/System/services/monitoring/system/diagnosticts/EventLogInternal.cs
mcs/class/referencesource/System/services/monitoring/system/diagnosticts/Process.cs
mcs/class/referencesource/System/services/monitoring/system/diagnosticts/ProcessManager.cs
mcs/class/referencesource/System/services/monitoring/system/diagnosticts/ProcessStartInfo.cs
mcs/class/referencesource/System/services/monitoring/system/diagnosticts/SharedUtils.cs
mcs/class/referencesource/System/services/timers/system/timers/Timer.cs
mcs/class/referencesource/System/sys/LocalAppContextSwitches.cs
mcs/class/referencesource/System/sys/system/IO/compression/FastEncoderWindow.cs
mcs/class/referencesource/System/sys/system/IO/ports/SerialStream.cs
mcs/class/referencesource/System/sys/system/Media/SoundPlayer.cs
mcs/class/referencesource/System/sys/system/collections/concurrent/BlockingCollection.cs
mcs/class/referencesource/System/sys/system/collections/concurrent/ConcurrentBag.cs
mcs/class/referencesource/System/sys/system/threading/Barrier.cs
mcs/class/referencesource/System/sys/system/windows/markup/ValueSerializerAttribute.cs
mcs/class/referencesource/XamlBuildTask/Microsoft/Build/Tasks/Xaml/PartialClassGenerationTaskInternal.cs
mcs/class/referencesource/XamlBuildTask/Microsoft/Build/Tasks/Xaml/ResolveAssemblyHelper.cs
mcs/class/referencesource/mscorlib/InternalApis/NDP_Common/inc/StrongNameHelpers.cs
mcs/class/referencesource/mscorlib/microsoft/win32/oavariantlib.cs
mcs/class/referencesource/mscorlib/microsoft/win32/safehandles/saferegistryhandle.cs
mcs/class/referencesource/mscorlib/system/AggregateException.cs
mcs/class/referencesource/mscorlib/system/AppContext/AppContext.cs
mcs/class/referencesource/mscorlib/system/AppContext/AppContextDefaultValues.cs
mcs/class/referencesource/mscorlib/system/Lazy.cs
mcs/class/referencesource/mscorlib/system/appdomain.cs
mcs/class/referencesource/mscorlib/system/appdomainattributes.cs
mcs/class/referencesource/mscorlib/system/appdomainunloadedexception.cs
mcs/class/referencesource/mscorlib/system/argiterator.cs
mcs/class/referencesource/mscorlib/system/array.cs
mcs/class/referencesource/mscorlib/system/badimageformatexception.cs
mcs/class/referencesource/mscorlib/system/cannotunloadappdomainexception.cs
mcs/class/referencesource/mscorlib/system/collections/Concurrent/CDSCollectionETWBCLProvider.cs
mcs/class/referencesource/mscorlib/system/collections/Concurrent/ConcurrentDictionary.cs
mcs/class/referencesource/mscorlib/system/collections/Concurrent/ConcurrentQueue.cs
mcs/class/referencesource/mscorlib/system/collections/Concurrent/ConcurrentStack.cs
mcs/class/referencesource/mscorlib/system/collections/Concurrent/IProducerConsumerCollection.cs
mcs/class/referencesource/mscorlib/system/collections/Concurrent/OrderablePartitioner.cs
mcs/class/referencesource/mscorlib/system/collections/Concurrent/Partitioner.cs
mcs/class/referencesource/mscorlib/system/collections/Concurrent/PartitionerStatic.cs
mcs/class/referencesource/mscorlib/system/collections/arraylist.cs
mcs/class/referencesource/mscorlib/system/collections/bitarray.cs
mcs/class/referencesource/mscorlib/system/collections/caseinsensitivecomparer.cs
mcs/class/referencesource/mscorlib/system/collections/caseinsensitivehashcodeprovider.cs
mcs/class/referencesource/mscorlib/system/collections/collectionbase.cs
mcs/class/referencesource/mscorlib/system/collections/comparer.cs
mcs/class/referencesource/mscorlib/system/collections/compatiblecomparer.cs
mcs/class/referencesource/mscorlib/system/collections/dictionarybase.cs
mcs/class/referencesource/mscorlib/system/collections/dictionaryentry.cs
mcs/class/referencesource/mscorlib/system/collections/emptyreadonlydictionaryinternal.cs
mcs/class/referencesource/mscorlib/system/collections/generic/arraysorthelper.cs
mcs/class/referencesource/mscorlib/system/collections/generic/comparer.cs
mcs/class/referencesource/mscorlib/system/collections/generic/debugview.cs
mcs/class/referencesource/mscorlib/system/collections/generic/dictionary.cs
mcs/class/referencesource/mscorlib/system/collections/generic/equalitycomparer.cs
mcs/class/referencesource/mscorlib/system/collections/generic/keynotfoundexception.cs
mcs/class/referencesource/mscorlib/system/collections/generic/keyvaluepair.cs
mcs/class/referencesource/mscorlib/system/collections/generic/list.cs
mcs/class/referencesource/mscorlib/system/collections/hashtable.cs
mcs/class/referencesource/mscorlib/system/collections/keyvaluepairs.cs
mcs/class/referencesource/mscorlib/system/collections/listdictionaryinternal.cs
mcs/class/referencesource/mscorlib/system/collections/objectmodel/collection.cs
mcs/class/referencesource/mscorlib/system/collections/objectmodel/keyedcollection.cs
mcs/class/referencesource/mscorlib/system/collections/objectmodel/readonlycollection.cs
mcs/class/referencesource/mscorlib/system/collections/queue.cs
mcs/class/referencesource/mscorlib/system/collections/readonlycollectionbase.cs
mcs/class/referencesource/mscorlib/system/collections/sortedlist.cs
mcs/class/referencesource/mscorlib/system/collections/stack.cs
mcs/class/referencesource/mscorlib/system/collections/structuralcomparisons.cs
mcs/class/referencesource/mscorlib/system/delegate.cs
mcs/class/referencesource/mscorlib/system/diagnostics/assert.cs
mcs/class/referencesource/mscorlib/system/diagnostics/contracts/contracts.cs
mcs/class/referencesource/mscorlib/system/diagnostics/contracts/contractsbcl.cs
mcs/class/referencesource/mscorlib/system/diagnostics/eventing/TraceLogging/SimpleTypeInfos.cs
mcs/class/referencesource/mscorlib/system/diagnostics/eventing/activitytracker.cs
mcs/class/referencesource/mscorlib/system/diagnostics/eventing/eventdescriptor.cs
mcs/class/referencesource/mscorlib/system/diagnostics/eventing/eventsource.cs
mcs/class/referencesource/mscorlib/system/diagnostics/eventing/frameworkeventsource.cs
mcs/class/referencesource/mscorlib/system/environment.cs
mcs/class/referencesource/mscorlib/system/exception.cs
mcs/class/referencesource/mscorlib/system/executionengineexception.cs
mcs/class/referencesource/mscorlib/system/globalization/Persiancalendar.cs
mcs/class/referencesource/mscorlib/system/globalization/calendar.cs
mcs/class/referencesource/mscorlib/system/globalization/calendardata.cs
mcs/class/referencesource/mscorlib/system/globalization/culturedata.cs
mcs/class/referencesource/mscorlib/system/globalization/cultureinfo.cs
mcs/class/referencesource/mscorlib/system/globalization/datetimeformat.cs
mcs/class/referencesource/mscorlib/system/globalization/datetimeparse.cs
mcs/class/referencesource/mscorlib/system/globalization/eastasianlunisolarcalendar.cs
mcs/class/referencesource/mscorlib/system/globalization/hebrewnumber.cs
mcs/class/referencesource/mscorlib/system/globalization/regioninfo.cs
mcs/class/referencesource/mscorlib/system/globalization/stringinfo.cs
mcs/class/referencesource/mscorlib/system/globalization/textelementenumerator.cs
mcs/class/referencesource/mscorlib/system/globalization/textinfo.cs
mcs/class/referencesource/mscorlib/system/globalization/timespanformat.cs
mcs/class/referencesource/mscorlib/system/globalization/timespanparse.cs
mcs/class/referencesource/mscorlib/system/globalization/umalquracalendar.cs
mcs/class/referencesource/mscorlib/system/io/__consolestream.cs
mcs/class/referencesource/mscorlib/system/io/__error.cs
mcs/class/referencesource/mscorlib/system/io/bufferedstream.cs
mcs/class/referencesource/mscorlib/system/io/directory.cs
mcs/class/referencesource/mscorlib/system/io/directoryinfo.cs
mcs/class/referencesource/mscorlib/system/io/directorynotfoundexception.cs
mcs/class/referencesource/mscorlib/system/io/driveinfo.cs
mcs/class/referencesource/mscorlib/system/io/drivenotfoundexception.cs
mcs/class/referencesource/mscorlib/system/io/endofstreamexception.cs
mcs/class/referencesource/mscorlib/system/io/file.cs
mcs/class/referencesource/mscorlib/system/io/fileinfo.cs
mcs/class/referencesource/mscorlib/system/io/fileloadexception.cs
mcs/class/referencesource/mscorlib/system/io/filenotfoundexception.cs
mcs/class/referencesource/mscorlib/system/io/filestream.cs
mcs/class/referencesource/mscorlib/system/io/filesystemenumerable.cs
mcs/class/referencesource/mscorlib/system/io/filesysteminfo.cs
mcs/class/referencesource/mscorlib/system/io/ioexception.cs
mcs/class/referencesource/mscorlib/system/io/isolatedstorage/isolatedstorage.cs
mcs/class/referencesource/mscorlib/system/io/isolatedstorage/isolatedstorageexception.cs
mcs/class/referencesource/mscorlib/system/io/isolatedstorage/isolatedstoragefile.cs
mcs/class/referencesource/mscorlib/system/io/isolatedstorage/isolatedstoragefilestream.cs
mcs/class/referencesource/mscorlib/system/io/longpath.cs
mcs/class/referencesource/mscorlib/system/io/memorystream.cs
mcs/class/referencesource/mscorlib/system/io/path.cs
mcs/class/referencesource/mscorlib/system/io/pathtoolongexception.cs
mcs/class/referencesource/mscorlib/system/io/pinnedbuffermemorystream.cs
mcs/class/referencesource/mscorlib/system/io/stream.cs
mcs/class/referencesource/mscorlib/system/io/streamreader.cs
mcs/class/referencesource/mscorlib/system/io/stringreader.cs
mcs/class/referencesource/mscorlib/system/io/stringwriter.cs
mcs/class/referencesource/mscorlib/system/io/textreader.cs
mcs/class/referencesource/mscorlib/system/io/textwriter.cs
mcs/class/referencesource/mscorlib/system/io/unmanagedmemoryaccessor.cs
mcs/class/referencesource/mscorlib/system/io/unmanagedmemorystream.cs
mcs/class/referencesource/mscorlib/system/io/unmanagedmemorystreamwrapper.cs
mcs/class/referencesource/mscorlib/system/object.cs
mcs/class/referencesource/mscorlib/system/progress.cs
mcs/class/referencesource/mscorlib/system/reflection/Associates.cs
mcs/class/referencesource/mscorlib/system/reflection/ConstructorInfo.cs
mcs/class/referencesource/mscorlib/system/reflection/__filters.cs
mcs/class/referencesource/mscorlib/system/reflection/ambiguousmatchexception.cs
mcs/class/referencesource/mscorlib/system/reflection/assembly.cs
mcs/class/referencesource/mscorlib/system/reflection/assemblyattributes.cs
mcs/class/referencesource/mscorlib/system/reflection/assemblyname.cs
mcs/class/referencesource/mscorlib/system/reflection/assemblynameproxy.cs
mcs/class/referencesource/mscorlib/system/reflection/customattribute.cs
mcs/class/referencesource/mscorlib/system/reflection/customattributeformatexception.cs
mcs/class/referencesource/mscorlib/system/reflection/defaultmemberattribute.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/aqnbuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/assemblybuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/assemblybuilderdata.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/constructorbuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/customattributebuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/dynamicilgenerator.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/dynamicmethod.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/enumbuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/eventbuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/eventtoken.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/fieldbuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/fieldtoken.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/generictypeparameterbuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/ilgenerator.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/label.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/localbuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/methodbuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/methodbuilderinstantiation.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/methodrental.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/methodtoken.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/modulebuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/modulebuilderdata.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/opcode.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/opcodes.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/parameterbuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/parametertoken.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/propertybuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/propertytoken.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/signaturehelper.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/signaturetoken.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/stringtoken.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/symbolmethod.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/symboltype.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/typebuilder.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/typebuilderinstantiation.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/typetoken.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/unmanagedmarshal.cs
mcs/class/referencesource/mscorlib/system/reflection/emit/xxxontypebuilderinstantiation.cs
mcs/class/referencesource/mscorlib/system/reflection/eventinfo.cs
mcs/class/referencesource/mscorlib/system/reflection/fieldinfo.cs
mcs/class/referencesource/mscorlib/system/reflection/introspectionextensions.cs
mcs/class/referencesource/mscorlib/system/reflection/invalidfiltercriteriaexception.cs
mcs/class/referencesource/mscorlib/system/reflection/loaderallocator.cs
mcs/class/referencesource/mscorlib/system/reflection/manifestresourceinfo.cs
mcs/class/referencesource/mscorlib/system/reflection/mdconstant.cs
mcs/class/referencesource/mscorlib/system/reflection/mdimport.cs
mcs/class/referencesource/mscorlib/system/reflection/memberinfo.cs
mcs/class/referencesource/mscorlib/system/reflection/memberinfoserializationholder.cs
mcs/class/referencesource/mscorlib/system/reflection/methodbase.cs
mcs/class/referencesource/mscorlib/system/reflection/methodbody.cs
mcs/class/referencesource/mscorlib/system/reflection/methodinfo.cs
mcs/class/referencesource/mscorlib/system/reflection/missing.cs
mcs/class/referencesource/mscorlib/system/reflection/module.cs
mcs/class/referencesource/mscorlib/system/reflection/obfuscateassemblyattribute.cs
mcs/class/referencesource/mscorlib/system/reflection/obfuscationattribute.cs
mcs/class/referencesource/mscorlib/system/reflection/parameterinfo.cs
mcs/class/referencesource/mscorlib/system/reflection/parametermodifier.cs
mcs/class/referencesource/mscorlib/system/reflection/pointer.cs
mcs/class/referencesource/mscorlib/system/reflection/propertyinfo.cs
mcs/class/referencesource/mscorlib/system/reflection/reflectioncontext.cs
mcs/class/referencesource/mscorlib/system/reflection/reflectiontypeloadexception.cs
mcs/class/referencesource/mscorlib/system/reflection/strongnamekeypair.cs
mcs/class/referencesource/mscorlib/system/reflection/targetexception.cs
mcs/class/referencesource/mscorlib/system/reflection/targetinvocationexception.cs
mcs/class/referencesource/mscorlib/system/reflection/targetparametercountexception.cs
mcs/class/referencesource/mscorlib/system/reflection/typedelegator.cs
mcs/class/referencesource/mscorlib/system/reflection/typeinfo.cs
mcs/class/referencesource/mscorlib/system/resources/__fastresourcecomparer.cs
mcs/class/referencesource/mscorlib/system/resources/filebasedresourcegroveler.cs
mcs/class/referencesource/mscorlib/system/resources/manifestbasedresourcegroveler.cs
mcs/class/referencesource/mscorlib/system/resources/missingmanifestresourceexception.cs
mcs/class/referencesource/mscorlib/system/resources/missingsatelliteassemblyexception.cs
mcs/class/referencesource/mscorlib/system/resources/neutralresourceslanguageattribute.cs
mcs/class/referencesource/mscorlib/system/resources/resourcefallbackmanager.cs
mcs/class/referencesource/mscorlib/system/resources/resourcemanager.cs
mcs/class/referencesource/mscorlib/system/resources/resourcereader.cs
mcs/class/referencesource/mscorlib/system/resources/resourceset.cs
mcs/class/referencesource/mscorlib/system/resources/resourcewriter.cs
mcs/class/referencesource/mscorlib/system/resources/runtimeresourceset.cs
mcs/class/referencesource/mscorlib/system/resources/satellitecontractversionattribute.cs
mcs/class/referencesource/mscorlib/system/rttype.cs
mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs
mcs/class/referencesource/mscorlib/system/runtime/compilerservices/ConditionalWeakTable.cs
mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs
mcs/class/referencesource/mscorlib/system/runtime/compilerservices/YieldAwaitable.cs
mcs/class/referencesource/mscorlib/system/runtime/compilerservices/compilationrelaxations.cs
mcs/class/referencesource/mscorlib/system/runtime/compilerservices/runtimehelpers.cs
mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/corruptingexceptioncommon.cs
mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionnotification.cs
mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/attributes.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/gchandle.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/attributes.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/bindablevectortocollectionadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/bindablevectortolistadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/clrikeyvaluepairimpl.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/clripropertyvalueimpl.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/clrireferenceimpl.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/custompropertyimpl.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/dictionarytomapadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/enumeratortoiteratoradapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/eventregistrationtoken.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/eventregistrationtokentable.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/icustompropertyprovider.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/imapviewtoireadonlydictionaryadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/ireadonlydictionarytoimapviewadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/ireadonlylisttoivectorviewadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/iteratortoenumeratoradapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/ivectorviewtoireadonlylistadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/listtobindablevectoradapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/listtobindablevectorviewadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/listtovectoradapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/managedactivationfactory.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/maptocollectionadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/maptodictionaryadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/mapviewtoreadonlycollectionadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/vectortocollectionadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/vectortolistadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/vectorviewtoreadonlycollectionadapter.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/windowsruntimemarshal.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/windowsruntimemetadata.cs
mcs/class/referencesource/mscorlib/system/runtime/interopservices/windowsruntime/winrtclassactivator.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/activationservices.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/channelservices.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/channelsinkstacks.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/clientsponsor.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/configuration.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/context.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/crossappdomainchannel.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/crosscontextchannel.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/identityholder.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/lease.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/leasemanager.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/message.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/objref.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/realproxy.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/remotingattributes.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/remotingproxy.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/remotingservices.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/soapinteroptypes.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/synchronizeddispatch.cs
mcs/class/referencesource/mscorlib/system/runtime/remoting/urlattribute.cs
mcs/class/referencesource/mscorlib/system/runtime/serialization/formatters/soapfault.cs
mcs/class/referencesource/mscorlib/system/runtime/serialization/objectclonehelper.cs
mcs/class/referencesource/mscorlib/system/runtime/serialization/safeserializationmanager.cs
mcs/class/referencesource/mscorlib/system/runtime/serialization/streamingcontext.cs
mcs/class/referencesource/mscorlib/system/runtime/versioning/binarycompatibility.cs
mcs/class/referencesource/mscorlib/system/runtime/versioning/multitargetinghelpers.cs
mcs/class/referencesource/mscorlib/system/runtimehandles.cs
mcs/class/referencesource/mscorlib/system/security/accesscontrol/ace.cs
mcs/class/referencesource/mscorlib/system/security/accesscontrol/acl.cs
mcs/class/referencesource/mscorlib/system/security/accesscontrol/securitydescriptor.cs
mcs/class/referencesource/mscorlib/system/security/attributes.cs
mcs/class/referencesource/mscorlib/system/security/builtinpermissionsets.cs
mcs/class/referencesource/mscorlib/system/security/claims/Claim.cs
mcs/class/referencesource/mscorlib/system/security/claims/ClaimsIdentity.cs
mcs/class/referencesource/mscorlib/system/security/claims/ClaimsPrincipal.cs
mcs/class/referencesource/mscorlib/system/security/claims/RoleClaimProvider.cs
mcs/class/referencesource/mscorlib/system/security/codeaccesspermission.cs
mcs/class/referencesource/mscorlib/system/security/codeaccesssecurityengine.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/asymmetricalgorithm.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/asymmetrickeyexchangedeformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/asymmetrickeyexchangeformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/asymmetricsignaturedeformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/asymmetricsignatureformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/base64transforms.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/crypto.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/cryptoapitransform.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/cryptoconfig.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/cryptostream.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/derivebytes.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/des.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/descryptoserviceprovider.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/dsa.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/dsacryptoserviceprovider.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/dsasignaturedeformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/dsasignatureformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/hashalgorithm.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/hmac.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/hmacmd5.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/hmacripemd160.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/hmacsha1.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/hmacsha256.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/hmacsha384.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/hmacsha512.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/icspasymmetricalgorithm.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/keyedhashalgorithm.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/mactripledes.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/md5.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/md5cryptoserviceprovider.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/passwordderivebytes.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/pkcs1maskgenerationmethod.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/randomnumbergenerator.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rc2.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rc2cryptoserviceprovider.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rfc2898derivebytes.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rijndael.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rijndaelmanaged.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rijndaelmanagedtransform.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/ripemd160.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/ripemd160managed.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rngcryptoserviceprovider.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rsa.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rsacryptoserviceprovider.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rsaoaepkeyexchangedeformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rsaoaepkeyexchangeformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rsapkcs1keyexchangedeformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rsapkcs1keyexchangeformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rsapkcs1signaturedeformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/rsapkcs1signatureformatter.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/safecryptohandles.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/sha1.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/sha1cryptoserviceprovider.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/sha1managed.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/sha256.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/sha256managed.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/sha384.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/sha384managed.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/sha512.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/sha512managed.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/signaturedescription.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/symmetricalgorithm.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/tripledes.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/tripledescryptoserviceprovider.cs
mcs/class/referencesource/mscorlib/system/security/cryptography/utils.cs
mcs/class/referencesource/mscorlib/system/security/framesecuritydescriptor.cs
mcs/class/referencesource/mscorlib/system/security/hostprotectionexception.cs
mcs/class/referencesource/mscorlib/system/security/hostsecuritymanager.cs
mcs/class/referencesource/mscorlib/system/security/namedpermissionset.cs
mcs/class/referencesource/mscorlib/system/security/permissionlistset.cs
mcs/class/referencesource/mscorlib/system/security/permissions/environmentpermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/filedialogpermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/fileiopermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/gacidentitypermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/hostprotectionpermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/isolatedstoragefilepermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/isolatedstoragepermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/keycontainerpermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/permissionattributes.cs
mcs/class/referencesource/mscorlib/system/security/permissions/principalpermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/publisheridentitypermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/reflectionpermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/registrypermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/securitypermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/siteidentitypermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/strongnameidentitypermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/strongnamepublickeyblob.cs
mcs/class/referencesource/mscorlib/system/security/permissions/uipermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/urlidentitypermission.cs
mcs/class/referencesource/mscorlib/system/security/permissions/zoneidentitypermission.cs
mcs/class/referencesource/mscorlib/system/security/permissionset.cs
mcs/class/referencesource/mscorlib/system/security/permissionsetenumerator.cs
mcs/class/referencesource/mscorlib/system/security/permissionsettriple.cs
mcs/class/referencesource/mscorlib/system/security/permissiontoken.cs
mcs/class/referencesource/mscorlib/system/security/policy/allmembershipcondition.cs
mcs/class/referencesource/mscorlib/system/security/policy/applicationdirectory.cs
mcs/class/referencesource/mscorlib/system/security/policy/applicationdirectorymembershipcondition.cs
mcs/class/referencesource/mscorlib/system/security/policy/applicationsecurityinfo.cs
mcs/class/referencesource/mscorlib/system/security/policy/applicationsecuritymanager.cs
mcs/class/referencesource/mscorlib/system/security/policy/applicationtrust.cs
mcs/class/referencesource/mscorlib/system/security/policy/assemblyevidencefactory.cs
mcs/class/referencesource/mscorlib/system/security/policy/codegroup.cs
mcs/class/referencesource/mscorlib/system/security/policy/evidence.cs
mcs/class/referencesource/mscorlib/system/security/policy/evidencebase.cs
mcs/class/referencesource/mscorlib/system/security/policy/evidencetypedescriptor.cs
mcs/class/referencesource/mscorlib/system/security/policy/filecodegroup.cs
mcs/class/referencesource/mscorlib/system/security/policy/firstmatchcodegroup.cs
mcs/class/referencesource/mscorlib/system/security/policy/gac.cs
mcs/class/referencesource/mscorlib/system/security/policy/gacmembershipcondition.cs
mcs/class/referencesource/mscorlib/system/security/policy/hash.cs
mcs/class/referencesource/mscorlib/system/security/policy/hashmembershipcondition.cs
mcs/class/referencesource/mscorlib/system/security/policy/iapplicationtrustmanager.cs
mcs/class/referencesource/mscorlib/system/security/policy/netcodegroup.cs
mcs/class/referencesource/mscorlib/system/security/policy/pefileevidencefactory.cs
mcs/class/referencesource/mscorlib/system/security/policy/permissionrequestevidence.cs
mcs/class/referencesource/mscorlib/system/security/policy/policyexception.cs
mcs/class/referencesource/mscorlib/system/security/policy/policylevel.cs
mcs/class/referencesource/mscorlib/system/security/policy/policystatement.cs
mcs/class/referencesource/mscorlib/system/security/policy/publisher.cs
mcs/class/referencesource/mscorlib/system/security/policy/publishermembershipcondition.cs
mcs/class/referencesource/mscorlib/system/security/policy/site.cs
mcs/class/referencesource/mscorlib/system/security/policy/sitemembershipcondition.cs
mcs/class/referencesource/mscorlib/system/security/policy/strongname.cs
mcs/class/referencesource/mscorlib/system/security/policy/strongnamemembershipcondition.cs
mcs/class/referencesource/mscorlib/system/security/policy/unioncodegroup.cs
mcs/class/referencesource/mscorlib/system/security/policy/url.cs
mcs/class/referencesource/mscorlib/system/security/policy/urlmembershipcondition.cs
mcs/class/referencesource/mscorlib/system/security/policy/zone.cs
mcs/class/referencesource/mscorlib/system/security/policy/zonemembershipcondition.cs
mcs/class/referencesource/mscorlib/system/security/policymanager.cs
mcs/class/referencesource/mscorlib/system/security/principal/genericidentity.cs
mcs/class/referencesource/mscorlib/system/security/principal/genericprincipal.cs
mcs/class/referencesource/mscorlib/system/security/principal/identitynotmappedexception.cs
mcs/class/referencesource/mscorlib/system/security/principal/identityreference.cs
mcs/class/referencesource/mscorlib/system/security/principal/ircollection.cs
mcs/class/referencesource/mscorlib/system/security/principal/ntaccount.cs
mcs/class/referencesource/mscorlib/system/security/principal/sid.cs
mcs/class/referencesource/mscorlib/system/security/principal/win32.cs
mcs/class/referencesource/mscorlib/system/security/principal/windowsidentity.cs
mcs/class/referencesource/mscorlib/system/security/principal/windowsimpersonationcontext.cs
mcs/class/referencesource/mscorlib/system/security/principal/windowsprincipal.cs
mcs/class/referencesource/mscorlib/system/security/readonlypermissionset.cs
mcs/class/referencesource/mscorlib/system/security/safesecurityhandles.cs
mcs/class/referencesource/mscorlib/system/security/securestring.cs
mcs/class/referencesource/mscorlib/system/security/securitycontext.cs
mcs/class/referencesource/mscorlib/system/security/securitydocument.cs
mcs/class/referencesource/mscorlib/system/security/securityelement.cs
mcs/class/referencesource/mscorlib/system/security/securityexception.cs
mcs/class/referencesource/mscorlib/system/security/securitymanager.cs
mcs/class/referencesource/mscorlib/system/security/securityruntime.cs
mcs/class/referencesource/mscorlib/system/security/securitystate.cs
mcs/class/referencesource/mscorlib/system/security/util/config.cs
mcs/class/referencesource/mscorlib/system/security/util/hex.cs
mcs/class/referencesource/mscorlib/system/security/util/parser.cs
mcs/class/referencesource/mscorlib/system/security/util/sitestring.cs
mcs/class/referencesource/mscorlib/system/security/util/stringexpressionset.cs
mcs/class/referencesource/mscorlib/system/security/util/tokenbasedset.cs
mcs/class/referencesource/mscorlib/system/security/util/tokenbasedsetenumerator.cs
mcs/class/referencesource/mscorlib/system/security/util/tokenizer.cs
mcs/class/referencesource/mscorlib/system/security/util/urlstring.cs
mcs/class/referencesource/mscorlib/system/security/util/xmlutil.cs
mcs/class/referencesource/mscorlib/system/security/verificationexception.cs
mcs/class/referencesource/mscorlib/system/security/xmlsyntaxexception.cs
mcs/class/referencesource/mscorlib/system/string.cs
mcs/class/referencesource/mscorlib/system/stubhelpers.cs
mcs/class/referencesource/mscorlib/system/text/asciiencoding.cs
mcs/class/referencesource/mscorlib/system/text/decoder.cs
mcs/class/referencesource/mscorlib/system/text/encoder.cs
mcs/class/referencesource/mscorlib/system/text/encoding.cs
mcs/class/referencesource/mscorlib/system/text/gb18030encoding.cs
mcs/class/referencesource/mscorlib/system/text/iso2022encoding.cs
mcs/class/referencesource/mscorlib/system/text/unicodeencoding.cs
mcs/class/referencesource/mscorlib/system/text/utf32encoding.cs
mcs/class/referencesource/mscorlib/system/text/utf7encoding.cs
mcs/class/referencesource/mscorlib/system/text/utf8encoding.cs
mcs/class/referencesource/mscorlib/system/threading/CDSsyncETWBCLProvider.cs
mcs/class/referencesource/mscorlib/system/threading/CancellationToken.cs
mcs/class/referencesource/mscorlib/system/threading/CancellationTokenRegistration.cs
mcs/class/referencesource/mscorlib/system/threading/CancellationTokenSource.cs
mcs/class/referencesource/mscorlib/system/threading/CountdownEvent.cs
mcs/class/referencesource/mscorlib/system/threading/LazyInitializer.cs
mcs/class/referencesource/mscorlib/system/threading/ManualResetEventSlim.cs
mcs/class/referencesource/mscorlib/system/threading/SemaphoreSlim.cs
mcs/class/referencesource/mscorlib/system/threading/SpinLock.cs
mcs/class/referencesource/mscorlib/system/threading/SpinWait.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/BeginEndAwaitableAdapter.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/ConcurrentExclusiveSchedulerPair.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/Future.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/FutureFactory.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/Parallel.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/ParallelLoopState.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/ParallelRangeManager.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/ProducerConsumerQueues.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/TPLETWProvider.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/TaskCanceledException.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/TaskCompletionSource.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/TaskContinuation.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/TaskExceptionHolder.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/TaskFactory.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/TaskScheduler.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/TaskSchedulerException.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/TaskToApm.cs
mcs/class/referencesource/mscorlib/system/threading/Tasks/ThreadPoolTaskScheduler.cs
mcs/class/referencesource/mscorlib/system/threading/ThreadLocal.cs
mcs/class/referencesource/mscorlib/system/threading/abandonedmutexexception.cs
mcs/class/referencesource/mscorlib/system/threading/asynclocal.cs
mcs/class/referencesource/mscorlib/system/threading/autoresetevent.cs
mcs/class/referencesource/mscorlib/system/threading/compressedstack.cs
mcs/class/referencesource/mscorlib/system/threading/eventwaithandle.cs
mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs
mcs/class/referencesource/mscorlib/system/threading/hostexecutioncontextmanager.cs
mcs/class/referencesource/mscorlib/system/threading/interlocked.cs
mcs/class/referencesource/mscorlib/system/threading/lockcookie.cs
mcs/class/referencesource/mscorlib/system/threading/lockrecursionexception.cs
mcs/class/referencesource/mscorlib/system/threading/manualresetevent.cs
mcs/class/referencesource/mscorlib/system/threading/monitor.cs
mcs/class/referencesource/mscorlib/system/threading/mutex.cs
mcs/class/referencesource/mscorlib/system/threading/overlapped.cs
mcs/class/referencesource/mscorlib/system/threading/readerwriterlock.cs
mcs/class/referencesource/mscorlib/system/threading/semaphorefullexception.cs
mcs/class/referencesource/mscorlib/system/threading/synchronizationcontext.cs
mcs/class/referencesource/mscorlib/system/threading/synchronizationlockexception.cs
mcs/class/referencesource/mscorlib/system/threading/thread.cs
mcs/class/referencesource/mscorlib/system/threading/threadabortexception.cs
mcs/class/referencesource/mscorlib/system/threading/threadinterruptedexception.cs
mcs/class/referencesource/mscorlib/system/threading/threadpool.cs
mcs/class/referencesource/mscorlib/system/threading/threadstartexception.cs
mcs/class/referencesource/mscorlib/system/threading/threadstateexception.cs
mcs/class/referencesource/mscorlib/system/threading/timeout.cs
mcs/class/referencesource/mscorlib/system/threading/timer.cs
mcs/class/referencesource/mscorlib/system/threading/volatile.cs
mcs/class/referencesource/mscorlib/system/threading/waithandle.cs
mcs/class/referencesource/mscorlib/system/threading/waithandlecannotbeopenedexception.cs
mcs/class/referencesource/mscorlib/system/type.cs

index 9bdec4c12cab21bc161e1efcec5ec44143861155..71fd837a355dd611d0f513b574714d0b048e80c7 100644 (file)
@@ -28,7 +28,7 @@ namespace System.ServiceModel.Diagnostics
         [SuppressMessage(FxCop.Category.Security, FxCop.Rule.TransparentMethodsMustNotReferenceCriticalCode)] // we got APTCA approval with no requirement to fix this transparency warning
         internal static void CloseInvalidOutSafeHandle(SafeHandle handle)
         {
-            // Workaround for 64-bit CLR 
+            // Workaround for 64-bit CLR bug VSWhidbey 546830 - sometimes invalid SafeHandles come back null.
             if (handle != null)
             {
 #pragma warning disable 618
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/AssemblyInfo.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..5919b78
--- /dev/null
@@ -0,0 +1,5 @@
+using System.Runtime.CompilerServices;
+using System.Diagnostics.CodeAnalysis;
+
+[assembly: InternalsVisibleTo("CIT.System.Activities.Core.Design, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
+[assembly: SuppressMessage("Microsoft.MSInternal", "CA904:DeclareTypesInMicrosoftOrSystemNamespace", Scope = "namespace", Target = "XamlGeneratedNamespace", Justification = "Xaml Generated")]
\ No newline at end of file
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/SR.Designer.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/SR.Designer.cs
new file mode 100644 (file)
index 0000000..d61d6e6
--- /dev/null
@@ -0,0 +1,850 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.235
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class SR {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal SR() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("System.Activities.Core.Presentation.SR", typeof(SR).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add an activity.
+        /// </summary>
+        internal static string AddActivityHintText {
+            get {
+                return ResourceManager.GetString("AddActivityHintText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add new case.
+        /// </summary>
+        internal static string AddNewCase {
+            get {
+                return ResourceManager.GetString("AddNewCase", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Connect items automatically.
+        /// </summary>
+        internal static string AutoConnect {
+            get {
+                return ResourceManager.GetString("AutoConnect", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Split connector automatically.
+        /// </summary>
+        internal static string AutoSplit {
+            get {
+                return ResourceManager.GetString("AutoSplit", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot construct line segment between point {0} and point {1}..
+        /// </summary>
+        internal static string CannotConstructConnectionSegment {
+            get {
+                return ResourceManager.GetString("CannotConstructConnectionSegment", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot create link..
+        /// </summary>
+        internal static string CannotCreateLink {
+            get {
+                return ResourceManager.GetString("CannotCreateLink", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot create transition from a state to its descendant..
+        /// </summary>
+        internal static string CannotCreateTransitionFromAncestorToDescendant {
+            get {
+                return ResourceManager.GetString("CannotCreateTransitionFromAncestorToDescendant", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot create transition to a composite state..
+        /// </summary>
+        internal static string CannotCreateTransitionToCompositeState {
+            get {
+                return ResourceManager.GetString("CannotCreateTransitionToCompositeState", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to {0} activity is copied to the clipboard. Please paste it in your workflow as appropriate..
+        /// </summary>
+        internal static string CannotPasteSendReplyOrReceiveReply {
+            get {
+                return ResourceManager.GetString("CannotPasteSendReplyOrReceiveReply", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot set a composite state as the initial state..
+        /// </summary>
+        internal static string CannotSetCompositeStateAsInitialState {
+            get {
+                return ResourceManager.GetString("CannotSetCompositeStateAsInitialState", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot set a final state as the initial state..
+        /// </summary>
+        internal static string CannotSetFinalStateAsInitialState {
+            get {
+                return ResourceManager.GetString("CannotSetFinalStateAsInitialState", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Case{0}.
+        /// </summary>
+        internal static string CaseFormat {
+            get {
+                return ResourceManager.GetString("CaseFormat", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Change Case Value.
+        /// </summary>
+        internal static string ChangeCaseValue {
+            get {
+                return ResourceManager.GetString("ChangeCaseValue", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Change type collection.
+        /// </summary>
+        internal static string ChangeTypeCollectionEditingScopeDesc {
+            get {
+                return ResourceManager.GetString("ChangeTypeCollectionEditingScopeDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Clear initial state.
+        /// </summary>
+        internal static string ClearInitialState {
+            get {
+                return ResourceManager.GetString("ClearInitialState", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Transition.
+        /// </summary>
+        internal static string ConnectionAutomationPropertiesName {
+            get {
+                return ResourceManager.GetString("ConnectionAutomationPropertiesName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ConnectionConfigurationName &apos;{0}&apos; does not exist in configuration file..
+        /// </summary>
+        internal static string ConnectionNotFoundInConfig {
+            get {
+                return ResourceManager.GetString("ConnectionNotFoundInConfig", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Select and press Ctrl-C to copy the transition..
+        /// </summary>
+        internal static string CopyTransitionToolTip {
+            get {
+                return ResourceManager.GetString("CopyTransitionToolTip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot use a query correlation initializer when a message is XmlSerializable..
+        /// </summary>
+        internal static string CorrelationInitializerNotSupported {
+            get {
+                return ResourceManager.GetString("CorrelationInitializerNotSupported", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Add parameter.
+        /// </summary>
+        internal static string CreateParameter {
+            get {
+                return ResourceManager.GetString("CreateParameter", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Create transition.
+        /// </summary>
+        internal static string CreateTransition {
+            get {
+                return ResourceManager.GetString("CreateTransition", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to (Custom).
+        /// </summary>
+        internal static string CustomConnectionStringLabel {
+            get {
+                return ResourceManager.GetString("CustomConnectionStringLabel", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Default case already exists..
+        /// </summary>
+        internal static string DefaultCaseExists {
+            get {
+                return ResourceManager.GetString("DefaultCaseExists", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Define....
+        /// </summary>
+        internal static string DefineContent {
+            get {
+                return ResourceManager.GetString("DefineContent", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Expected argument named &apos;{0}&apos; was not found.
+        ///.
+        /// </summary>
+        internal static string DelegateArgumentMissing {
+            get {
+                return ResourceManager.GetString("DelegateArgumentMissing", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The directionality of activity delegate argument &apos;{0}&apos; in DelegateArguments dictionary is &apos;{1}&apos;. The expected directionality is &apos;{2}&apos;.
+        ///.
+        /// </summary>
+        internal static string DelegateArgumentsDirectionalityMismatch {
+            get {
+                return ResourceManager.GetString("DelegateArgumentsDirectionalityMismatch", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The argument provided for the delegate input named &apos;{0}&apos; had an invalid type.  The delegate input is of type &apos;{1}&apos; and the argument is of type &apos;{2}&apos;.  The argument&apos;s type must be coercible to the delegate input&apos;s type.
+        ///.
+        /// </summary>
+        internal static string DelegateInArgumentTypeMismatch {
+            get {
+                return ResourceManager.GetString("DelegateInArgumentTypeMismatch", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The argument provided for the delegate output named &apos;{0}&apos; had an invalid type.  The delegate output is of type &apos;{1}&apos; and the argument is of type &apos;{2}&apos;.  The delegate output&apos;s type must be coercible to the argument&apos;s type.
+        ///.
+        /// </summary>
+        internal static string DelegateOutArgumentTypeMismatch {
+            get {
+                return ResourceManager.GetString("DelegateOutArgumentTypeMismatch", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to A switch case with the key &apos;{0}&apos; already exists. Choose a different key..
+        /// </summary>
+        internal static string DuplicateCaseKey {
+            get {
+                return ResourceManager.GetString("DuplicateCaseKey", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The collection already contains the key &apos;{0}&apos;. Please choose a different key..
+        /// </summary>
+        internal static string DuplicateKeyName {
+            get {
+                return ResourceManager.GetString("DuplicateKeyName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Editing Command.
+        /// </summary>
+        internal static string EditingCommand {
+            get {
+                return ResourceManager.GetString("EditingCommand", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Editing Connection Settings.
+        /// </summary>
+        internal static string EditingConnectionSettings {
+            get {
+                return ResourceManager.GetString("EditingConnectionSettings", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Editing Parameters.
+        /// </summary>
+        internal static string EditingParameters {
+            get {
+                return ResourceManager.GetString("EditingParameters", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Edit Parameters.
+        /// </summary>
+        internal static string EditParametersUndoUnitName {
+            get {
+                return ResourceManager.GetString("EditParametersUndoUnitName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Double-click to edit state details..
+        /// </summary>
+        internal static string EditStateToolTip {
+            get {
+                return ResourceManager.GetString("EditStateToolTip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Double-click to edit transition details.
+        /// </summary>
+        internal static string EditTransitionTooltip {
+            get {
+                return ResourceManager.GetString("EditTransitionTooltip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to (empty).
+        /// </summary>
+        internal static string EmptyName {
+            get {
+                return ResourceManager.GetString("EmptyName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Equals() and/or GetHashCode() on type &apos;{0}&apos; were not overridden correctly..
+        /// </summary>
+        internal static string EqualityError {
+            get {
+                return ResourceManager.GetString("EqualityError", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Workflow Designer.
+        /// </summary>
+        internal static string ErrorMessageBoxTitle {
+            get {
+                return ResourceManager.GetString("ErrorMessageBoxTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;Enter an expression&gt;.
+        /// </summary>
+        internal static string ExpressionDefaultText {
+            get {
+                return ResourceManager.GetString("ExpressionDefaultText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Create Link(s).
+        /// </summary>
+        internal static string FCCreateLink {
+            get {
+                return ResourceManager.GetString("FCCreateLink", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Delete Link(s).
+        /// </summary>
+        internal static string FCDeleteLink {
+            get {
+                return ResourceManager.GetString("FCDeleteLink", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Delete Flowchart node.
+        /// </summary>
+        internal static string FCDeleteShape {
+            get {
+                return ResourceManager.GetString("FCDeleteShape", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to False branch already exists..
+        /// </summary>
+        internal static string FCFalseBranchExists {
+            get {
+                return ResourceManager.GetString("FCFalseBranchExists", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Connection can only be from True or False branch..
+        /// </summary>
+        internal static string FCFlowConditionLinkError {
+            get {
+                return ResourceManager.GetString("FCFlowConditionLinkError", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The True and False branches have already been defined..
+        /// </summary>
+        internal static string FCFlowConditionLinksExist {
+            get {
+                return ResourceManager.GetString("FCFlowConditionLinksExist", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to False.
+        /// </summary>
+        internal static string FCFlowDecisionFalseMarker {
+            get {
+                return ResourceManager.GetString("FCFlowDecisionFalseMarker", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to True.
+        /// </summary>
+        internal static string FCFlowDecisionTrueMarker {
+            get {
+                return ResourceManager.GetString("FCFlowDecisionTrueMarker", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot connect to the connection point..
+        /// </summary>
+        internal static string FCInvalidLink {
+            get {
+                return ResourceManager.GetString("FCInvalidLink", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Move Flowchart Link.
+        /// </summary>
+        internal static string FCLinkMove {
+            get {
+                return ResourceManager.GetString("FCLinkMove", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot create more than one outgoing connection for this activity..
+        /// </summary>
+        internal static string FCNextLinkDefined {
+            get {
+                return ResourceManager.GetString("FCNextLinkDefined", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Resize Flowchart.
+        /// </summary>
+        internal static string FCResizeUndoUnitName {
+            get {
+                return ResourceManager.GetString("FCResizeUndoUnitName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to True branch already exists..
+        /// </summary>
+        internal static string FCTrueBranchExists {
+            get {
+                return ResourceManager.GetString("FCTrueBranchExists", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Fill Delegate Arguments.
+        /// </summary>
+        internal static string FillDelegateArguments {
+            get {
+                return ResourceManager.GetString("FillDelegateArguments", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to FlowSwitch case rename.
+        /// </summary>
+        internal static string FlowSwitchCaseRenameEditingScopeDesc {
+            get {
+                return ResourceManager.GetString("FlowSwitchCaseRenameEditingScopeDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to FlowSwitch DefaultCaseDisplayName change.
+        /// </summary>
+        internal static string FlowSwitchDefaultCaseDisplayNameEditingScopeDesc {
+            get {
+                return ResourceManager.GetString("FlowSwitchDefaultCaseDisplayNameEditingScopeDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Drag a line to connect to the initial state.
+        /// </summary>
+        internal static string InitialStateConnectionPointTooltip {
+            get {
+                return ResourceManager.GetString("InitialStateConnectionPointTooltip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to FlowSwitch cases must be unique..
+        /// </summary>
+        internal static string InvalidFlowSwitchCaseMessage {
+            get {
+                return ResourceManager.GetString("InvalidFlowSwitchCaseMessage", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Item Move.
+        /// </summary>
+        internal static string ItemMove {
+            get {
+                return ResourceManager.GetString("ItemMove", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Move link.
+        /// </summary>
+        internal static string MoveLink {
+            get {
+                return ResourceManager.GetString("MoveLink", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;Input case here&gt;.
+        /// </summary>
+        internal static string NewCaseHint {
+            get {
+                return ResourceManager.GetString("NewCaseHint", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Case key value cannot be converted from/to type string..
+        /// </summary>
+        internal static string NotSupportedCaseKeyStringConversion {
+            get {
+                return ResourceManager.GetString("NotSupportedCaseKeyStringConversion", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The Encoding with code page &apos;{0}&apos; is not supported..
+        /// </summary>
+        internal static string NotSupportedEncoding {
+            get {
+                return ResourceManager.GetString("NotSupportedEncoding", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to (null).
+        /// </summary>
+        internal static string NullName {
+            get {
+                return ResourceManager.GetString("NullName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The entered key is invalid.
+        /// </summary>
+        internal static string NullOrEmptyKeyName {
+            get {
+                return ResourceManager.GetString("NullOrEmptyKeyName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Parameters.
+        /// </summary>
+        internal static string ParameterDialogTitle {
+            get {
+                return ResourceManager.GetString("ParameterDialogTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot paste the transition if one of the selected source states is a Final state..
+        /// </summary>
+        internal static string PasteTransitionOnFinalState {
+            get {
+                return ResourceManager.GetString("PasteTransitionOnFinalState", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot paste the transition if the selection contains any item that is not a State..
+        /// </summary>
+        internal static string PasteTransitionOnNonStateItem {
+            get {
+                return ResourceManager.GetString("PasteTransitionOnNonStateItem", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Select and press Ctrl-V to paste the transition..
+        /// </summary>
+        internal static string PasteTransitionToolTip {
+            get {
+                return ResourceManager.GetString("PasteTransitionToolTip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot paste the transition because &apos;{0}&apos; has all connection points occupied..
+        /// </summary>
+        internal static string PasteTransitionWithoutAvailableConnectionPoints {
+            get {
+                return ResourceManager.GetString("PasteTransitionWithoutAvailableConnectionPoints", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot paste the transition if the destination state of the copied transition is removed or not in the StateMachine..
+        /// </summary>
+        internal static string PasteTransitionWithoutDestinationState {
+            get {
+                return ResourceManager.GetString("PasteTransitionWithoutDestinationState", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &apos;{0}&apos; is not a concrete type of ActivityDelegate..
+        /// </summary>
+        internal static string PropertyIsNotAConcreteActivityDelegate {
+            get {
+                return ResourceManager.GetString("PropertyIsNotAConcreteActivityDelegate", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &apos;{0}&apos; is not an ActivityDelegate..
+        /// </summary>
+        internal static string PropertyIsNotAnActivityDelegate {
+            get {
+                return ResourceManager.GetString("PropertyIsNotAnActivityDelegate", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Property Reference Change.
+        /// </summary>
+        internal static string PropertyReferenceChange {
+            get {
+                return ResourceManager.GetString("PropertyReferenceChange", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &apos;{0}&apos; cannot be resolved..
+        /// </summary>
+        internal static string PropertyReferenceNotResolved {
+            get {
+                return ResourceManager.GetString("PropertyReferenceNotResolved", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Reorder items.
+        /// </summary>
+        internal static string ReorderItems {
+            get {
+                return ResourceManager.GetString("ReorderItems", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Set initial state.
+        /// </summary>
+        internal static string SetInitialState {
+            get {
+                return ResourceManager.GetString("SetInitialState", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Drag a line to create a new transition that shares the same trigger.
+        /// </summary>
+        internal static string SharedTriggerToolTip {
+            get {
+                return ResourceManager.GetString("SharedTriggerToolTip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Go to {0}.
+        /// </summary>
+        internal static string StateLinkButtonToolTip {
+            get {
+                return ResourceManager.GetString("StateLinkButtonToolTip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Resize StateMachine.
+        /// </summary>
+        internal static string StateMachineResize {
+            get {
+                return ResourceManager.GetString("StateMachineResize", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Resize State.
+        /// </summary>
+        internal static string StateResize {
+            get {
+                return ResourceManager.GetString("StateResize", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Drag a line to create a transition.
+        /// </summary>
+        internal static string TransitionConnectionPointTooltip {
+            get {
+                return ResourceManager.GetString("TransitionConnectionPointTooltip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Request in ReceiveReply &apos;{0}&apos; does not belong to the workflow..
+        /// </summary>
+        internal static string UnrootedRequestInReceiveReply {
+            get {
+                return ResourceManager.GetString("UnrootedRequestInReceiveReply", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Request in SendReply &apos;{0}&apos; does not belong to the workflow..
+        /// </summary>
+        internal static string UnrootedRequestInSendReply {
+            get {
+                return ResourceManager.GetString("UnrootedRequestInSendReply", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to View message....
+        /// </summary>
+        internal static string ViewMessageContent {
+            get {
+                return ResourceManager.GetString("ViewMessageContent", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to View parameter....
+        /// </summary>
+        internal static string ViewParameterContent {
+            get {
+                return ResourceManager.GetString("ViewParameterContent", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ActivityDelegate arguments don&apos;t match. Check your activity configuration to make sure it is in [....] with the declared ActivityDelegate..
+        /// </summary>
+        internal static string WrongNumberOfArgumentsForActivityDelegate {
+            get {
+                return ResourceManager.GetString("WrongNumberOfArgumentsForActivityDelegate", resourceCulture);
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ArgumentIdentifierTrimConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ArgumentIdentifierTrimConverter.cs
new file mode 100644 (file)
index 0000000..dd2f590
--- /dev/null
@@ -0,0 +1,31 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Converters;
+    using System.Windows.Data;
+    
+    internal sealed class ArgumentIdentifierTrimConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            if (value != null)
+            {
+                return value;
+            }
+            
+            return string.Empty;
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            // delegate to VBIdentifierTrimConverter.ConvertBack, because VBIdentifierTrimConverter is internal and cannot be directly referenced from XAML.
+            VBIdentifierTrimConverter converter = new VBIdentifierTrimConverter();
+            return converter.ConvertBack(value, targetType, parameter, culture);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/AssignDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/AssignDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..57be3c6
--- /dev/null
@@ -0,0 +1,120 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Activities.Presentation.Model;
+    using System.Runtime;
+    using Microsoft.VisualBasic.Activities;
+    using System.Reflection;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.View;
+    using System.Collections.Generic;
+
+    partial class AssignDesigner
+    {
+        const string ToPropertyName = "To";
+        const string ValuePropertyName = "Value";
+
+        PropertyChangedEventHandler modelItemPropertyChangedHandler;
+
+        public AssignDesigner()
+        {
+            this.InitializeComponent();
+        }
+
+        PropertyChangedEventHandler ModelItemPropertyChangedHandler
+        {
+            get
+            {
+                if (this.modelItemPropertyChangedHandler == null)
+                {
+                    this.modelItemPropertyChangedHandler = new PropertyChangedEventHandler(modelItem_PropertyChanged);
+                }
+
+                return this.modelItemPropertyChangedHandler;
+            }
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+
+            this.Unloaded += (sender, eventArgs) =>
+            {
+                AssignDesigner designer = sender as AssignDesigner;
+                if (designer != null && designer.ModelItem != null)
+                {
+                    designer.ModelItem.PropertyChanged -= designer.ModelItemPropertyChangedHandler;
+                }
+            };            
+        }
+
+        internal static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type assignType = typeof(Assign);
+            builder.AddCustomAttributes(assignType, new DesignerAttribute(typeof(AssignDesigner)));
+            builder.AddCustomAttributes(assignType, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+
+            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) =>
+            {
+                return new ArgumentAccessor[]
+                {
+                    new ArgumentAccessor
+                    {
+                        Getter = (ownerActivity) => ((Assign)ownerActivity).To,
+                        Setter = (ownerActivity, arg) => ((Assign)ownerActivity).To = arg as OutArgument,
+                    },
+                    new ArgumentAccessor
+                    {
+                        Getter = (ownerActivity) => ((Assign)ownerActivity).Value,
+                        Setter = (ownerActivity, arg) => ((Assign)ownerActivity).Value = arg as InArgument,
+                    },
+                };
+            };
+            ActivityArgumentHelper.RegisterAccessorsGenerator(assignType, argumentAccessorGenerator);
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            ModelItem modelItem = newItem as ModelItem;
+            if (modelItem != null)
+            {
+                modelItem.PropertyChanged += ModelItemPropertyChangedHandler;
+            }
+            base.OnModelItemChanged(newItem);
+        }
+
+        void modelItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            //if the To argument has changed, we may need to update the Value argument's type
+            if (e.PropertyName == ToPropertyName)
+            {
+                Fx.Assert(this.ModelItem != null, "modelItem could not be null if we recent property changed event from it");
+
+                ModelProperty valueProperty = this.ModelItem.Properties[ValuePropertyName];
+                ModelProperty toProperty = this.ModelItem.Properties[ToPropertyName];
+
+                Fx.Assert(valueProperty != null, "Value model property could not be null");
+                Fx.Assert(toProperty != null, "To model property could not be null");
+
+                Argument value = valueProperty.ComputedValue as Argument;
+                Argument to = toProperty.ComputedValue as Argument;
+
+                if (value != null)
+                {
+                    Type targetType = to == null ? typeof(object) : to.ArgumentType;
+                    if (value.ArgumentType != targetType)
+                    {
+                        valueProperty.SetValue(MorphHelpers.MorphArgument(valueProperty.Value, targetType));
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CancellationScopeDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CancellationScopeDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..baaa101
--- /dev/null
@@ -0,0 +1,28 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Statements;
+
+    using System.ComponentModel;
+
+    partial class CancellationScopeDesigner
+    {
+        public CancellationScopeDesigner()
+        {
+            this.InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(CancellationScope);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CancellationScopeDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("CancellationHandler"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..a7ab19d
--- /dev/null
@@ -0,0 +1,179 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Annotations;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Input;
+
+    partial class CaseDesigner
+    {
+        public CaseDesigner()
+        {
+            this.InitializeComponent();
+            this.DragHandle = null;
+            this.Loaded += (sender, e) =>
+            {
+                Selection selection = this.Context.Items.GetValue<Selection>();
+                if (selection != null)
+                {
+                    ModelItem primarySelection = selection.PrimarySelection;
+                    this.ExpandState = SwitchDesigner.IsDescendantOfCase(this.ModelItem, primarySelection);
+
+                    if (this.ExpandState)
+                    {
+                        // If current focus is at another part, we need to focus this designer
+                        // to trigger selection changed, then this part will expand and another
+                        // expanded part will collapse. Then we focus on the activity it contains
+                        // if there is one.
+
+                        this.ModelItem.Highlight();
+                        if (this.ModelItem != primarySelection && primarySelection.View != null)
+                        {
+                            primarySelection.Highlight();
+                        }
+                    }
+                }
+            };
+        }
+
+        // When the CaseDesigner is collapsed, its CaseKeyBox will be disabled. Thus CaseKeyBox.RegainFocus() doesn't
+        // work in such situation, we must re-focus the CaseDesigner to expand it first to re-enable the CaseKeyBox. 
+        // This situation happens when inputting and invalid case key value and clicking on another Case or Default in 
+        // the same parent SwitchDesigner.
+        public Action<CaseKeyBox> FocusSelf
+        {
+            get
+            {
+                return (ckb) =>
+                    {
+                        Keyboard.Focus((IInputElement)this);
+                    };
+            }
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(ModelItemKeyValuePair<,>);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CaseDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Value"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+        }
+
+        void AttachDisplayName()
+        {
+            AttachedPropertiesService attachedPropertiesService = this.Context.Services.GetService<AttachedPropertiesService>();
+            Fx.Assert(attachedPropertiesService != null, "AttachedPropertiesService is not available.");
+            Type modelItemType = this.ModelItem.ItemType;
+            foreach (AttachedProperty property in attachedPropertiesService.GetAttachedProperties(modelItemType))
+            {
+                if (property.Name == "DisplayName" && property.OwnerType == modelItemType)
+                {
+                    return;
+                }
+            }
+            AttachedProperty<string> displayNameProperty = new AttachedProperty<string>
+            {
+                Name = "DisplayName",
+                OwnerType = modelItemType,
+                Getter = (modelItem) => { return "Case"; }
+            };
+            attachedPropertiesService.AddProperty(displayNameProperty);
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            base.OnModelItemChanged(newItem);
+            this.AttachDisplayName();
+        }
+
+        protected override void OnMouseDown(MouseButtonEventArgs e)
+        {
+            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
+            {
+                SwitchTryCatchDesignerHelper.MakeParentRootDesigner<SwitchDesigner>(this);
+                e.Handled = true;
+            }
+            else if (e.LeftButton == MouseButtonState.Pressed)
+            {
+                Keyboard.Focus(this);
+                e.Handled = true;
+                this.Designer.ShouldStillAllowRubberBandEvenIfMouseLeftButtonDownIsHandled = true;
+            }
+            else if (e.RightButton == MouseButtonState.Pressed)
+            {
+                if (this.ShowExpanded)
+                {
+                    Keyboard.Focus(this);
+                }
+                e.Handled = true;
+            }
+        }
+
+        protected override void OnMouseUp(MouseButtonEventArgs e)
+        {
+            // avoid context menu upon right-click when it's collapsed
+            if (!this.ShowExpanded && e.RightButton == MouseButtonState.Released)
+            {
+                e.Handled = true;
+            }
+        }
+
+        void OnAddAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
+            {
+                ContextMenuUtilities.OnAddAnnotationCommandCanExecute(e, this.Context, this.FindSwitch());
+            }
+        }
+
+        void OnAddAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            ContextMenuUtilities.OnAddAnnotationCommandExecuted(e, this.FindSwitch());
+        }
+
+        void OnEditAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
+            {
+                // call the same method as delete annotation command
+                ContextMenuUtilities.OnDeleteAnnotationCommandCanExecute(e, this.Context, this.FindSwitch());
+            }
+        }
+
+        void OnEditAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            ContextMenuUtilities.OnEditAnnotationCommandExecuted(e, this.FindSwitch());
+        }
+
+        void OnDeleteAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
+            {
+                ContextMenuUtilities.OnDeleteAnnotationCommandCanExecute(e, this.Context, this.FindSwitch());
+            }
+        }
+
+        void OnDeleteAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            ContextMenuUtilities.OnDeleteAnnotationCommandExecuted(e, this.FindSwitch());
+        }
+
+        private ModelItem FindSwitch()
+        {
+            return this.ModelItem.FindParent((ModelItem item) =>
+                {
+                    return item.ItemType.IsGenericType && item.ItemType.GetGenericTypeDefinition() == typeof(Switch<>);
+                });
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewInterface.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewInterface.cs
new file mode 100644 (file)
index 0000000..dfe7afa
--- /dev/null
@@ -0,0 +1,26 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//-----------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+
+    delegate bool CaseKeyValidationCallbackDelegate(object obj, out string reason);
+
+    interface ICaseKeyBoxView
+    {
+        // Some view level functionalities required (i.e. cannot be done by data binding)
+        void RegainFocus();
+
+        // Allow ViewModel to raise View events
+        void OnValueCommitted();
+        void OnEditCancelled();
+
+        // Pass public interface of this control to the ViewModel
+        bool DisplayHintText { get; }
+        object Value { get; set; }
+        Type ValueType { get; }
+        CaseKeyValidationCallbackDelegate CaseKeyValidationCallback { get; }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewModel.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewModel.cs
new file mode 100644 (file)
index 0000000..ab276e3
--- /dev/null
@@ -0,0 +1,365 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//-----------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Collections.ObjectModel;
+    using System.Windows;
+    using System.Linq;
+    using System.ComponentModel;
+    using System.Runtime;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Activities.Presentation.Model;
+
+    class CaseKeyBoxViewModel : DependencyObject
+    {
+        static readonly string Null = "(null)";
+        static readonly string Empty = "(empty)";
+
+        public static readonly DependencyProperty ComboBoxIsEditableProperty =
+            DependencyProperty.Register("ComboBoxIsEditable", typeof(bool), typeof(CaseKeyBoxViewModel), new UIPropertyMetadata(false));
+
+        public static readonly DependencyProperty ComboBoxVisibilityProperty =
+            DependencyProperty.Register("ComboBoxVisibility", typeof(Visibility), typeof(CaseKeyBoxViewModel), new UIPropertyMetadata(Visibility.Collapsed));
+
+        public static readonly DependencyProperty ComboBoxItemsProperty =
+            DependencyProperty.Register("ComboBoxItems", typeof(ObservableCollection<string>), typeof(CaseKeyBoxViewModel));
+
+        public static readonly DependencyProperty DataTemplateNameProperty =
+            DependencyProperty.Register("DataTemplateName", typeof(string), typeof(CaseKeyBoxViewModel), new UIPropertyMetadata("Label"));
+
+        public static readonly DependencyProperty TextProperty =
+            DependencyProperty.Register("Text", typeof(string), typeof(CaseKeyBoxViewModel), new UIPropertyMetadata(String.Empty));
+
+        public static readonly DependencyProperty TextBoxVisibilityProperty =
+            DependencyProperty.Register("TextBoxVisibility", typeof(Visibility), typeof(CaseKeyBoxViewModel), new UIPropertyMetadata(Visibility.Visible));
+
+        public const string BoxesTemplate = "Boxes";
+        public const string LabelTemplate = "Label";
+
+        string oldText = String.Empty;
+
+        public CaseKeyBoxViewModel(ICaseKeyBoxView view)
+        {
+            this.View = view;
+        }
+
+        public bool ComboBoxIsEditable
+        {
+            get { return (bool)GetValue(ComboBoxIsEditableProperty); }
+            set { SetValue(ComboBoxIsEditableProperty, value); }
+        }
+
+        public ObservableCollection<string> ComboBoxItems
+        {
+            get { return (ObservableCollection<string>)GetValue(ComboBoxItemsProperty); }
+            set { SetValue(ComboBoxItemsProperty, value); }
+        }
+
+        public Visibility ComboBoxVisibility
+        {
+            get { return (Visibility)GetValue(ComboBoxVisibilityProperty); }
+            set { SetValue(ComboBoxVisibilityProperty, value); }
+        }
+
+        public string DataTemplateName
+        {
+            get { return (string)GetValue(DataTemplateNameProperty); }
+            set { SetValue(DataTemplateNameProperty, value); }
+        }
+
+        public string Text
+        {
+            get { return (string)GetValue(TextProperty); }
+            set { SetValue(TextProperty, value); }
+        }
+
+        public Visibility TextBoxVisibility
+        {
+            get { return (Visibility)GetValue(TextBoxVisibilityProperty); }
+            set { SetValue(TextBoxVisibilityProperty, value); }
+        }
+
+        public bool IsBoxOnly
+        {
+            get;
+            set;
+        }
+
+        public bool OnEnterPressed()
+        {
+            return this.CommitChanges();
+        }
+
+        public void OnEscapePressed()
+        {
+            this.Text = oldText;
+            if (!this.IsBoxOnly)
+            {
+                this.DataTemplateName = CaseKeyBoxViewModel.LabelTemplate;
+            }
+            this.View.OnEditCancelled();
+        }
+
+        public void OnLabelGotFocus()
+        {
+            this.DataTemplateName = CaseKeyBoxViewModel.BoxesTemplate;
+        }
+
+        public bool OnLostFocus()
+        {
+            return CommitChanges();
+        }
+
+        public void OnValueChanged()
+        {
+            if (this.Value is ModelItem)
+            {
+                // Since Value is a DP, this code will trigger OnValueChanged once more.
+                this.Value = ((ModelItem)this.Value).GetCurrentValue();
+                return;
+            }
+
+            if (this.DataTemplateName != LabelTemplate && !this.IsBoxOnly)
+            {
+                this.DataTemplateName = LabelTemplate;
+            }
+
+            if (this.DisplayHintText)
+            {
+                this.Text = string.Empty;
+                return;
+            }
+            if (this.ValueType == null)
+            {
+                return;
+            }
+            if (this.ValueType.IsValueType)
+            {
+                if (this.Value == null)
+                {
+                    this.Value = Activator.CreateInstance(this.ValueType);
+                }
+            }
+            if (this.Value == null)
+            {
+                this.Text = Null;
+            }
+            else if ((this.ValueType == typeof(string)) && string.Equals(this.Value, String.Empty))
+            {
+                this.Text = Empty;
+            }
+            else
+            {
+                TypeConverter converter = XamlUtilities.GetConverter(this.ValueType);
+                Fx.Assert(converter != null, "TypeConverter is not available");
+                try
+                {
+                    this.Text = converter.ConvertToString(this.Value);
+                }
+                catch (ArgumentException)
+                {
+                    this.Text = this.Value.ToString();
+                }
+            }
+        }
+
+        public void OnValueTypeChanged()
+        {
+            if (this.ValueType == null)
+            {
+                return;
+            }
+            bool isBool = this.ValueType == typeof(bool);
+            bool isEnum = this.ValueType.IsEnum;
+            if (isBool || isEnum)
+            {
+                this.ComboBoxVisibility = Visibility.Visible;
+                this.TextBoxVisibility = Visibility.Collapsed;
+                this.ComboBoxIsEditable = false;
+                if (isBool)
+                {
+                    this.ComboBoxItems = new ObservableCollection<string> { "True", "False" };
+                }
+                else
+                {
+                    this.ComboBoxItems = new ObservableCollection<string>(Enum.GetNames(this.ValueType).ToList());
+                }
+            }
+            else if (this.ValueType.IsValueType)
+            {
+                this.ComboBoxVisibility = Visibility.Collapsed;
+                this.TextBoxVisibility = Visibility.Visible;
+                this.ComboBoxIsEditable = false;
+            }
+            else
+            {
+                this.ComboBoxVisibility = Visibility.Visible;
+                this.TextBoxVisibility = Visibility.Collapsed;
+                this.ComboBoxIsEditable = true;
+                this.ComboBoxItems = new ObservableCollection<string> { Null };
+                if (this.ValueType == typeof(string))
+                {
+                    this.ComboBoxItems.Add(Empty);
+                }
+            }
+            OnValueChanged();
+        }
+
+        public void SaveOldText()
+        {
+            this.oldText = this.Text;
+        }
+
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes",
+            Justification = "If conversion fails, the exception type is System.Exception.So we must catch all types of exceptions here.")]
+        [SuppressMessage("Reliability", "Reliability108:IsFatalRule",
+            Justification = "Catch all exceptions to prevent crash.")]
+        bool CommitChanges()
+        {
+            object result = null;
+
+            try
+            {
+                result = ResolveInputText();
+            }
+            catch
+            {
+                // ---- all
+                Fx.Assert(false, "Result should have been valid. Preview event handler should have handled the validation.");
+                return false;
+            }
+
+            this.Value = result;
+            if (this.DataTemplateName != CaseKeyBoxViewModel.LabelTemplate && !this.IsBoxOnly)
+            {
+                // this is for the case when setting this.Value to null. It looks like
+                // OnValueChanged won't get called because NULL is a default value for
+                // the CaseKeyBox instance in SwitchDesigner.
+                this.DataTemplateName = CaseKeyBoxViewModel.LabelTemplate;
+            }
+            this.View.OnValueCommitted();
+
+            return true;
+        }
+
+        object ResolveInputText()
+        {
+            object result = null;
+            if (this.ValueType == typeof(string))
+            {
+                if (this.Text.Equals(Null))
+                {
+                    result = null;
+                }
+                else if (this.Text.Equals(Empty))
+                {
+                    result = string.Empty;
+                }
+                else
+                {
+                    result = this.Text;
+                }
+            }
+            else if (!this.ValueType.IsValueType && this.Text.Equals(Null))
+            {
+                result = null;
+            }
+            else
+            {
+                TypeConverter converter = XamlUtilities.GetConverter(this.ValueType);
+                Fx.Assert(converter != null, "TypeConverter is not available");
+
+                if (!converter.CanConvertFrom(typeof(string)) || !converter.CanConvertTo(typeof(string)))
+                {
+                    throw FxTrace.Exception.AsError(new NotSupportedException(SR.NotSupportedCaseKeyStringConversion));
+                }
+
+                result = converter.ConvertFromString(this.Text);
+                // See if the result can be converted back to a string.
+                // For example, we have a enum Color {Black, White}.
+                // String "3" can be converted to integer 3, but integer 3
+                // cannot be converted back to a valid string for enum Color.
+                // In this case, we disallow string "3".
+                converter.ConvertToString(result);
+            }
+
+            string reason;
+            if (this.CaseKeyValidationCallback != null && !this.CaseKeyValidationCallback(result, out reason))
+            {
+                throw FxTrace.Exception.AsError(new ArgumentException(reason));
+            }
+
+            return result;
+        }
+
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes",
+            Justification = "If conversion fails, the exception type is System.Exception.So we must catch all types of exceptions here.")]
+        [SuppressMessage("Reliability", "Reliability108:IsFatalRule",
+            Justification = "Catch all exceptions to prevent crash.")]
+        public bool CanResolveInputText(out string reason)
+        {
+            reason = string.Empty;
+            try
+            {
+                ResolveInputText();
+                return true;
+            }
+            catch (Exception e)
+            {
+                reason = e.Message;
+                return false;
+            }
+        }
+
+        public bool TextHasBeenChanged()
+        {
+            string normalizedOldText = this.oldText;
+            string normalizedNewText = this.Text;
+            
+            // Tricky: this.DisplayHintText = false => This CaseKeyBox is in CaseDesigner
+            // Here, when changing value of string value type from "(empty)" to "", we must
+            // consider the text hasn't been changed, such that we don't do commit-change.
+            // We normalize the strings for empty-string situation before we do comparison.
+            if (this.ValueType == typeof(string) && !this.DisplayHintText)
+            {
+                normalizedOldText = normalizedOldText == Empty ? string.Empty : normalizedOldText;
+                normalizedNewText = normalizedNewText == Empty ? string.Empty : normalizedNewText;
+            }
+
+            return normalizedOldText != normalizedNewText;
+        }
+
+        ICaseKeyBoxView View { get; set; }
+
+        bool DisplayHintText
+        {
+            get { return this.View.DisplayHintText; }
+        }
+        
+        object Value
+        {
+            get { return this.View.Value; }
+            set { this.View.Value = value; }
+        }
+
+        Type ValueType
+        {
+            get { return this.View.ValueType; }
+        }
+
+        CaseKeyValidationCallbackDelegate CaseKeyValidationCallback
+        {
+            get { return this.View.CaseKeyValidationCallback;  }
+        }
+
+        public void ResetText()
+        {
+            this.Text = string.Empty;
+            this.oldText = string.Empty;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.xaml.cs
new file mode 100644 (file)
index 0000000..50fc58a
--- /dev/null
@@ -0,0 +1,324 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//-----------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Input;
+    using System.Windows.Threading;
+
+    partial class CaseKeyBox : UserControl, ICaseKeyBoxView
+    {
+        public static readonly DependencyProperty DisplayHintTextProperty =
+            DependencyProperty.Register("DisplayHintText", typeof(bool), typeof(CaseKeyBox));
+
+        public static readonly DependencyProperty LabelTextProperty =
+          DependencyProperty.Register("LabelText", typeof(string), typeof(CaseKeyBox), new UIPropertyMetadata(string.Empty));
+
+        public static readonly DependencyProperty ValueProperty =
+            DependencyProperty.Register("Value", typeof(object), typeof(CaseKeyBox), new PropertyMetadata(OnValueChanged));
+
+        public static readonly DependencyProperty ValueTypeProperty =
+            DependencyProperty.Register("ValueType", typeof(Type), typeof(CaseKeyBox), new PropertyMetadata(OnValueTypeChanged));
+        
+        public static RoutedEvent ValueCommittedEvent =
+            EventManager.RegisterRoutedEvent("ValueCommitted", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CaseKeyBox));
+
+        public static RoutedEvent EditCancelledEvent =
+            EventManager.RegisterRoutedEvent("EditCancelled", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CaseKeyBox));
+
+        public static readonly DependencyProperty CaseKeyValidationCallbackProperty =
+            DependencyProperty.Register("CaseKeyValidationCallback", typeof(CaseKeyValidationCallbackDelegate), typeof(CaseKeyBox));
+
+        public static readonly DependencyProperty ErrorCallbackProperty =
+            DependencyProperty.Register("ErrorCallback", typeof(Action<CaseKeyBox>), typeof(CaseKeyBox));
+
+        public static readonly DependencyProperty CommitExplicitlyProperty =
+            DependencyProperty.Register("CommitExplicitly", typeof(bool), typeof(CaseKeyBox), new PropertyMetadata(false));
+
+        Control visibleBox;
+
+
+        public CaseKeyBox()
+        {
+            this.ViewModel = new CaseKeyBoxViewModel(this);
+            InitializeComponent();
+        }
+
+        public event RoutedEventHandler ValueCommitted
+        {
+            add { AddHandler(ValueCommittedEvent, value); }
+            remove { RemoveHandler(ValueCommittedEvent, value); }
+        }
+
+        public virtual void OnValueCommitted()
+        {
+            RoutedEventArgs args = new RoutedEventArgs();
+            args.RoutedEvent = ValueCommittedEvent;
+            RaiseEvent(args);
+        }
+
+        public event RoutedEventHandler EditCancelled
+        {
+            add { AddHandler(EditCancelledEvent, value); }
+            remove { RemoveHandler(EditCancelledEvent, value); }
+        }
+
+        public virtual void OnEditCancelled()
+        {
+            RoutedEventArgs args = new RoutedEventArgs();
+            args.RoutedEvent = EditCancelledEvent;
+            RaiseEvent(args);
+        }
+
+        public CaseKeyValidationCallbackDelegate CaseKeyValidationCallback
+        {
+            get { return (CaseKeyValidationCallbackDelegate)GetValue(CaseKeyValidationCallbackProperty); }
+            set { SetValue(CaseKeyValidationCallbackProperty, value); }
+        }
+
+        public Action<CaseKeyBox> ErrorCallback
+        {
+            get { return (Action<CaseKeyBox>)GetValue(ErrorCallbackProperty); }
+            set { SetValue(ErrorCallbackProperty, value); }
+        }
+
+        public bool CommitExplicitly
+        {
+            get { return (bool)GetValue(CommitExplicitlyProperty); }
+            set { SetValue(CommitExplicitlyProperty, value); }
+        }
+
+        public string LabelText
+        {
+            get { return (string)GetValue(LabelTextProperty); }
+            set { SetValue(LabelTextProperty, value); }
+        }
+
+        void DisableKeyboardLostFocus()
+        {
+            if (this.visibleBox != null)
+            {
+                this.visibleBox.LostKeyboardFocus -= OnLostKeyboardFocus;
+            }
+        }
+
+        void EnableKeyboardLostFocus()
+        {
+            if (!this.CommitExplicitly)
+            {
+                if (this.visibleBox != null)
+                {
+                    this.visibleBox.LostKeyboardFocus += OnLostKeyboardFocus;
+                }
+            }
+        }
+
+        void ReportError(string errorMessage)
+        {
+            // Invoking error message box will cause LostFocus of the control.
+            // Thus we need to disable LostFocus first and then add the handlers back.
+            DisableKeyboardLostFocus();
+            ErrorReporting.ShowErrorMessage(errorMessage);
+
+            this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (Action)(() =>
+            {
+                if (this.ErrorCallback != null)
+                {
+                    this.ErrorCallback(this);
+                    this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (Action)(() =>
+                    {
+                        RegainFocus();
+                        EnableKeyboardLostFocus();
+                    }));
+                }
+                else
+                {
+                    RegainFocus();
+                    EnableKeyboardLostFocus();
+                }
+            }));
+        }
+
+        void OnBoxMouseUp(object sender, MouseButtonEventArgs e)
+        {
+            // disable the context menu for textbox and combobox
+            if (e.ChangedButton == MouseButton.Right && e.RightButton == MouseButtonState.Released)
+            {
+                e.Handled = true;
+            }
+        }
+
+        #region ICaseKeyBoxView Implementation
+
+        public bool DisplayHintText
+        {
+            get { return (bool)GetValue(DisplayHintTextProperty); }
+            set { SetValue(DisplayHintTextProperty, value); }
+        }
+
+        public object Value
+        {
+            get { return (object)GetValue(ValueProperty); }
+            set { SetValue(ValueProperty, value); }
+        }
+
+        public Type ValueType
+        {
+            get { return (Type)GetValue(ValueTypeProperty); }
+            set { SetValue(ValueTypeProperty, value); }
+        }
+
+        public void RegainFocus()
+        {
+            if (this.visibleBox != null)
+            {
+                Keyboard.Focus((IInputElement)this.visibleBox);
+            }
+        }
+
+        #endregion
+
+        #region Delegating Event Handlers
+
+        public CaseKeyBoxViewModel ViewModel { get; set; }
+
+        static void OnValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
+        {
+            ((CaseKeyBox)sender).ViewModel.OnValueChanged();
+        }
+
+        static void OnValueTypeChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
+        {
+            ((CaseKeyBox)sender).ViewModel.OnValueTypeChanged();
+        }
+
+        void OnLabelGotFocus(object sender, RoutedEventArgs e)
+        {
+            this.ViewModel.OnLabelGotFocus();
+            e.Handled = true;
+        }
+
+        void OnLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
+        {
+            e.Handled = true;
+
+            if (ComboBoxHelper.ShouldFilterUnnecessaryComboBoxEvent(sender as ComboBox))
+            {
+                return;
+            }
+
+            CommitChanges();
+        }
+
+        public bool CommitChanges()
+        {
+            UpdateSource(this.visibleBox);
+            if (this.CommitExplicitly || this.ViewModel.TextHasBeenChanged())
+            {
+                string reason = null;
+                if (!this.ViewModel.CanResolveInputText(out reason))
+                {
+                    ReportError(reason);
+                    return false;
+                }
+                else
+                {
+                    return this.ViewModel.OnLostFocus();
+                }
+            }
+            else
+            {
+                CancelChanges();
+                return false;
+            }
+        }
+
+        public void CancelChanges()
+        {
+            DisableKeyboardLostFocus();
+            this.ViewModel.OnEscapePressed(); // simulate cancel
+        }
+
+        void OnBoxLoaded(object sender, RoutedEventArgs e)
+        {
+            UIElement box = (UIElement)sender;
+            ComboBox comboBox = box as ComboBox;
+            if (comboBox != null && comboBox.IsVisible)
+            {
+                ComboBoxHelper.SynchronizeComboBoxSelection(comboBox, this.ViewModel.Text);
+            }
+            if (box.IsVisible)
+            {
+                box.Focus();
+            }
+            Control control = sender as Control;
+            if (control != null && control.Visibility == Visibility.Visible)
+            {
+                this.visibleBox = control;
+                EnableKeyboardLostFocus();
+            }
+
+            this.ViewModel.SaveOldText();
+        }
+
+        void OnBoxUnloaded(object sender, RoutedEventArgs e)
+        {
+            if (this.visibleBox != null)
+            {
+                DisableKeyboardLostFocus();
+                this.visibleBox = null;
+            }
+        }
+
+        void OnBoxKeyDown(object sender, KeyEventArgs e)
+        {
+            if (!CommitExplicitly)
+            {
+                if (e.Key == Key.Escape)
+                {
+                    e.Handled = true;
+                    CancelChanges();
+                }
+                else if (e.Key == Key.Enter)
+                {
+                    e.Handled = true;
+                    CommitChanges();
+                }
+            }
+        }
+
+        void UpdateSource(object sender)
+        {
+            if (sender is TextBox)
+            {
+                BindingExpression binding = ((TextBox)sender).GetBindingExpression(TextBox.TextProperty);
+                if (binding != null)
+                {
+                    binding.UpdateSource();
+                }
+            }
+            else if (sender is ComboBox)
+            {
+                BindingExpression binding = ((ComboBox)sender).GetBindingExpression(ComboBox.TextProperty);
+                if (binding != null)
+                {
+                    binding.UpdateSource();
+                }
+            }
+        }
+
+        #endregion
+
+        public void ResetText()
+        {
+            this.ViewModel.ResetText();
+        }
+    }
+
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBoxIsEnabledConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBoxIsEnabledConverter.cs
new file mode 100644 (file)
index 0000000..64ddc16
--- /dev/null
@@ -0,0 +1,34 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Windows.Data;
+    using System.Windows;
+    using System.Globalization;
+
+    class CaseKeyBoxIsEnabledConverter : IMultiValueConverter
+    {
+        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
+        {
+            bool isReadOnly = (bool)values[0];
+            bool showExpanded = (bool)values[1];
+
+            if (isReadOnly)
+            {
+                return false;
+            }
+            else
+            {
+                return showExpanded;
+            }
+        }
+
+        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotImplementedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseLabelVisibilityConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseLabelVisibilityConverter.cs
new file mode 100644 (file)
index 0000000..19a28fa
--- /dev/null
@@ -0,0 +1,33 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Globalization;
+    using System.Windows;
+    using System.Windows.Data;
+
+    class CaseLabelVisibilityConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            bool isDefaultCase = (bool)value;
+
+            if (isDefaultCase)
+            {
+                return Visibility.Collapsed;
+            }
+            else
+            {
+                return Visibility.Visible;
+            }
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotImplementedException());
+        }
+
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CatchDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CatchDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..0cf9729
--- /dev/null
@@ -0,0 +1,173 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Annotations;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Windows;
+    using System.Windows.Input;
+    using Microsoft.Activities.Presentation;
+    
+
+    /// <summary>
+    /// Interaction logic for CatchDesigner.xaml
+    /// </summary>
+    partial class CatchDesigner
+    {
+        string exceptionTypeShortName = null;
+        string exceptionTypeFullName = null;
+
+        public CatchDesigner()
+        {
+            InitializeComponent();
+            this.DragHandle = null;
+            this.Loaded += (sender, e) =>
+            {
+                Selection selection = this.Context.Items.GetValue<Selection>();
+                if (selection != null)
+                {
+                    ModelItem primarySelection = selection.PrimarySelection;
+                    this.ExpandState = TryCatchDesigner.IsDescendantOfCatch(this.ModelItem, primarySelection);
+
+                    if (this.ExpandState)
+                    {
+                        // If current focus is at another part, we need to focus this designer
+                        // to trigger selection changed, then this part will expand and another
+                        // expanded part will collapse. Then we focus on the activity it contains
+                        // if there is one.
+                        this.ModelItem.Highlight();
+                        if (this.ModelItem != primarySelection && primarySelection.View != null)
+                        {
+                            primarySelection.Highlight();
+                        }
+                    }
+                }
+            };
+        }
+
+        internal static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(Catch<>);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CatchDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Action"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+        }
+
+        public string ExceptionTypeShortName
+        {
+            get
+            {
+                if (this.exceptionTypeShortName == null)
+                {
+                    this.exceptionTypeShortName = TypeNameHelper.GetDisplayName((Type)this.ModelItem.Properties["ExceptionType"].Value.GetCurrentValue(), false);
+                }
+                return this.exceptionTypeShortName;
+            }
+        }
+
+        public string ExceptionTypeFullName
+        {
+            get
+            {
+                if (this.exceptionTypeFullName == null)
+                {
+                    this.exceptionTypeFullName = TypeNameHelper.GetDisplayName((Type)this.ModelItem.Properties["ExceptionType"].Value.GetCurrentValue(), true);
+                }
+                return this.exceptionTypeFullName;
+            }
+        }
+
+        protected override void OnMouseDown(MouseButtonEventArgs e)
+        {
+            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
+            {
+                SwitchTryCatchDesignerHelper.MakeParentRootDesigner<TryCatchDesigner>(this);
+                e.Handled = true;
+            }
+            else if (e.LeftButton == MouseButtonState.Pressed)
+            {
+                Keyboard.Focus(this);
+                e.Handled = true;
+                this.Designer.ShouldStillAllowRubberBandEvenIfMouseLeftButtonDownIsHandled = true;
+            }
+            else if (e.RightButton == MouseButtonState.Pressed)
+            {
+                if (this.ShowExpanded)
+                {
+                    Keyboard.Focus(this);
+                }
+                e.Handled = true;
+            }
+        }
+
+        protected override void OnMouseUp(MouseButtonEventArgs e)
+        {
+            // avoid context menu upon right-click when it's collapsed
+            if (!this.ShowExpanded && e.RightButton == MouseButtonState.Released)
+            {
+                e.Handled = true;
+            }
+        }
+
+        protected override string GetAutomationIdMemberName()
+        {
+            return PropertyNames.ExceptionType;
+        }
+
+        void OnAddAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
+            {
+                ContextMenuUtilities.OnAddAnnotationCommandCanExecute(e, this.Context, this.FindTryCatch());
+            }
+        }
+
+        void OnAddAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            ContextMenuUtilities.OnAddAnnotationCommandExecuted(e, this.FindTryCatch());
+        }
+
+        void OnEditAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
+            {
+                // call the same method as delete annotation command
+                ContextMenuUtilities.OnDeleteAnnotationCommandCanExecute(e, this.Context, this.FindTryCatch());
+            }
+        }
+
+        void OnEditAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            ContextMenuUtilities.OnEditAnnotationCommandExecuted(e, this.FindTryCatch());
+        }
+
+        void OnDeleteAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
+            {
+                ContextMenuUtilities.OnDeleteAnnotationCommandCanExecute(e, this.Context, this.FindTryCatch());
+            }
+        }
+
+        void OnDeleteAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            ContextMenuUtilities.OnDeleteAnnotationCommandExecuted(e, this.FindTryCatch());
+        }
+
+        private ModelItem FindTryCatch()
+        {
+            return this.ModelItem.FindParent((ModelItem item) =>
+                {
+                    return item.ItemType == typeof(TryCatch);
+                });
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ComboBoxHelper.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ComboBoxHelper.cs
new file mode 100644 (file)
index 0000000..7b89f70
--- /dev/null
@@ -0,0 +1,29 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//-----------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Windows.Controls;
+
+    static class ComboBoxHelper
+    {
+        public static bool ShouldFilterUnnecessaryComboBoxEvent(ComboBox comboBox)
+        {
+            return comboBox != null && comboBox.IsDropDownOpen;
+        }
+
+        public static void SynchronizeComboBoxSelection(ComboBox comboBox, string value)
+        {
+            foreach (string item in comboBox.Items)
+            {
+                if (string.Equals(item, value))
+                {
+                    comboBox.SelectedItem = item;
+                    return;
+                }
+            }
+            comboBox.SelectedIndex = -1;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CompensableActivityDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CompensableActivityDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..1447a4f
--- /dev/null
@@ -0,0 +1,33 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Statements;
+
+    using System.ComponentModel;
+
+    /// <summary>
+    /// Interaction logic for TryCatchDesigner.xaml
+    /// </summary>
+    partial class CompensableActivityDesigner
+    {
+        public CompensableActivityDesigner()
+        {
+            InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(CompensableActivity);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CompensableActivityDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("CompensationHandler"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("ConfirmationHandler"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("CancellationHandler"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ConnectionPointType.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ConnectionPointType.cs
new file mode 100644 (file)
index 0000000..0e1b8fd
--- /dev/null
@@ -0,0 +1,13 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    public enum ConnectionPointType
+    {        
+        Default,
+        Incoming,
+        Outgoing,
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DelegateArgumentsValueEditor.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DelegateArgumentsValueEditor.cs
new file mode 100644 (file)
index 0000000..33f9cd6
--- /dev/null
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.PropertyEditing;
+
+    internal class DelegateArgumentsValueEditor : DialogPropertyValueEditor
+    {
+        public DelegateArgumentsValueEditor()
+        {
+            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("DelegateArguments_InlineTemplate");
+        }
+
+        public override void ShowDialog(PropertyValue propertyValue, Windows.IInputElement commandSource)
+        {
+            ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = new ModelPropertyEntryToOwnerActivityConverter();
+            ModelItem parentModelItem = (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), true, null);
+            EditingContext context = ((IModelTreeItem)parentModelItem).ModelTreeManager.Context;
+            ModelItemDictionary inputData = parentModelItem.Properties[propertyValue.ParentProperty.PropertyName].Dictionary;
+            DynamicArgumentDesignerOptions options = new DynamicArgumentDesignerOptions();
+            options.Title = propertyValue.ParentProperty.DisplayName;
+
+            DynamicArgumentDialog.ShowDialog(parentModelItem, inputData, context, parentModelItem.View, options);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DesignerMetadata.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DesignerMetadata.cs
new file mode 100644 (file)
index 0000000..b4cf11a
--- /dev/null
@@ -0,0 +1,154 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.Activities.Validation;
+    using System.Collections.ObjectModel;
+    using System.ComponentModel;
+    using System.ServiceModel;
+    using System.ServiceModel.Activities;
+    using System.ServiceModel.Activities.Presentation;
+    using System.ServiceModel.Activities.Presentation.Converters;
+    using System.ServiceModel.Presentation;
+    using System.Xml.Linq;
+
+    public class DesignerMetadata : IRegisterMetadata
+    {
+        // Called by the designer to register any design-time metadata.
+        //
+        // Be aware of the accidential performance impact when adding things into this method.
+        // In particular, pay attention to calls that will lead to loading extra assemblies.
+        //
+        public void Register()
+        {
+            AttributeTableBuilder builder = new AttributeTableBuilder();
+
+            //shared component
+            builder.AddCustomAttributes(typeof(Collection<Constraint>), new BrowsableAttribute(false));
+            builder.AddCustomAttributes(typeof(string), new EditorReuseAttribute(false));
+            builder.AddCustomAttributes(typeof(ActivityAction), new EditorReuseAttribute(false));
+            builder.AddCustomAttributes(typeof(XName), new EditorReuseAttribute(false));
+
+            //Flowchart activities
+            FlowchartDesigner.RegisterMetadata(builder);
+            FlowSwitchDesigner.RegisterMetadata(builder);
+            FlowDecisionDesigner.RegisterMetadata(builder);
+
+            // Messaging activities
+            ServiceDesigner.RegisterMetadata(builder);
+
+            // Registering inline for designers for InitializeCorrelation, Send, Receive, SendReply, ReceiveReply activities to avoid calling
+            // their static constructors. This will avoid instantiating the ResourceDictionary for their PropertyValueEditors during designer load.
+            builder.AddCustomAttributes(typeof(Send), new DesignerAttribute(typeof(SendDesigner)));
+            builder.AddCustomAttributes(typeof(Send), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+
+            builder.AddCustomAttributes(typeof(Receive), new DesignerAttribute(typeof(ReceiveDesigner)));
+            builder.AddCustomAttributes(typeof(Receive), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+
+            builder.AddCustomAttributes(typeof(SendReply), new FeatureAttribute(typeof(SendReplyValidationFeature)));
+            builder.AddCustomAttributes(typeof(SendReply), new DesignerAttribute(typeof(SendReplyDesigner)));
+            builder.AddCustomAttributes(typeof(SendReply), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+            CutCopyPasteHelper.AddDisallowedTypeForCopy(typeof(SendReply));
+
+            builder.AddCustomAttributes(typeof(ReceiveReply), new FeatureAttribute(typeof(ReceiveReplyValidationFeature)));
+            builder.AddCustomAttributes(typeof(ReceiveReply), new DesignerAttribute(typeof(ReceiveReplyDesigner)));
+            builder.AddCustomAttributes(typeof(ReceiveReply), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+            CutCopyPasteHelper.AddDisallowedTypeForCopy(typeof(ReceiveReply));
+
+            builder.AddCustomAttributes(typeof(InitializeCorrelation), new DesignerAttribute(typeof(InitializeCorrelationDesigner)));
+            builder.AddCustomAttributes(typeof(InitializeCorrelation), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+
+            TransactedReceiveScopeDesigner.RegisterMetadata(builder);
+            CorrelationScopeDesigner.RegisterMetadata(builder);
+
+            //Procedural activities
+            AssignDesigner.RegisterMetadata(builder);
+            IfElseDesigner.RegisterMetadata(builder);
+            InvokeMethodDesigner.RegisterMetadata(builder);
+            DoWhileDesigner.RegisterMetadata(builder);
+            WhileDesigner.RegisterMetadata(builder);
+            ForEachDesigner.RegisterMetadata(builder);
+            TryCatchDesigner.RegisterMetadata(builder);
+            CatchDesigner.RegisterMetadata(builder);
+            ParallelDesigner.RegisterMetadata(builder);
+            SequenceDesigner.RegisterMetadata(builder);
+            SwitchDesigner.RegisterMetadata(builder);
+            CaseDesigner.RegisterMetadata(builder);
+
+            //Compensation/Transaction
+            CancellationScopeDesigner.RegisterMetadata(builder);
+            CompensableActivityDesigner.RegisterMetadata(builder);
+            TransactionScopeDesigner.RegisterMetadata(builder);
+
+            //Misc activities            
+            PickDesigner.RegisterMetadata(builder);
+            PickBranchDesigner.RegisterMetadata(builder);
+            WriteLineDesigner.RegisterMetadata(builder);
+            NoPersistScopeDesigner.RegisterMetadata(builder);
+
+            InvokeDelegateDesigner.RegisterMetadata(builder);
+
+            // StateMachine
+            StateMachineDesigner.RegisterMetadata(builder);
+            StateDesigner.RegisterMetadata(builder);
+            TransitionDesigner.RegisterMetadata(builder);
+
+            builder.AddCustomAttributes(typeof(AddToCollection<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
+            builder.AddCustomAttributes(typeof(RemoveFromCollection<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
+            builder.AddCustomAttributes(typeof(ClearCollection<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
+            builder.AddCustomAttributes(typeof(ExistsInCollection<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
+
+            builder.AddCustomAttributes(typeof(AddToCollection<>), new DefaultTypeArgumentAttribute(typeof(int)));
+            builder.AddCustomAttributes(typeof(RemoveFromCollection<>), new DefaultTypeArgumentAttribute(typeof(int)));
+            builder.AddCustomAttributes(typeof(ClearCollection<>), new DefaultTypeArgumentAttribute(typeof(int)));
+            builder.AddCustomAttributes(typeof(ExistsInCollection<>), new DefaultTypeArgumentAttribute(typeof(int)));
+
+            MetadataStore.AddAttributeTable(builder.CreateTable());
+
+            MorphHelper.AddPropertyValueMorphHelper(typeof(InArgument<>), MorphHelpers.ArgumentMorphHelper);
+            MorphHelper.AddPropertyValueMorphHelper(typeof(OutArgument<>), MorphHelpers.ArgumentMorphHelper);
+            MorphHelper.AddPropertyValueMorphHelper(typeof(InOutArgument<>), MorphHelpers.ArgumentMorphHelper);
+            MorphHelper.AddPropertyValueMorphHelper(typeof(ActivityAction<>), MorphHelpers.ActivityActionMorphHelper);
+            MorphHelper.AddPropertyValueMorphHelper(typeof(ActivityFunc<,>), MorphHelpers.ActivityFuncMorphHelper);
+
+            // There is no need to keep an reference to this delayed worker since the AppDomain event handler will do it.
+            RegisterMetadataDelayedWorker delayedWorker = new RegisterMetadataDelayedWorker();
+            delayedWorker.RegisterMetadataDelayed("System.Workflow.Runtime", InteropDesigner.RegisterMetadata);
+            delayedWorker.RegisterMetadataDelayed("System.ServiceModel", RegisterMetadataForMessagingActivitiesSearchMetadata);
+            delayedWorker.RegisterMetadataDelayed("System.ServiceModel", RegisterMetadataForMessagingActivitiesPropertyEditors);
+            delayedWorker.WorkNowIfApplicable();
+        }
+
+        private static void RegisterMetadataForMessagingActivitiesPropertyEditors(AttributeTableBuilder builder)
+        {
+            EndpointDesigner.RegisterMetadata(builder);
+
+            builder.AddCustomAttributes(typeof(InArgument<CorrelationHandle>), new EditorReuseAttribute(false));
+            builder.AddCustomAttributes(typeof(InArgument<Uri>), new EditorReuseAttribute(false));
+            builder.AddCustomAttributes(typeof(MessageQuerySet), PropertyValueEditor.CreateEditorAttribute(typeof(CorrelatesOnValueEditor)));
+        }
+
+        private static void RegisterMetadataForMessagingActivitiesSearchMetadata(AttributeTableBuilder builder)
+        {
+            builder.AddCustomAttributes(typeof(SendMessageContent),
+                new SearchableStringConverterAttribute(typeof(SendMessageContentSearchableStringConverter)));
+            builder.AddCustomAttributes(typeof(SendParametersContent),
+                new SearchableStringConverterAttribute(typeof(SendParametersContentSearchableStringConverter)));
+            builder.AddCustomAttributes(typeof(ReceiveMessageContent),
+                new SearchableStringConverterAttribute(typeof(ReceiveMessageContentSearchableStringConverter)));
+            builder.AddCustomAttributes(typeof(ReceiveParametersContent),
+                new SearchableStringConverterAttribute(typeof(ReceiveParametersContentSearchableStringConverter)));
+            builder.AddCustomAttributes(typeof(XPathMessageQuery),
+                new SearchableStringConverterAttribute(typeof(XPathMessageQuerySearchableStringConverter)));
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DisplayNameConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DisplayNameConverter.cs
new file mode 100644 (file)
index 0000000..408d49a
--- /dev/null
@@ -0,0 +1,37 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Windows.Data;
+
+    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Justification = "Used in XAML")]
+    internal sealed class DisplayNameConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            string name = value as string;
+            if (name == null)
+            {
+                return SR.NullName;
+            }
+            else if (name == string.Empty)
+            {
+                return SR.EmptyName;
+            }
+
+            return name;
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotImplementedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DoWhileDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DoWhileDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..011d3cb
--- /dev/null
@@ -0,0 +1,29 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+
+    /// <summary>
+    /// Interaction logic for WhileDesigner.xaml
+    /// </summary>
+    partial class DoWhileDesigner
+    {
+        public DoWhileDesigner()
+        {
+            InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(DoWhile);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(DoWhileDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooser.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooser.xaml.cs
new file mode 100644 (file)
index 0000000..16b9b3a
--- /dev/null
@@ -0,0 +1,103 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.ComponentModel;
+    using System.Windows.Controls;
+
+    internal partial class DynamicActivityPropertyChooser : UserControl
+    {
+        private DynamicActivityPropertyChooserViewModel model;
+
+        public DynamicActivityPropertyChooser()
+        {
+            this.Model = new DynamicActivityPropertyChooserViewModel();
+
+            this.InitializeComponent();
+
+            this.Model.PropertyChanged += new PropertyChangedEventHandler(this.OnModelPropertyChanged);
+            this.comboBox.DropDownOpened += new EventHandler(this.OnComboBoxDropDownOpened);
+        }
+
+        public event SelectedPropertyNameChangedEventHandler SelectedPropertyNameChanged;
+
+        public DynamicActivityPropertyChooserViewModel Model
+        {
+            get
+            {
+                return this.model;
+            }
+
+            set
+            {
+                this.model = value;
+            }
+        }
+
+        public ModelItemCollection Properties
+        {
+            set
+            {
+                this.Model.Properties = value;
+            }
+        }
+
+        public Predicate<DynamicActivityProperty> Filter
+        {
+            set
+            {
+                this.Model.Filter = value;
+            }
+        }
+
+        public string SelectedPropertyName
+        {
+            get
+            {
+                return this.Model.SelectedPropertyName;
+            }
+
+            set
+            {
+                this.Model.SelectedPropertyName = value;
+            }
+        }
+
+        public bool IsUpdatingDropDownItems
+        {
+            get
+            {
+                return this.Model.IsUpdatingDropDownItems;
+            }
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            this.DataContext = this.Model;
+            base.OnInitialized(e);
+        }
+
+        private void OnComboBoxDropDownOpened(object sender, EventArgs e)
+        {
+            this.Model.UpdateDropDownItems();
+        }
+
+        private void OnModelPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "SelectedPropertyName")
+            {
+                if (this.SelectedPropertyNameChanged != null)
+                {
+                    this.SelectedPropertyNameChanged(this, new SelectedPropertyNameChangedEventArgs(this.Model.SelectedPropertyName));
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooserViewModel.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooserViewModel.cs
new file mode 100644 (file)
index 0000000..59284fd
--- /dev/null
@@ -0,0 +1,152 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Collections.Generic;
+    using System.Collections.ObjectModel;
+
+    internal class DynamicActivityPropertyChooserViewModel : ViewModel
+    {
+        private string selectedPropertyName;
+        private ModelItemCollection properties;
+        private Predicate<DynamicActivityProperty> filter;
+
+        private ReadOnlyCollection<DynamicActivityProperty> dropDownItems;
+
+        public ModelItemCollection Properties
+        {
+            private get
+            {
+                return this.properties;
+            }
+
+            set
+            {
+                this.properties = value;
+            }
+        }
+
+        public Predicate<DynamicActivityProperty> Filter
+        {
+            private get
+            {
+                return this.filter;
+            }
+
+            set
+            {
+                this.filter = value;
+            }
+        }
+
+        public ReadOnlyCollection<DynamicActivityProperty> DropDownItems
+        {
+            get
+            {
+                if (this.dropDownItems == null)
+                {
+                    this.dropDownItems = new ReadOnlyCollection<DynamicActivityProperty>(new List<DynamicActivityProperty>());
+                }
+
+                return this.dropDownItems;
+            }
+
+            private set
+            {
+                if (this.dropDownItems != value)
+                {
+                    this.dropDownItems = value;
+                    NotifyPropertyChanged("DropDownItems");
+                }
+            }
+        }
+
+        public bool IsUpdatingDropDownItems { get; private set; }
+
+        public string SelectedPropertyName
+        {
+            get
+            {
+                return this.selectedPropertyName;
+            }
+
+            set
+            {
+                if (this.selectedPropertyName != value)
+                {
+                    this.selectedPropertyName = value;
+
+                    this.UpdateDropDownItems();
+
+                    this.NotifyPropertyChanged("SelectedPropertyName");
+                }
+            }
+        }
+
+        public void UpdateDropDownItems()
+        {
+            if (this.IsUpdatingDropDownItems)
+            {
+                return;
+            }
+
+            List<DynamicActivityProperty> list = new List<DynamicActivityProperty>();
+            bool currentSelectionFound = false;
+
+            if (this.Properties != null)
+            {
+                foreach (ModelItem modelItem in this.Properties)
+                {
+                    DynamicActivityProperty property = modelItem.GetCurrentValue() as DynamicActivityProperty;
+
+                    if (property != null)
+                    {
+                        if (this.Filter == null || this.Filter(property))
+                        {
+                            DynamicActivityProperty clone = new DynamicActivityProperty();
+                            clone.Name = property.Name;
+                            clone.Type = property.Type;
+                            list.Add(clone);
+                            if (StringComparer.Ordinal.Equals(this.SelectedPropertyName, property.Name))
+                            {
+                                currentSelectionFound = true;
+                            }
+                        }
+                    }
+                }
+            }
+
+            string savedSelectedPropertyName = this.SelectedPropertyName;
+            if (!currentSelectionFound)
+            {
+                if (!string.IsNullOrEmpty(this.SelectedPropertyName))
+                {
+                    DynamicActivityProperty unresolvedProperty = new DynamicActivityProperty();
+                    unresolvedProperty.Name = this.SelectedPropertyName;
+                    list.Add(unresolvedProperty);
+                }
+            }
+
+            list.Sort(new DynamicaActivityPropertyComparer());
+
+            this.IsUpdatingDropDownItems = true;
+            this.DropDownItems = new ReadOnlyCollection<DynamicActivityProperty>(list);
+            this.SelectedPropertyName = savedSelectedPropertyName;
+            this.IsUpdatingDropDownItems = false;
+        }
+
+        private class DynamicaActivityPropertyComparer : IComparer<DynamicActivityProperty>
+        {
+            public int Compare(DynamicActivityProperty x, DynamicActivityProperty y)
+            {
+                return string.CompareOrdinal(x.Name, y.Name);
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyToTooltipConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyToTooltipConverter.cs
new file mode 100644 (file)
index 0000000..e8e9b83
--- /dev/null
@@ -0,0 +1,40 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Globalization;
+    using System.Windows.Data;
+    using Microsoft.Activities.Presentation;
+
+    internal sealed class DynamicActivityPropertyToTooltipConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            DynamicActivityProperty property = value as DynamicActivityProperty;
+
+            if (property == null)
+            {
+                return null;
+            }
+
+            if (property.Type == null)
+            {
+                return string.Format(CultureInfo.CurrentUICulture, SR.PropertyReferenceNotResolved, property.Name);
+            }
+            else
+            {
+                return TypeNameHelper.GetDisplayName(property.Type, false);
+            }
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotImplementedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemShowExpandedMultiValueConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemShowExpandedMultiValueConverter.cs
new file mode 100644 (file)
index 0000000..8560c4c
--- /dev/null
@@ -0,0 +1,47 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.View;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Windows;
+    using System.Windows.Data;
+
+    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Justification = "Used in XAML")]
+    internal sealed class ExpandableItemShowExpandedMultiValueConverter : IMultiValueConverter
+    {
+        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
+        {
+            if (values[0] != DependencyProperty.UnsetValue && values[1] != DependencyProperty.UnsetValue)
+            {
+                bool isExpanded = (bool)values[0];
+                bool isPinned = (bool)values[1];
+                bool shouldExpandAll = (bool)values[2];
+                bool shouldCollapseAll = (bool)values[3];
+                ExpandableItemWrapper wrapper = (ExpandableItemWrapper)values[4];
+
+                if ((!shouldExpandAll || isExpanded)
+                    && (!shouldCollapseAll || !isExpanded))
+                {
+                    wrapper.SetPinState(false);
+                }
+
+                return ViewUtilities.ShouldShowExpanded(isExpanded, shouldExpandAll, shouldCollapseAll, wrapper.IsPinned);
+            }
+            else
+            {
+                return false;
+            }
+        }
+
+        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotSupportedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemWrapper.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemWrapper.cs
new file mode 100644 (file)
index 0000000..eb52aa6
--- /dev/null
@@ -0,0 +1,70 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Model;
+    using System.ComponentModel;
+
+    internal class ExpandableItemWrapper : INotifyPropertyChanged
+    {
+        private bool isExpanded = false;
+        private bool isPinned = false;
+
+        public ExpandableItemWrapper()
+        {
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+
+        public bool IsExpanded
+        {
+            get
+            {
+                return this.isExpanded;
+            }
+
+            set
+            {
+                this.isExpanded = value;
+                this.NotifyPropertyChanged("IsExpanded");
+            }
+        }
+
+        public bool IsPinned
+        {
+            get
+            {
+                return this.isPinned;
+            }
+
+            set
+            {
+                this.isPinned = value;
+                this.NotifyPropertyChanged("IsPinned");
+            }
+        }
+
+        public ModelItem Item
+        {
+            get;
+            set;
+        }
+
+        internal void SetPinState(bool isPinned)
+        {
+            this.isPinned = isPinned;
+        }
+
+        private void NotifyPropertyChanged(string propertyName)
+        {
+            if (this.PropertyChanged != null)
+            {
+                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpressionToExpressionTextConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpressionToExpressionTextConverter.cs
new file mode 100644 (file)
index 0000000..27efb89
--- /dev/null
@@ -0,0 +1,36 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Windows.Media;
+    using System.Windows.Data;
+    using System.Windows;
+    using System.Globalization;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+
+    class ExpressionToExpressionTextConverter : IValueConverter
+    {
+
+        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            string convertedValue = null;
+            ModelItem valueMI = value as ModelItem;
+            if (valueMI != null)
+            {
+                convertedValue = ExpressionHelper.GetExpressionString(valueMI.GetCurrentValue() as Activity, valueMI.Parent);
+            }
+            return convertedValue;
+        }
+
+
+        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotSupportedException());
+        }
+
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericForEachWithBodyFactory.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericForEachWithBodyFactory.cs
new file mode 100644 (file)
index 0000000..c660ee2
--- /dev/null
@@ -0,0 +1,26 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation.Factories
+{
+    using System.Activities.Presentation;
+    using System.Windows;
+
+    public sealed class ForEachWithBodyFactory<T> : IActivityTemplateFactory
+    {
+        public Activity Create(DependencyObject target)
+        {
+            return new System.Activities.Statements.ForEach<T>()
+            {
+                Body = new ActivityAction<T>()
+                {
+                    Argument = new DelegateInArgument<T>()
+                    {
+                        Name = "item"
+                    }
+                }
+            };
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericParallelForEachWithBodyFactory.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericParallelForEachWithBodyFactory.cs
new file mode 100644 (file)
index 0000000..42b22c0
--- /dev/null
@@ -0,0 +1,26 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation.Factories
+{
+    using System.Activities.Presentation;
+    using System.Windows;
+
+    public sealed class ParallelForEachWithBodyFactory<T> : IActivityTemplateFactory
+    {
+        public Activity Create(DependencyObject target)
+        {
+            return new System.Activities.Statements.ParallelForEach<T>()
+            {
+                Body = new ActivityAction<T>()
+                {
+                    Argument = new DelegateInArgument<T>()
+                    {
+                        Name = "item"
+                    }
+                }
+            };
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/PickWithTwoBranchesFactory.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/PickWithTwoBranchesFactory.cs
new file mode 100644 (file)
index 0000000..d0e3c22
--- /dev/null
@@ -0,0 +1,30 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation.Factories
+{
+    using System.Activities.Presentation;
+    using System.Windows;
+
+    public sealed class PickWithTwoBranchesFactory : IActivityTemplateFactory
+    {
+        public Activity Create(DependencyObject target)
+        {
+            return new System.Activities.Statements.Pick
+            {
+                Branches =
+                {
+                    new System.Activities.Statements.PickBranch
+                    {
+                        DisplayName = "Branch1"
+                    },
+                    new System.Activities.Statements.PickBranch
+                    {
+                        DisplayName = "Branch2"
+                    }
+                }
+            };
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/StateMachineWithInitialStateFactory.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/StateMachineWithInitialStateFactory.cs
new file mode 100644 (file)
index 0000000..6ed316b
--- /dev/null
@@ -0,0 +1,36 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation.Factories
+{
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Windows;
+    using System.Activities.Statements;
+
+    /// <summary>
+    /// The type that is added to the toolbox, which defines the factory method 
+    /// that creates an instance of StateMachine Activity with an initial State.
+    /// </summary>
+    public sealed class StateMachineWithInitialStateFactory : IActivityTemplateFactory
+    {
+        /// <summary>
+        /// Creates an instance of StateMachine Activity with an initial State.
+        /// </summary>
+        /// <param name="target">Not used.</param>
+        /// <returns>An instance of StateMachine Activity with an initial State.</returns>
+        public Activity Create(DependencyObject target)
+        {
+            State state = new State()
+            {
+                DisplayName = StateContainerEditor.DefaultStateDisplayName + "1"
+            };
+            return new StateMachine()
+            {
+                States = { state },
+                InitialState = state
+            };
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FakeRoot.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FakeRoot.cs
new file mode 100644 (file)
index 0000000..48a04cd
--- /dev/null
@@ -0,0 +1,11 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    class FakeRoot
+    {
+        public StartNode StartNode { get; set; }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FinalState.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FinalState.cs
new file mode 100644 (file)
index 0000000..4cbffae
--- /dev/null
@@ -0,0 +1,15 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    /// <summary>
+    /// The type that is added to the toolbox, which is used to create an instance 
+    /// of State with the IsFinal property set to true and the DisplayName property 
+    /// set to "Final".
+    /// </summary>
+    public sealed class FinalState
+    {
+    }
+}
\ No newline at end of file
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..c992957
--- /dev/null
@@ -0,0 +1,272 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Annotations;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Windows;
+    using System.Windows.Automation.Peers;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Documents;
+    using System.Windows.Media;
+    using Microsoft.Activities.Presentation;
+
+    partial class FlowDecisionDesigner
+    {
+        public static readonly DependencyProperty ExpressionButtonVisibilityProperty =
+            DependencyProperty.Register("ExpressionButtonVisibility", typeof(Visibility), typeof(FlowDecisionDesigner));
+
+        public static readonly DependencyProperty ExpressionButtonColorProperty =
+            DependencyProperty.Register("ExpressionButtonColor", typeof(Brush), typeof(FlowDecisionDesigner));
+
+        static readonly DependencyProperty ShowAllConditionsProperty =
+            DependencyProperty.Register("ShowAllConditions", typeof(bool), typeof(FlowDecisionDesigner),
+            new UIPropertyMetadata(new PropertyChangedCallback(OnShowAllConditionsChanged)));
+
+        bool isPinned;
+        bool expressionShown = false;
+
+        private AnnotationManager annotationManager;
+
+        public FlowDecisionDesigner()
+        {
+            InitializeComponent();
+            this.Loaded += (sender, e) =>
+            {
+                //UnRegistering because of 137896: Inside tab control multiple Loaded events happen without an Unloaded event.
+                this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
+                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
+                OnModelItemPropertyChanged(this.ModelItem, new PropertyChangedEventArgs("Condition"));
+
+                SetupBinding();
+
+                if (this.Context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName.IsLessThan45())
+                {
+                    this.displayNameTextBox.IsReadOnly = true;
+                }
+
+                this.annotationManager.Initialize();
+            };
+            this.Unloaded += (sender, e) =>
+            {
+                this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
+                this.annotationManager.Uninitialize();
+            };
+            this.MouseEnter += (sender, e) =>
+            {
+                Update();
+            };
+            this.MouseLeave += (sender, e) =>
+            {
+                Update();
+            };
+
+            this.InitializeAnnotation();
+        }
+
+        private void InitializeAnnotation()
+        {
+            this.annotationManager = new AnnotationManager(this);
+            this.annotationManager.AnnotationVisualProvider = new FlowDecisionDesignerAnnotationVisualProvider(this);
+        }
+
+        void SetupBinding()
+        {
+            Binding showAllConditionsBinding = new Binding();
+            showAllConditionsBinding.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(FlowchartDesigner), 1);
+            showAllConditionsBinding.Path = new PropertyPath(FlowchartDesigner.ShowAllConditionsProperty);
+            showAllConditionsBinding.Mode = BindingMode.OneWay;
+
+            BindingOperations.SetBinding(this, FlowDecisionDesigner.ShowAllConditionsProperty, showAllConditionsBinding);
+        }
+
+        public Visibility ExpressionButtonVisibility
+        {
+            get { return (Visibility)GetValue(ExpressionButtonVisibilityProperty); }
+            set { SetValue(ExpressionButtonVisibilityProperty, value); }
+        }
+
+        public Brush ExpressionButtonColor
+        {
+            get { return (Brush)GetValue(ExpressionButtonColorProperty); }
+            set { SetValue(ExpressionButtonColorProperty, value); }
+        }
+
+        public bool ExpressionShown
+        {
+            get { return this.expressionShown; }
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(FlowDecision);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(FlowDecisionDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("True"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("False"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Condition"), new HidePropertyInOutlineViewAttribute());
+            builder.AddCustomAttributes(type, new FeatureAttribute(typeof(FlowDecisionLabelFeature)));
+            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute
+            {
+                AllowDrillIn = false,
+                OutlineViewIconProvider = (modelItem) =>
+                {
+                    if (modelItem != null)
+                    {
+                        ResourceDictionary icons = EditorResources.GetIcons();
+                        if (icons.Contains("FlowDecisionIcon") && icons["FlowDecisionIcon"] is DrawingBrush)
+                        {
+                            return (DrawingBrush)icons["FlowDecisionIcon"];
+                        }
+                    }
+
+                    return null;
+                }
+            });
+        }
+
+        protected override AutomationPeer OnCreateAutomationPeer()
+        {
+            return new FlowchartExpressionAutomationPeer(this, base.OnCreateAutomationPeer());
+        }
+
+
+        void OnExpressionButtonClicked(object sender, RoutedEventArgs e)
+        {
+            this.isPinned = !this.isPinned;
+            Update();
+        }
+
+        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "Condition")
+            {
+                Update();
+            }
+        }
+
+        void Update()
+        {
+            Activity expressionActivity = this.ModelItem.Properties["Condition"].ComputedValue as Activity;
+            string expressionString = ExpressionHelper.GetExpressionString(expressionActivity, this.ModelItem);
+            bool expressionSpecified = !string.IsNullOrEmpty(expressionString);
+            if (!expressionSpecified)
+            {
+                this.isPinned = false;
+            }
+
+            this.ExpressionButtonVisibility = expressionSpecified ? Visibility.Visible : Visibility.Collapsed;
+
+            if (this.isPinned)
+            {
+                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonPressedBrush;
+            }
+            else if (this.IsMouseOver)
+            {
+                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonMouseOverBrush;
+            }
+            else
+            {
+                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonBrush;
+            }
+            expressionShown = false;
+            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);
+            if (adornerLayer != null)
+            {
+                Adorner[] adorners = adornerLayer.GetAdorners(this);
+                if (adorners != null)
+                {
+                    foreach (Adorner adorner in adorners)
+                    {
+                        if (adorner is FlowchartExpressionAdorner)
+                        {
+                            adornerLayer.Remove(adorner);
+                        }
+                    }
+                }
+                if ((this.IsMouseOver && expressionSpecified) || this.isPinned)
+                {
+                    expressionShown = true;
+                    adornerLayer.Add(new FlowchartExpressionAdorner(this));
+                }
+            }
+        }
+
+        static void OnShowAllConditionsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
+        {
+            if (e.NewValue != DependencyProperty.UnsetValue)
+            {
+                FlowDecisionDesigner designer = obj as FlowDecisionDesigner;
+                designer.OnShowAllConditionsChanged((bool)e.NewValue);
+            }
+        }
+
+        void OnShowAllConditionsChanged(bool isOpen)
+        {
+            this.isPinned = isOpen;
+            Update();
+        }
+
+        protected internal override void OnEditAnnotation()
+        {
+            this.annotationManager.OnEditAnnotation();
+        }
+
+        private class FlowDecisionDesignerAnnotationVisualProvider : IAnnotationVisualProvider
+        {
+            private FlowDecisionDesigner designer;
+            private IAnnotationIndicator indicator;
+            private IFloatingAnnotation floatingAnnotation;
+            private IDockedAnnotation dockedAnnotation;
+
+            public FlowDecisionDesignerAnnotationVisualProvider(FlowDecisionDesigner designer)
+            {
+                this.designer = designer;
+            }
+
+            public IAnnotationIndicator GetAnnotationIndicator()
+            {
+                if (this.indicator == null)
+                {
+                    this.indicator = new UIElementToAnnotationIndicatorAdapter(this.designer.defaultAnnotationIndicator);
+                }
+
+                return this.indicator;
+            }
+
+            public IFloatingAnnotation GetFloatingAnnotation()
+            {
+                if (this.floatingAnnotation == null)
+                {
+                    this.floatingAnnotation = new FloatingAnnotationView();
+                }
+
+                return this.floatingAnnotation;
+            }
+
+            public IDockedAnnotation GetDockedAnnotation()
+            {
+                if (this.dockedAnnotation == null)
+                {
+                    DockedAnnotationView view = new DockedAnnotationView();
+                    Binding binding = new Binding("ModelItem.AnnotationText");
+                    view.SetBinding(DockedAnnotationView.AnnotationTextProperty, binding);
+                    view.Visibility = Visibility.Collapsed;
+                    Grid.SetRow(view, 0);
+
+                    this.dockedAnnotation = view;
+                    this.designer.rootGrid.Children.Insert(0, view);
+                }
+
+                return this.dockedAnnotation;
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionLabelFeature.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionLabelFeature.cs
new file mode 100644 (file)
index 0000000..0bbcbb5
--- /dev/null
@@ -0,0 +1,22 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Collections.Generic;
+
+    class FlowDecisionLabelFeature : ViewStateAttachedPropertyFeature
+    {
+        protected override IEnumerable<AttachedPropertyInfo> AttachedProperties
+        {
+            get
+            {
+                yield return new AttachedPropertyInfo<string> { PropertyName = "TrueLabel", DefaultValue = SR.FCFlowDecisionTrueMarker };
+                yield return new AttachedPropertyInfo<string> { PropertyName = "FalseLabel", DefaultValue = SR.FCFlowDecisionFalseMarker };
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchCaseEditorDialog.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchCaseEditorDialog.cs
new file mode 100644 (file)
index 0000000..8073840
--- /dev/null
@@ -0,0 +1,125 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//-----------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Diagnostics;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Windows.Threading;
+    using System.Runtime;
+    using System.Collections.Generic;
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Presentation.View;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Collections.ObjectModel;
+    using System.Globalization;
+
+    sealed class FlowSwitchCaseEditorDialog : WorkflowElementDialog
+    {
+        static DependencyProperty caseProperty = DependencyProperty.Register("Case", typeof(object), typeof(FlowSwitchCaseEditorDialog), new UIPropertyMetadata(null));
+        Type genericType;
+        CaseKeyBox caseKeyBox;
+
+        public FlowSwitchCaseEditorDialog(ModelItem activity, EditingContext context, DependencyObject owner, string title, Type genericType)
+        {
+            this.WindowSizeToContent = SizeToContent.Manual;
+            this.ModelItem = activity;
+            this.Context = context;
+            this.Owner = owner;
+            this.Title = title;
+            this.genericType = genericType;
+            this.WindowResizeMode = ResizeMode.NoResize;
+            this.MinWidth = 300;
+            this.MaxWidth = 300;
+            this.MinHeight = 120;
+            this.MaxHeight = 120;
+
+            caseKeyBox = new CaseKeyBox()
+            {
+                DisplayHintText = true,
+                Visibility = Visibility.Visible,
+                ValueType = genericType,
+                HorizontalContentAlignment = HorizontalAlignment.Stretch,
+                VerticalAlignment = VerticalAlignment.Center,
+                Width = Double.NaN,
+                CommitExplicitly = true,
+                LabelText = StringResourceDictionary.Instance.GetString("addCaseLabel"),
+            };
+            caseKeyBox.ViewModel.DataTemplateName = CaseKeyBoxViewModel.BoxesTemplate;
+            caseKeyBox.ViewModel.IsBoxOnly = true;
+            caseKeyBox.SetBinding(CaseKeyBox.ValueProperty, new Binding()
+            {
+                Source = this,
+                Path = new PropertyPath(FlowSwitchCaseEditorDialog.caseProperty),
+                Mode = BindingMode.TwoWay
+            });
+            caseKeyBox.CaseKeyValidationCallback = this.ValidateCaseKey;
+            caseKeyBox.ValueCommitted += (sender, e) =>
+                {
+                    this.CloseDialog(true);
+                };
+            caseKeyBox.EditCancelled += (sender, e) =>
+                {
+                    this.CloseDialog(false);
+                };
+
+            this.Content = caseKeyBox;
+
+            this.OnOk = () =>
+                {
+                    caseKeyBox.CommitChanges();
+                    return false; // ValueCommitted event handler will handle CloseDialog
+                };
+        }
+
+        bool ValidateCaseKey(object obj, out string reason)
+        {
+            return GenericFlowSwitchHelper.ValidateCaseKey(obj,
+                this.ModelItem.Properties["Cases"],
+                this.genericType,
+                out reason);
+        }
+
+        protected override void OnKeyDown(KeyEventArgs e)
+        {
+            if (e.Key == Key.Enter)
+            {
+                caseKeyBox.CommitChanges();
+                e.Handled = true;
+            }
+            else if (e.Key == Key.Escape)
+            {
+                caseKeyBox.CancelChanges();
+                e.Handled = true;
+            }
+        }
+
+        public string CaseName
+        {
+            get
+            {
+                return GenericFlowSwitchHelper.GetString(GetValue(caseProperty), this.genericType);
+            }
+        }
+
+        public object Case
+        {
+            get
+            {
+                return GetValue(caseProperty);
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDefaultLinkFeature.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDefaultLinkFeature.cs
new file mode 100644 (file)
index 0000000..cb213de
--- /dev/null
@@ -0,0 +1,27 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.ComponentModel;
+    using System.Runtime.Versioning;
+    using Microsoft.Activities.Presentation;
+
+    internal class FlowSwitchDefaultLinkFeature : Feature
+    {
+        public override void Initialize(EditingContext context, Type modelType)
+        {
+            if (context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName.IsLessThan45())
+            {
+                AttributeTableBuilder builder = new AttributeTableBuilder();
+                builder.AddCustomAttributes(typeof(FlowSwitchDefaultLink<>), "DefaultCaseDisplayName", BrowsableAttribute.No);
+                MetadataStore.AddAttributeTable(builder.CreateTable());
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..5826525
--- /dev/null
@@ -0,0 +1,330 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Annotations;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.Internal.PropertyEditing;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.ComponentModel;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Automation.Peers;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Documents;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using Microsoft.Activities.Presentation;
+
+    partial class FlowSwitchDesigner
+    {
+        public static readonly DependencyProperty ExpressionButtonVisibilityProperty =
+            DependencyProperty.Register("ExpressionButtonVisibility", typeof(Visibility), typeof(FlowSwitchDesigner));
+
+        public static readonly DependencyProperty ExpressionButtonColorProperty =
+            DependencyProperty.Register("ExpressionButtonColor", typeof(Brush), typeof(FlowSwitchDesigner));
+
+        static readonly DependencyProperty ShowAllConditionsProperty =
+            DependencyProperty.Register("ShowAllConditions", typeof(bool), typeof(FlowSwitchDesigner),
+            new UIPropertyMetadata(new PropertyChangedCallback(OnShowAllConditionsChanged)));
+
+        bool isPinned;
+        bool expressionShown = false;
+
+        private AnnotationManager annotationManager;
+
+        public FlowSwitchDesigner()
+        {
+            InitializeComponent();
+            this.Loaded += (sender, e) =>
+            {
+                //UnRegistering because of 137896: Inside tab control multiple Loaded events happen without an Unloaded event.
+                this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
+                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
+                OnModelItemPropertyChanged(this.ModelItem, new PropertyChangedEventArgs("Expression"));
+
+                SetupBinding();
+
+                if (this.Context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName.IsLessThan45())
+                {
+                    this.displayNameTextBox.IsReadOnly = true;
+                }
+
+                this.annotationManager.Initialize();
+            };
+            this.Unloaded += (sender, e) =>
+            {
+                this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
+                this.annotationManager.Uninitialize();
+            };
+            this.MouseEnter += (sender, e) =>
+            {
+                Update();
+            };
+            this.MouseLeave += (sender, e) =>
+            {
+                Update();
+            };
+
+            this.InitializeAnnotation();
+        }
+
+        private void InitializeAnnotation()
+        {
+            this.annotationManager = new AnnotationManager(this);
+            this.annotationManager.AnnotationVisualProvider = new FlowSwitchDesignerAnnotationVisualProvider(this);
+        }
+
+        void SetupBinding()
+        {
+            Binding showAllConditionsBinding = new Binding();
+            showAllConditionsBinding.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(FlowchartDesigner), 1);
+            showAllConditionsBinding.Path = new PropertyPath(FlowchartDesigner.ShowAllConditionsProperty);
+            showAllConditionsBinding.Mode = BindingMode.OneWay;
+
+            BindingOperations.SetBinding(this, FlowSwitchDesigner.ShowAllConditionsProperty, showAllConditionsBinding);
+        }
+
+        public Visibility ExpressionButtonVisibility
+        {
+            get { return (Visibility)GetValue(ExpressionButtonVisibilityProperty); }
+            set { SetValue(ExpressionButtonVisibilityProperty, value); }
+        }
+
+        public Brush ExpressionButtonColor
+        {
+            get { return (Brush)GetValue(ExpressionButtonColorProperty); }
+            set { SetValue(ExpressionButtonColorProperty, value); }
+        }
+
+        public bool ExpressionShown
+        {
+            get { return this.expressionShown; }
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(System.Activities.Statements.FlowSwitch<>);
+
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(FlowSwitchDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Default"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute
+            {
+                AllowDrillIn = false,
+                OutlineViewIconProvider = (modelItem) =>
+                {
+                    if (modelItem != null)
+                    {
+                        ResourceDictionary icons = EditorResources.GetIcons();
+                        if (icons.Contains("FlowSwitchIcon") && icons["FlowSwitchIcon"] is DrawingBrush)
+                        {
+                            return (DrawingBrush)icons["FlowSwitchIcon"];
+                        }
+                    }
+
+                    return null;
+                }
+            });
+            builder.AddCustomAttributes(type, new FeatureAttribute(typeof(FlowSwitchLabelFeature)));
+            builder.AddCustomAttributes(type, new FeatureAttribute(typeof(FlowSwitchDefaultLinkFeature)));
+
+            builder.AddCustomAttributes(type, type.GetProperty("Cases"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false, ChildNodePrefix = "Case : " });
+            builder.AddCustomAttributes(type, type.GetProperty("Expression"), new HidePropertyInOutlineViewAttribute());
+
+            Type flowSwitchLinkType = typeof(FlowSwitchCaseLink<>);
+            builder.AddCustomAttributes(flowSwitchLinkType, "Case", PropertyValueEditor.CreateEditorAttribute(typeof(FlowSwitchLinkCasePropertyEditor)), new EditorReuseAttribute(false));
+        }
+
+        protected override AutomationPeer OnCreateAutomationPeer()
+        {
+            return new FlowchartExpressionAutomationPeer(this, base.OnCreateAutomationPeer());
+        }
+
+        void OnExpressionButtonClicked(object sender, RoutedEventArgs e)
+        {
+            this.isPinned = !this.isPinned;
+        }
+
+        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "Expression")
+            {
+                Update();
+            }
+            else if (e.PropertyName == "DefaultCaseDisplayName")
+            {
+                // To fix 218600 without losing PropertyGrid focus (Bug 210326), the only workaround is to
+                // update the connector label manually, because FlowSwitchLink.ModelItem["DefaultCaseDisplayName"]
+                // is a FakeModelPropertyImpl, and would not generate a Undo unit 
+                // (FakeModelNotifyPropertyChange.GetInverse() returns null).
+                // However, there is a known issue with PropertyGrid bound to a fake ModelItem.  The workaround is 
+                // to shift the focus to the FlowchartDesigner IF the keyboard focus is on the connector when the user
+                // calls Undo/Redo, to avoid the problem of PropertyGrid not refreshable.
+                FlowchartDesigner flowchartDesigner = VisualTreeUtils.FindVisualAncestor<FlowchartDesigner>(this);
+                Fx.Assert(null != flowchartDesigner, "flowchart designer cannot be null because FlowswitchDesigner must exist within the same visual tree ofthe parent Flowchart.");
+
+                if (null != flowchartDesigner &&
+                    null != this.ModelItem.Properties["Default"].Value &&
+                    this.Context.Services.GetService<UndoEngine>().IsUndoRedoInProgress)
+                {
+                    // the designer is available
+                    Connector connector = flowchartDesigner.GetLinkOnCanvas(this.ModelItem, this.ModelItem.Properties["Default"].Value, "Default");
+                    Fx.Assert(null != connector, "Connector should not be null.");
+                    ModelItem linkModelItem = FlowchartDesigner.GetLinkModelItem(connector);
+                    Fx.Assert(linkModelItem is FakeModelItemImpl, "ModelItem of FlowSwitch link is fake.");
+                    IFlowSwitchDefaultLink link = (IFlowSwitchDefaultLink)linkModelItem.GetCurrentValue();
+                    string defaultDisplayName =
+                        (string)this.ModelItem.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].Value.GetCurrentValue();
+
+                    if (link.DefaultCaseDisplayName != defaultDisplayName)
+                    {
+                        // the purpose of re-setting the link value during Undo/Redo is to update the FlowSwitch label
+                        using (ModelEditingScope scope = this.ModelItem.BeginEdit(SR.FlowSwitchDefaultCaseDisplayNameEditingScopeDesc))
+                        {
+                            linkModelItem.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].SetValue(defaultDisplayName);
+                            link.DefaultCaseDisplayName = defaultDisplayName;
+                            scope.Complete();
+                        }
+
+                        if (Selection.IsSelection(linkModelItem))
+                        {
+                            // cause the connector to lose focus, because the PropertyGrid would not have focus.
+                            // this scenario only happens if the user explicitly selects the FlowSwitch link after
+                            // editing the DefaultDisplayName.  This behavior is only a workaround due to the fact
+                            // that PropertyGrid does not receive update from change in a FakeModelPropertyImpl 
+                            // (i.e. FlowSwitchLink).
+                            Keyboard.ClearFocus();
+                            Selection.SelectOnly(this.Context, this.ModelItem);
+                            linkModelItem.Highlight();
+                        }
+                    }
+                }
+            }
+        }
+
+        void Update()
+        {
+            Activity expressionActivity = this.ModelItem.Properties["Expression"].ComputedValue as Activity;
+            string expressionString = ExpressionHelper.GetExpressionString(expressionActivity, this.ModelItem);
+            bool expressionSpecified = !string.IsNullOrEmpty(expressionString);
+            if (!expressionSpecified)
+            {
+                this.isPinned = false;
+            }
+
+            this.ExpressionButtonVisibility = expressionSpecified ? Visibility.Visible : Visibility.Collapsed;
+
+            if (this.isPinned)
+            {
+                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonPressedBrush;
+            }
+            else if (this.IsMouseOver)
+            {
+                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonMouseOverBrush;
+            }
+            else
+            {
+                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonBrush;
+            }
+            expressionShown = false;
+            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);
+            if (adornerLayer != null)
+            {
+                Adorner[] adorners = adornerLayer.GetAdorners(this);
+                if (adorners != null)
+                {
+                    foreach (Adorner adorner in adorners)
+                    {
+                        if (adorner is FlowchartExpressionAdorner)
+                        {
+                            adornerLayer.Remove(adorner);
+                        }
+                    }
+                }
+                if ((this.IsMouseOver && expressionSpecified) || this.isPinned)
+                {
+                    expressionShown = true;
+                    adornerLayer.Add(new FlowchartExpressionAdorner(this));
+                }
+            }
+        }
+
+        static void OnShowAllConditionsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
+        {
+            if (e.NewValue != DependencyProperty.UnsetValue)
+            {
+                FlowSwitchDesigner designer = obj as FlowSwitchDesigner;
+                designer.OnShowAllConditionsChanged((bool)e.NewValue);
+            }
+        }
+
+        void OnShowAllConditionsChanged(bool isOpen)
+        {
+            this.isPinned = isOpen;
+            Update();
+        }
+
+        protected internal override void OnEditAnnotation()
+        {
+            this.annotationManager.OnEditAnnotation();
+        }
+
+        private class FlowSwitchDesignerAnnotationVisualProvider : IAnnotationVisualProvider
+        {
+            private FlowSwitchDesigner designer;
+            private IAnnotationIndicator indicator;
+            private IFloatingAnnotation floatingAnnotation;
+            private IDockedAnnotation dockedAnnotation;
+
+            public FlowSwitchDesignerAnnotationVisualProvider(FlowSwitchDesigner designer)
+            {
+                this.designer = designer;
+            }
+
+            public IAnnotationIndicator GetAnnotationIndicator()
+            {
+                if (this.indicator == null)
+                {
+                    this.indicator = new UIElementToAnnotationIndicatorAdapter(this.designer.defaultAnnotationIndicator);
+                }
+
+                return this.indicator;
+            }
+
+            public IFloatingAnnotation GetFloatingAnnotation()
+            {
+                if (this.floatingAnnotation == null)
+                {
+                    this.floatingAnnotation = new FloatingAnnotationView();
+                }
+
+                return this.floatingAnnotation;
+            }
+
+            public IDockedAnnotation GetDockedAnnotation()
+            {
+                if (this.dockedAnnotation == null)
+                {
+                    DockedAnnotationView view = new DockedAnnotationView();
+                    Binding binding = new Binding("ModelItem.AnnotationText");
+                    view.SetBinding(DockedAnnotationView.AnnotationTextProperty, binding);
+                    view.Visibility = Visibility.Collapsed;
+                    Grid.SetRow(view, 0);
+
+                    this.dockedAnnotation = view;
+                    this.designer.rootGrid.Children.Insert(0, view);
+                }
+
+                return this.dockedAnnotation;
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLabelFeature.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLabelFeature.cs
new file mode 100644 (file)
index 0000000..c3b3aa5
--- /dev/null
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+// <copyright file="FlowSwitchLabelFeature.cs" company="Microsoft">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//------------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Collections.Generic;
+
+    internal class FlowSwitchLabelFeature : ViewStateAttachedPropertyFeature
+    {
+        public const string DefaultCaseDisplayNamePropertyName = "DefaultCaseDisplayName";
+        public const string DefaultCaseDisplayNameDefaultValue = "Default";
+
+        protected override IEnumerable<AttachedPropertyInfo> AttachedProperties
+        {
+            get
+            {
+                yield return new AttachedPropertyInfo<string> { PropertyName = DefaultCaseDisplayNamePropertyName, IsBrowsable = false, IsVisibleToModelItem = true, DefaultValue = DefaultCaseDisplayNameDefaultValue };
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLink.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLink.cs
new file mode 100644 (file)
index 0000000..db35c10
--- /dev/null
@@ -0,0 +1,427 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Windows;
+    using System.Windows.Data;
+
+    abstract class FlowSwitchLink<T> : DependencyObject, IFlowSwitchLink
+    {
+        static DependencyProperty caseProperty = DependencyProperty.Register("Case", typeof(T), typeof(FlowSwitchLink<T>), new FrameworkPropertyMetadata(new PropertyChangedCallback(FlowSwitchLink<T>.OnCasePropertyChanged)));
+        static DependencyProperty isDefaultCaseProperty = DependencyProperty.Register("IsDefault", typeof(bool), typeof(FlowSwitchLink<T>), new FrameworkPropertyMetadata(new PropertyChangedCallback(FlowSwitchLink<T>.OnIsDefaultCasePropertyChanged)));
+
+        private FlowSwitch<T> parentFlowSwitch;
+        protected bool internalChange = false;
+        protected ModelItem flowSwitchModelItem;
+        const string DefaultConnectorViewStateKey = "Default";
+        const string CaseViewStateKeyAppendString = "Connector";
+        bool internalDefaultCaseChange = false;
+
+        public FlowSwitchLink(ModelItem flowSwitchMI, T caseValue, bool isDefault)
+        {
+            this.flowSwitchModelItem = flowSwitchMI;
+            object flowSwitch = this.flowSwitchModelItem.GetCurrentValue();
+            this.parentFlowSwitch = (FlowSwitch<T>)this.flowSwitchModelItem.GetCurrentValue();
+            this.internalChange = true;
+            this.internalDefaultCaseChange = true;
+            if (!isDefault)
+            {
+                this.CaseObject = caseValue;
+            }
+            this.IsDefaultCase = isDefault;
+            this.internalDefaultCaseChange = false;
+            this.internalChange = false;
+        }
+
+        [BrowsableAttribute(false)]
+        public ModelItem ModelItem
+        { get; set; }
+
+        public CaseKeyValidationCallbackDelegate ValidateCaseKey
+        {
+            get
+            {
+                return (object obj, out string reason) =>
+                {
+                    return GenericFlowSwitchHelper.ValidateCaseKey(obj,
+                        this.flowSwitchModelItem.Properties["Cases"],
+                        typeof(T),
+                        out reason);
+                };
+            }
+        }
+
+        [BrowsableAttribute(false)]
+        public FlowNode ParentFlowSwitch
+        {
+            get
+            {
+                return this.parentFlowSwitch;
+            }
+            set
+            {
+                this.parentFlowSwitch = value as FlowSwitch<T>;
+            }
+        }
+
+        public bool IsDefaultCase
+        {
+            get
+            {
+                return (bool)GetValue(FlowSwitchLink<T>.isDefaultCaseProperty);
+            }
+            set
+            {
+                SetValue(FlowSwitchLink<T>.isDefaultCaseProperty, value);
+            }
+        }
+
+        [Browsable(false)]
+        public string CaseName
+        {
+            get
+            {
+                object value = GetValue(FlowSwitchLink<T>.caseProperty);
+                return GenericFlowSwitchHelper.GetString((T)value, typeof(T));
+            }
+        }
+
+        [Browsable(false)]
+        public object CaseObject
+        {
+            get
+            {
+                return GetValue(FlowSwitchLink<T>.caseProperty);
+            }
+            set
+            {
+                SetValue(FlowSwitchLink<T>.caseProperty, value);
+            }
+        }
+        
+        [BrowsableAttribute(false)]
+        public T Case
+        {
+            get
+            {
+                return (T)GetValue(FlowSwitchLink<T>.caseProperty);
+            }
+            set
+            {
+                SetValue(FlowSwitchLink<T>.caseProperty, value);
+            }
+        }
+
+        DependencyProperty CaseProperty
+        {
+            get
+            {
+                return caseProperty;
+            }
+        }
+
+        DependencyProperty IsDefaultCaseProperty
+        {
+            get
+            {
+                return isDefaultCaseProperty;
+            }
+        }
+
+        [Browsable(false)]
+        public Type GenericType
+        {
+            get
+            {
+                return typeof(T);
+            }
+        }
+
+        bool ContainsKey(object key)
+        {
+            return this.parentFlowSwitch.Cases.ContainsKey((T)key);
+        }
+
+        void OnIsDefaultPropertyChanged(DependencyPropertyChangedEventArgs e)
+        {
+            bool isUndoRedoInProgress = this.IsUndoRedoInProgress();
+
+            if (!this.internalDefaultCaseChange && !isUndoRedoInProgress)
+            {
+                bool value = (bool)e.NewValue;
+                bool oldValue = (bool)e.OldValue;
+
+                if (value)
+                {
+                    if (object.Equals(this.flowSwitchModelItem.Properties["Default"].Value, null))
+                    {
+                        using (EditingScope es = (EditingScope)this.flowSwitchModelItem.BeginEdit(SR.FlowSwitchCaseRenameEditingScopeDesc))
+                        {
+                            ModelItem flowNodeMI = GenericFlowSwitchHelper.GetCaseModelItem(this.flowSwitchModelItem.Properties["Cases"], this.CaseObject);
+                            GenericFlowSwitchHelper.RemoveCase(this.flowSwitchModelItem.Properties["Cases"], this.CaseObject);
+                            this.flowSwitchModelItem.Properties["Default"].SetValue(flowNodeMI);
+                            this.UpdateViewState(this.CaseName + CaseViewStateKeyAppendString, DefaultConnectorViewStateKey);
+                            this.internalChange = true;
+                            es.Complete();
+                        }
+                    }
+                    else
+                    {
+                        this.internalDefaultCaseChange = true;
+                        this.IsDefaultCase = oldValue;
+                        throw FxTrace.Exception.AsError(new InvalidOperationException(SR.DefaultCaseExists));
+                    }
+                }
+                else
+                {
+                    if (oldValue)
+                    {
+                        using (EditingScope es = (EditingScope)this.flowSwitchModelItem.BeginEdit(SR.FlowSwitchCaseRenameEditingScopeDesc))
+                        {
+                            ModelItem defaultCase = this.flowSwitchModelItem.Properties["Default"].Value;
+                            object uniqueCase = null;
+                            string errorMessage = string.Empty;
+                            Type typeArgument = typeof(T);
+                            if (GenericFlowSwitchHelper.CanBeGeneratedUniquely(typeArgument))
+                            {
+                                string caseName = GenericFlowSwitchHelper.GetCaseName(this.flowSwitchModelItem.Properties["Cases"], typeArgument, out errorMessage);
+                                if (!string.IsNullOrEmpty(errorMessage))
+                                {
+                                    this.internalDefaultCaseChange = true;
+                                    this.IsDefaultCase = oldValue;
+                                    throw FxTrace.Exception.AsError(new InvalidOperationException(errorMessage));
+                                }
+                                uniqueCase = GenericFlowSwitchHelper.GetObject(caseName, typeArgument);
+
+                            }
+                            else
+                            {
+                                FlowSwitchCaseEditorDialog editor = new FlowSwitchCaseEditorDialog(this.flowSwitchModelItem, ((WorkflowViewElement)this.flowSwitchModelItem.View).Context, this.flowSwitchModelItem.View, SR.ChangeCaseValue, this.flowSwitchModelItem.ItemType.GetGenericArguments()[0]);
+                                editor.WindowSizeToContent = SizeToContent.WidthAndHeight;
+
+                                if (!editor.ShowOkCancel())
+                                {
+                                    this.internalDefaultCaseChange = true;
+                                    this.IsDefaultCase = oldValue;
+                                    return;
+                                }
+                                uniqueCase = editor.Case;
+                                if (GenericFlowSwitchHelper.ContainsCaseKey(this.flowSwitchModelItem.Properties["Cases"], uniqueCase))
+                                {
+                                    this.internalDefaultCaseChange = true;
+                                    this.IsDefaultCase = oldValue;
+                                    throw FxTrace.Exception.AsError(new InvalidOperationException(SR.InvalidFlowSwitchCaseMessage));
+                                }
+                            }
+
+                            this.flowSwitchModelItem.Properties["Default"].SetValue(null);
+                            this.flowSwitchModelItem.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].SetValue(FlowSwitchLabelFeature.DefaultCaseDisplayNameDefaultValue);
+                            
+                            this.internalChange = true;
+                            if (typeof(string) != typeof(T))
+                            {
+                                this.ModelItem.Properties["Case"].SetValue(uniqueCase);
+                                GenericFlowSwitchHelper.AddCase(this.flowSwitchModelItem.Properties["Cases"], uniqueCase, defaultCase.GetCurrentValue());
+                            }
+                            else
+                            {
+                                this.ModelItem.Properties["Case"].SetValue(uniqueCase);
+                                GenericFlowSwitchHelper.AddCase(this.flowSwitchModelItem.Properties["Cases"], uniqueCase, defaultCase.GetCurrentValue());
+                            }
+                            this.UpdateViewState(DefaultConnectorViewStateKey, GenericFlowSwitchHelper.GetString(uniqueCase, typeof(T)) + CaseViewStateKeyAppendString);
+                            es.Complete();
+                            this.internalChange = false;
+                        }
+                        this.internalDefaultCaseChange = false;
+                    }
+                }
+            }
+            this.internalDefaultCaseChange = false;
+        }
+
+        protected bool IsUndoRedoInProgress()
+        {
+            bool isUndoRedoInProgress;
+            WorkflowViewElement designer = (WorkflowViewElement)this.flowSwitchModelItem.View;
+            if (designer == null)
+            {
+                isUndoRedoInProgress = false;
+            }
+            else
+            {
+                isUndoRedoInProgress = designer.Context.Services.GetService<UndoEngine>().IsUndoRedoInProgress;
+            }
+            return isUndoRedoInProgress;
+        }
+
+        void OnCasePropertyChanged(DependencyPropertyChangedEventArgs e)
+        {
+            bool isUndoRedoInProgress = this.IsUndoRedoInProgress();
+
+            if (!this.internalChange && !isUndoRedoInProgress)
+            {
+                T oldValue = (T)e.OldValue;
+                T newValue = (T)e.NewValue;
+
+                if (newValue is string && newValue != null)
+                {
+                    newValue = (T)((object)((string)((object)newValue)).Trim());
+                }
+
+                string oldViewStateKey = string.Empty;
+                if (!this.ContainsKey(newValue))
+                {
+                    using (EditingScope es = (EditingScope)this.flowSwitchModelItem.BeginEdit(SR.FlowSwitchCaseRenameEditingScopeDesc))
+                    {
+                        ModelItem flowElementMI = null;
+
+                        flowElementMI = GenericFlowSwitchHelper.GetCaseModelItem(this.flowSwitchModelItem.Properties["Cases"], oldValue);
+                        GenericFlowSwitchHelper.RemoveCase(this.flowSwitchModelItem.Properties["Cases"], oldValue);
+                        oldViewStateKey = GenericFlowSwitchHelper.GetString(oldValue, typeof(T)) + CaseViewStateKeyAppendString;
+                        //Add the new value
+                        GenericFlowSwitchHelper.AddCase(this.flowSwitchModelItem.Properties["Cases"], newValue, flowElementMI.GetCurrentValue());
+                        //Update the viewstate for the flowswitch.
+                        this.UpdateViewState(oldViewStateKey, GenericFlowSwitchHelper.GetString(newValue, typeof(T)) + CaseViewStateKeyAppendString);
+                        //Making sure the value for Case is always trimmed.
+                        this.internalChange = true;
+                        this.ModelItem.Properties["Case"].SetValue(newValue);
+                        es.Complete();
+                    }
+                }
+                else
+                {
+                    this.internalChange = true;
+                    this.CaseObject = oldValue;
+                    throw FxTrace.Exception.AsError(new InvalidOperationException(SR.InvalidFlowSwitchCaseMessage));
+                }
+            }
+            this.internalChange = false;
+        }
+
+        void UpdateViewState(string oldValue, string newValue)
+        {
+            EditingContext context = this.flowSwitchModelItem.GetEditingContext();
+            ViewStateService viewStateService = (ViewStateService)context.Services.GetService(typeof(ViewStateService));
+            if (viewStateService != null)
+            {
+                object viewState = viewStateService.RetrieveViewState(this.flowSwitchModelItem, oldValue);
+                if (viewState != null)
+                {
+                    viewStateService.StoreViewStateWithUndo(this.flowSwitchModelItem, oldValue, null);
+                    viewStateService.StoreViewStateWithUndo(this.flowSwitchModelItem, newValue, viewState);
+                }
+            }
+        }
+
+        static void OnCasePropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
+        {
+            FlowSwitchLink<T> link = (FlowSwitchLink<T>)dependencyObject;
+            link.OnCasePropertyChanged(e);
+        }
+
+        static void OnIsDefaultCasePropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
+        {
+            FlowSwitchLink<T> link = (FlowSwitchLink<T>)dependencyObject;
+            link.OnIsDefaultPropertyChanged(e);
+        }
+
+        public virtual MultiBinding CreateConnectorLabelTextBinding()
+        {
+            return new MultiBinding
+            {
+                Converter = new FlowSwitchLinkMultiValueConverter(),
+                ConverterParameter = this.CaseProperty.PropertyType,
+                Bindings = 
+                {
+                    new Binding { Source = this, Mode = BindingMode.OneWay, Path = new PropertyPath(this.CaseProperty) },
+                    new Binding { Source = this, Mode = BindingMode.OneWay, Path = new PropertyPath(this.IsDefaultCaseProperty) },
+                },
+            };
+        }
+    }
+
+    class FlowSwitchDefaultLink<T> : FlowSwitchLink<T>, IFlowSwitchDefaultLink
+    {
+        static DependencyProperty defaultCaseDisplayNameProperty = DependencyProperty.Register(FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName, typeof(string), typeof(FlowSwitchDefaultLink<T>), new FrameworkPropertyMetadata(new PropertyChangedCallback(FlowSwitchDefaultLink<T>.OnDefaultCaseDisplayNamePropertyChanged)));
+
+        public FlowSwitchDefaultLink(ModelItem flowSwitchMI, T caseValue, bool isDefault)
+            : base(flowSwitchMI, caseValue, isDefault)
+        {
+            this.internalChange = true;
+            this.DefaultCaseDisplayName = (string)this.flowSwitchModelItem.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].Value.GetCurrentValue();
+            this.internalChange = false;
+        }
+
+        public string DefaultCaseDisplayName
+        {
+            get
+            {
+                return (string)GetValue(FlowSwitchDefaultLink<T>.defaultCaseDisplayNameProperty);
+            }
+            set
+            {
+                SetValue(FlowSwitchDefaultLink<T>.defaultCaseDisplayNameProperty, value);
+            }
+        }
+
+        DependencyProperty DefaultCaseDisplayNameProperty
+        {
+            get
+            {
+                return defaultCaseDisplayNameProperty;
+            }
+        }
+
+        void OnDefaultCaseDisplayNamePropertyChanged(DependencyPropertyChangedEventArgs e)
+        {
+            bool isUndoRedoInProgress = this.IsUndoRedoInProgress();
+            if (!this.internalChange && !isUndoRedoInProgress)
+            {
+                string newValue = (string)e.NewValue;
+                this.internalChange = true;
+                using (ModelEditingScope scope = this.flowSwitchModelItem.BeginEdit(SR.FlowSwitchDefaultCaseDisplayNameEditingScopeDesc))
+                {
+                    this.flowSwitchModelItem.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].SetValue(newValue);
+                    scope.Complete();
+                }
+                this.internalChange = false;
+            }
+        }
+
+        static void OnDefaultCaseDisplayNamePropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
+        {
+            FlowSwitchDefaultLink<T> link = (FlowSwitchDefaultLink<T>)dependencyObject;
+            link.OnDefaultCaseDisplayNamePropertyChanged(e);
+        }
+
+        public override MultiBinding CreateConnectorLabelTextBinding()
+        {
+            MultiBinding result = base.CreateConnectorLabelTextBinding();
+            result.Bindings.Add(new Binding { Source = this, Mode = BindingMode.OneWay, Path = new PropertyPath(this.DefaultCaseDisplayNameProperty) });
+            return result;
+        }
+    }
+
+    class FlowSwitchCaseLink<T> : FlowSwitchLink<T>
+    {
+        public FlowSwitchCaseLink(ModelItem flowSwitchMI, T caseValue, bool isDefault)
+            : base(flowSwitchMI, caseValue, isDefault)
+        {
+        }
+
+        [BrowsableAttribute(true)]
+        public new T Case
+        {
+            get { return base.Case; }
+            set { base.Case = value; }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkCasePropertyEditor.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkCasePropertyEditor.cs
new file mode 100644 (file)
index 0000000..774a49e
--- /dev/null
@@ -0,0 +1,20 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Presentation
+{
+    using System.Windows;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.View;
+    using System.Activities.Core.Presentation.Themes;
+
+    sealed class FlowSwitchLinkCasePropertyEditor : PropertyValueEditor
+    {
+        public FlowSwitchLinkCasePropertyEditor()
+        {
+            this.InlineEditorTemplate = (DataTemplate)EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("FlowSwitchLinkCase_InlineEditorTemplate");
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkMultiValueConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkMultiValueConverter.cs
new file mode 100644 (file)
index 0000000..a84cf29
--- /dev/null
@@ -0,0 +1,34 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Model;
+    using System.Globalization;
+    using System.Runtime;
+    using System.Windows.Data;
+
+    sealed class FlowSwitchLinkMultiValueConverter : IMultiValueConverter
+    {
+        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
+        {
+            bool isDefaultCase = (bool)values[1];
+            if (isDefaultCase)
+            {
+                // Fx.Assert(values.Length == 3, "The multi-binding must have been constructed by FlowSwitchLink.");
+                // For default case, we should have got three bindings. Two binding is possible when the linkModelItem is replaced but the view is not completely re-constructed yet.
+                return values.Length == 3 ? values[2] : null;
+            }
+            else
+            {
+                return GenericFlowSwitchHelper.GetString(values[0], (Type) parameter);
+            }
+        }
+
+        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotImplementedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartConnectionPointsAdorner.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartConnectionPointsAdorner.cs
new file mode 100644 (file)
index 0000000..d1b3abc
--- /dev/null
@@ -0,0 +1,161 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.View;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Windows;
+    using System.Windows.Documents;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Runtime;
+
+    internal class FlowchartConnectionPointsAdorner : ConnectionPointsAdorner
+    {
+        private bool isTextRightToLeft;
+
+        public FlowchartConnectionPointsAdorner(UIElement adornedElement, List<ConnectionPoint> connectionPointsToShow, bool isParentShapeSelected, bool isTextRightToLeft)
+            : base(adornedElement, connectionPointsToShow, isParentShapeSelected)
+        {
+            this.isTextRightToLeft = isTextRightToLeft;
+            this.FlowDirection = isTextRightToLeft ? FlowDirection.RightToLeft : FlowDirection.LeftToRight;
+        }
+
+        protected override void OnRender(DrawingContext drawingContext)
+        {
+            const int textCulture = 9;
+
+            ConnectionPoint trueConnectionPoint = null;
+            ConnectionPoint falseConnectionPoint = null;
+
+            if (this.connectionPoints.Contains(FlowchartDesigner.GetTrueConnectionPoint(this.AdornedElement)))
+            {
+                trueConnectionPoint = FlowchartDesigner.GetTrueConnectionPoint(this.AdornedElement);
+            }
+            if (this.connectionPoints.Contains(FlowchartDesigner.GetFalseConnectionPoint(this.AdornedElement)))
+            {
+                falseConnectionPoint = FlowchartDesigner.GetFalseConnectionPoint(this.AdornedElement);
+            }
+            Point actualPoint;
+            Point origin = FreeFormPanel.GetLocation(AdornedElement);
+            Thickness margin = ((FrameworkElement)AdornedElement).Margin;
+            origin.X += margin.Left;
+            origin.Y += margin.Top;
+
+            foreach (ConnectionPoint connPoint in this.connectionPoints)
+            {
+                actualPoint = new Point(connPoint.Location.X - origin.X, connPoint.Location.Y - origin.Y);
+                this.DrawConnectionPoint(connPoint, actualPoint, drawingContext);
+            }
+            
+            if (trueConnectionPoint != null)
+            {
+                string trueLabelText = String.Empty;
+
+                VirtualizedContainerService.VirtualizingContainer virtualizingContainer = (VirtualizedContainerService.VirtualizingContainer)trueConnectionPoint.ParentDesigner;
+                if (virtualizingContainer != null && virtualizingContainer.ModelItem != null)
+                {
+                    trueLabelText = (string)virtualizingContainer.ModelItem.Properties["TrueLabel"].ComputedValue;
+                }
+
+                actualPoint = new Point(trueConnectionPoint.Location.X - origin.X, trueConnectionPoint.Location.Y - origin.Y);
+                FormattedText trueMarkerFormattedText = new FormattedText(trueLabelText, new System.Globalization.CultureInfo(textCulture),
+                    this.FlowDirection, FlowchartDesigner.FlowElementCaptionTypeface, FlowchartDesigner.FlowNodeCaptionFontSize,
+                    new SolidColorBrush(WorkflowDesignerColors.WorkflowViewElementCaptionColor));
+                actualPoint.Y += ConnectionPoint.DrawingLargeSide / 2;
+                actualPoint.X -= trueMarkerFormattedText.WidthIncludingTrailingWhitespace;
+
+                DrawtWithTransform(
+                    drawingContext,
+                    this.isTextRightToLeft,
+                    // Mirror the left side text to the right side by using this axis when RTL.
+                    actualPoint.X,
+                    () =>
+                    {
+                        drawingContext.DrawText(trueMarkerFormattedText, actualPoint);
+                    });
+                
+            }
+            if (falseConnectionPoint != null)
+            {
+                string falseLabelText = String.Empty;
+
+                VirtualizedContainerService.VirtualizingContainer virtualizingContainer = (VirtualizedContainerService.VirtualizingContainer)falseConnectionPoint.ParentDesigner;
+                if (virtualizingContainer != null && virtualizingContainer.ModelItem != null)
+                {
+                    falseLabelText = (string)virtualizingContainer.ModelItem.Properties["FalseLabel"].ComputedValue;
+                }
+
+                actualPoint = new Point(falseConnectionPoint.Location.X - origin.X, falseConnectionPoint.Location.Y - origin.Y);
+                actualPoint.Y += ConnectionPoint.DrawingLargeSide / 2;
+
+                FormattedText falseMarkerFormattedText = new FormattedText(falseLabelText, new System.Globalization.CultureInfo(textCulture),
+                    this.FlowDirection, FlowchartDesigner.FlowElementCaptionTypeface, FlowchartDesigner.FlowNodeCaptionFontSize,
+                    new SolidColorBrush(WorkflowDesignerColors.WorkflowViewElementCaptionColor));
+
+                DrawtWithTransform(
+                    drawingContext,
+                    this.isTextRightToLeft,
+                    // Mirror the left side text to the right side by using this axis when RTL.
+                    actualPoint.X,
+                    () =>
+                    {
+                        drawingContext.DrawText(falseMarkerFormattedText, actualPoint);
+                    });
+            }
+
+            base.OnRender(drawingContext);
+        }
+
+        private static void DrawtWithTransform(DrawingContext drawingContext, bool isRightToLeft, double axis, Action doDraw)
+        {
+            if (isRightToLeft)
+            {
+                /* We hope to mirror the Text using yAxis as axis, like from (a) to (b)
+                 * |                                 |
+                 * |    ==>= =>==>                   |     <==<= =<==
+                 * |--------|------> x               |----------|--------> x
+                 * y       axis    (a)              y           axis      (b)
+                 *  
+                 * So we do it in three steps:
+                 * 1) move text so that axis and y are coincident
+                 * |                                            | 
+                 * |    ==>= =>==>                          ==>=|=>==>
+                 * |--------|------> x                ----------|---------> x
+                 * y       axis                                y(axis)
+                 * 
+                 * 2) mirror
+                 *         |                                   | 
+                 *     ==>=|=>==>                          <=<=|=<==
+                 * --------|------> x                ----------|---------> x
+                 *       y(axis)                              y(axis)
+                 * 
+                 * 3) move back
+                 *         |                         |           
+                 *     <=<=|=<==                     |     <=<= =<==
+                 * --------|------> x                |---------|----------> x
+                 *         y                         y        axis 
+                 *         
+                 * 
+                 *              |  1   0   0 |   | -1 0 0 |   |   1    0   0 |   |  -1     0    0 |
+                 *  transform = |  0   1   0 | x |  0 1 0 | x |   0    1   0 | = |   0     1    0 |
+                 *              | axis 0   1 |   |  0 0 1 |   | -axis  0   0 |   | 2*axis  0    1 |
+                 */
+
+                MatrixTransform transform = new MatrixTransform(-1, 0, 0, 1, 2 * axis, 0);
+                drawingContext.PushTransform(transform);
+                doDraw();
+                drawingContext.Pop();
+            }
+            else
+            {
+                doDraw();
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Container.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Container.cs
new file mode 100644 (file)
index 0000000..13c40f6
--- /dev/null
@@ -0,0 +1,558 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Reflection;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Windows.Threading;
+    using System.Xaml;
+    using System.Activities.Presentation.FreeFormEditing;
+
+    partial class FlowchartDesigner : IMultipleDragEnabledCompositeView
+    {
+        public static readonly DependencyProperty DroppingTypeResolvingOptionsProperty =
+            DependencyProperty.Register("DroppingTypeResolvingOptions", typeof(TypeResolvingOptions), typeof(FlowchartDesigner));
+
+        [Fx.Tag.KnownXamlExternal]
+        public TypeResolvingOptions DroppingTypeResolvingOptions
+        {
+            get { return (TypeResolvingOptions)GetValue(DroppingTypeResolvingOptionsProperty); }
+            set { SetValue(DroppingTypeResolvingOptionsProperty, value); }
+        }
+
+        public void OnItemMoved(ModelItem modelItem)
+        {
+            Fx.Assert(this.modelElement.ContainsKey(modelItem), "Moved item does not exist.");
+            this.OnItemsDelete(new List<ModelItem> { modelItem });
+        }
+
+        public object OnItemsCopied(List<ModelItem> itemsToCopy)
+        {
+            Fx.Assert(this.panel != null, "This code shouldn't be hit if panel is null");
+
+            // Filter away flowStart
+            itemsToCopy.Remove(flowStart);
+
+            //Get the corresponding FlowElements and clone them.
+            //We will work against actual objects here not the model items.
+            Dictionary<FlowNode, FlowNode> clonedFlowElements = new Dictionary<FlowNode, FlowNode>();
+            foreach (ModelItem modelItem in itemsToCopy)
+            {
+                ModelItem flowElementMI = GetFlowElementMI(modelItem);
+                FlowNode flowElement = (FlowNode)flowElementMI.GetCurrentValue();
+                clonedFlowElements[flowElement] = CloneFlowElement(flowElement);
+            }
+
+            //Traverse the FlowElements to reset Clone references to other FlowElements.
+            foreach (FlowNode flowElement in clonedFlowElements.Keys)
+            {
+                UpdateCloneReferences(flowElement, clonedFlowElements);
+            }
+
+            //Return metadata.
+            List<FlowNode> metaData = new List<FlowNode>(clonedFlowElements.Values);
+            return (object)metaData;
+        }
+
+        public List<ModelItem> SortSelectedItems(List<ModelItem> selectedItems)
+        {
+            if (selectedItems == null)
+            {
+                throw FxTrace.Exception.ArgumentNull("selectedItems");
+            }
+
+            DragDropHelper.ValidateItemsAreOnView(selectedItems, this.modelElement.Keys);
+            return selectedItems;
+        }
+
+        public void OnItemsMoved(List<ModelItem> movedItems)
+        {
+            if (movedItems == null)
+            {
+                throw FxTrace.Exception.ArgumentNull("movedItems");
+            }
+
+            DragDropHelper.ValidateItemsAreOnView(movedItems, this.modelElement.Keys);
+
+            HashSet<ModelItem> updatedItems = new HashSet<ModelItem>();
+            foreach (ModelItem modelItem in movedItems)
+            {
+                ModelItem flowModelItem = this.GetFlowElementMI(modelItem);
+                updatedItems.Add(flowModelItem);
+            }
+            this.OnItemsDelete(movedItems, updatedItems);
+        }
+
+        public object OnItemsCut(List<ModelItem> itemsToCut)
+        {
+            Fx.Assert(this.panel != null, "This code shouldn't be hit if panel is null");
+            object metaData = OnItemsCopied(itemsToCut);
+
+            //Delete ModelItems.
+            this.OnItemsDelete(itemsToCut);
+
+            return metaData;
+        }
+
+        public void OnItemsDelete(List<ModelItem> itemsToDelete)
+        {
+            this.OnItemsDelete(itemsToDelete, null);
+        }
+
+        public void OnItemsDelete(List<ModelItem> itemsToDelete, HashSet<ModelItem> updatedItems)
+        {
+            // Filter away flowStart
+            itemsToDelete.Remove(flowStart);
+
+            HashSet<Connector> connectorsToDelete = GetRelatedConnectors(itemsToDelete);
+
+            foreach (Connector connector in connectorsToDelete)
+            {
+                DeleteLink(connector, false, updatedItems);
+            }
+
+            if (null != itemsToDelete)
+            {
+                itemsToDelete.ForEach(p => this.DeleteShape(p, updatedItems));
+            }
+        }
+
+        //This method updates the clone of currentFlowElement to reference cloned FlowElements.
+        void UpdateCloneReferences(FlowNode currentFlowElement, Dictionary<FlowNode, FlowNode> clonedFlowElements)
+        {
+            if (typeof(FlowStep).IsAssignableFrom(currentFlowElement.GetType()))
+            {
+                FlowStep currentFlowStep = (FlowStep)currentFlowElement;
+                FlowStep clonedFlowStep = (FlowStep)clonedFlowElements[currentFlowElement];
+                FlowNode nextFlowElement = currentFlowStep.Next;
+                if (nextFlowElement != null && clonedFlowElements.ContainsKey(nextFlowElement))
+                {
+                    clonedFlowStep.Next = clonedFlowElements[nextFlowElement];
+                }
+                else
+                {
+                    clonedFlowStep.Next = null;
+                }
+            }
+            else if (typeof(FlowDecision).IsAssignableFrom(currentFlowElement.GetType()))
+            {
+                FlowDecision currentFlowDecision = (FlowDecision)currentFlowElement;
+                FlowDecision clonedFlowDecision = (FlowDecision)clonedFlowElements[currentFlowElement];
+                FlowNode trueElement = currentFlowDecision.True;
+                FlowNode falseElement = currentFlowDecision.False;
+
+                if (trueElement != null && clonedFlowElements.ContainsKey(trueElement))
+                {
+                    clonedFlowDecision.True = clonedFlowElements[trueElement];
+                }
+                else
+                {
+                    clonedFlowDecision.True = null;
+                }
+
+                if (falseElement != null && clonedFlowElements.ContainsKey(falseElement))
+                {
+                    clonedFlowDecision.False = clonedFlowElements[falseElement];
+                }
+                else
+                {
+                    clonedFlowDecision.False = null;
+                }
+
+            }
+            else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(currentFlowElement.GetType()))
+            {
+                GenericFlowSwitchHelper.Copy(currentFlowElement.GetType().GetGenericArguments()[0], currentFlowElement, clonedFlowElements);
+            }
+            else
+            {
+                Debug.Fail("Unknown FlowNode");
+            }
+        }
+
+        // The logic is similar to UpdateCloneReferences.
+        // the difference is in this function, we need to set reference by Property.
+        void UpdateCloneReferenceByModelItem (FlowNode currentFlowElement,
+            Dictionary<FlowNode, ModelItem> modelItems, Dictionary<FlowNode, FlowNode> clonedFlowElements)
+        {
+            if (typeof(FlowStep).IsAssignableFrom(currentFlowElement.GetType()))
+            {
+                FlowStep currentFlowStep = (FlowStep)currentFlowElement;
+                FlowStep clonedFlowStep = (FlowStep)clonedFlowElements[currentFlowElement];
+                ModelItem modelItem = modelItems[clonedFlowStep];
+                FlowNode nextFlowElement = currentFlowStep.Next;
+                if (nextFlowElement != null && clonedFlowElements.ContainsKey(nextFlowElement))
+                {
+                    modelItem.Properties["Next"].SetValue(clonedFlowElements[nextFlowElement]);
+                }
+                else
+                {
+                    modelItem.Properties["Next"].SetValue(null);
+                }
+            }
+            else if (typeof(FlowDecision).IsAssignableFrom(currentFlowElement.GetType()))
+            {
+                if (!modelItems.ContainsKey(currentFlowElement))
+                {
+                    Fx.Assert("Should not happen.");
+                }
+                FlowDecision currentFlowDecision = (FlowDecision)currentFlowElement;
+                FlowDecision clonedFlowDecision = (FlowDecision)clonedFlowElements[currentFlowElement];
+                Fx.Assert(currentFlowDecision == clonedFlowDecision, "should not happen");
+                ModelItem modelItem = modelItems[currentFlowElement];
+                Fx.Assert(modelItem != null, "should not happen");
+                FlowNode trueElement = currentFlowDecision.True;
+                FlowNode falseElement = currentFlowDecision.False;
+
+                if (trueElement != null && clonedFlowElements.ContainsKey(trueElement))
+                {
+                    modelItem.Properties["True"].SetValue(clonedFlowElements[trueElement]);
+                }
+                else
+                {
+                    modelItem.Properties["True"].SetValue(null);
+                }
+
+                if (falseElement != null && clonedFlowElements.ContainsKey(falseElement))
+                {
+                    modelItem.Properties["False"].SetValue(clonedFlowElements[falseElement]);
+                }
+                else
+                {
+                    modelItem.Properties["False"].SetValue(null);
+                }
+
+            }
+            else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(currentFlowElement.GetType()))
+            {
+                GenericFlowSwitchHelper.ReferenceCopy(currentFlowElement.GetType().GetGenericArguments()[0],
+                    currentFlowElement,
+                    modelItems,
+                    clonedFlowElements);
+            }
+            else
+            {
+                Debug.Fail("Unknown FlowNode");
+            }
+        }
+
+        public bool CanPasteItems(List<object> itemsToPaste)
+        {
+            if (this.ShowExpanded)
+            {
+                if (itemsToPaste != null)
+                {
+                    return itemsToPaste.All(p =>
+                        typeof(Activity).IsAssignableFrom(p.GetType()) ||
+                        typeof(FlowNode).IsAssignableFrom(p.GetType()) ||
+                        (p is Type && typeof(Activity).IsAssignableFrom((Type)p)) ||
+                        (p is Type && typeof(FlowNode).IsAssignableFrom((Type)p)));
+                }
+            }
+            return false;
+        }
+
+        public void OnItemsPasted(List<object> itemsToPaste, List<object> metaData, Point pastePoint, WorkflowViewElement pastePointReference)
+        {
+            Fx.Assert(this.panel != null, "This code shouldn't be hit if panel is null");
+            HashSet<Activity> workflowElementsPasted = new HashSet<Activity>();
+            List<ModelItem> modelItemsToSelect = new List<ModelItem>();
+            bool shouldStoreCurrentSizeViewState = true;
+
+            Fx.Assert(this.ModelItem is IModelTreeItem, "this.ModelItem must implement IModelTreeItem");
+            using (EditingScope editingScope = ((IModelTreeItem)this.ModelItem).ModelTreeManager.CreateEditingScope(System.Activities.Presentation.SR.CollectionAddEditingScopeDescription))
+            {
+                if (metaData != null)
+                {
+                    List<ModelItem> modelItemsPerMetaData = new List<ModelItem>();
+                    foreach (object designerMetaData in metaData)
+                    {
+                        if (designerMetaData is List<FlowNode>)
+                        {
+                            //This is flowchart metadata.
+                            foreach (FlowNode element in designerMetaData as List<FlowNode>)
+                            {
+                                FlowStep step = element as FlowStep;
+                                if (step != null)
+                                {
+                                    workflowElementsPasted.Add(step.Action);
+                                }
+
+                                if (shouldStoreCurrentSizeViewState)
+                                {
+                                    // Pasting may change the size of flowchart; need this to undo the size change.
+                                    this.StoreCurrentSizeViewStateWithUndo();
+                                    shouldStoreCurrentSizeViewState = false;
+                                }
+
+                                ModelItem item = this.ModelItem.Properties["Nodes"].Collection.Add(element);
+
+                                // if the pasted item is a flowswitch but the default target is not in the pasted selection,
+                                // reset the DefaultCaseDisplayName to "Default".
+                                if (GenericFlowSwitchHelper.IsGenericFlowSwitch(item.ItemType) &&
+                                    item.Properties["Default"].Value == null)
+                                {
+                                    item.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].SetValue(FlowSwitchLabelFeature.DefaultCaseDisplayNameDefaultValue);
+                                }
+
+                                modelItemsPerMetaData.Add(item);
+                                if (item != null)
+                                {
+                                    if (item.ItemType.Equals(typeof(FlowStep)))
+                                    {
+                                        modelItemsToSelect.Add(item.Properties["Action"].Value);
+                                    }
+                                    else
+                                    {
+                                        modelItemsToSelect.Add(item);
+                                    }
+                                }
+                            }
+                            if (pastePoint.X > 0 && pastePoint.Y > 0)
+                            {
+                                Point panelPoint = this.TranslatePoint(pastePoint, this.panel);
+                                if (pastePointReference != null && !pastePointReference.Equals(this))
+                                {
+                                    if (pastePointReference.ModelItem != null && this.modelElement.ContainsKey(pastePointReference.ModelItem))
+                                    {
+                                        panelPoint = pastePointReference.TranslatePoint(pastePoint, this.panel);
+                                    }
+                                }
+                                panelPoint.X = panelPoint.X < 0 ? 0 : panelPoint.X;
+                                panelPoint.Y = panelPoint.Y < 0 ? 0 : panelPoint.Y;
+                                UpdateViewStateOnPastePoint(modelItemsPerMetaData, panelPoint);
+                            }
+                            else
+                            {
+                                UpdateViewStateToAvoidOverlapOnPaste(modelItemsPerMetaData);
+                            }
+                            modelItemsPerMetaData.Clear();
+                        }
+                    }
+                }
+
+                foreach (object itemToPaste in itemsToPaste)
+                {
+                    Activity workflowElementToPaste = itemToPaste as Activity;
+                    if (workflowElementToPaste != null && !workflowElementsPasted.Contains(workflowElementToPaste))
+                    {
+                        FlowStep flowStep = new FlowStep { Action = workflowElementToPaste, Next = null };
+                        if (shouldStoreCurrentSizeViewState)
+                        {
+                            // Pasting may change the size of flowchart; need this to undo the size change.
+                            this.StoreCurrentSizeViewStateWithUndo();
+                            shouldStoreCurrentSizeViewState = false;
+                        }
+                        
+                        // When paste a non-flowstep object to flowchart, the existing hintsize of the object 
+                        // should be removed, and let flowchart panel to compute the right size.
+                        VirtualizedContainerService.SetHintSize(workflowElementToPaste, null);
+                        ModelItem flowStepItem = this.ModelItem.Properties["Nodes"].Collection.Add(flowStep);
+                     
+                        if (flowStepItem != null)
+                        {
+                            modelItemsToSelect.Add(flowStepItem.Properties["Action"].Value);
+                        }
+                    }
+                }
+
+                editingScope.Complete();
+            }
+
+            this.Dispatcher.BeginInvoke(() =>
+            {
+                if (modelItemsToSelect.Count > 0 && modelItemsToSelect[0] != null)
+                {
+                    Keyboard.Focus(modelItemsToSelect[0].View as IInputElement);
+                }
+                this.Context.Items.SetValue(new Selection(modelItemsToSelect));
+            },
+            DispatcherPriority.ApplicationIdle
+            );
+        }
+
+        void UpdateViewStateToAvoidOverlapOnPaste(List<ModelItem> modelItemsPerMetaData)
+        {
+            //Determine Offset.
+            int offSetInMultipleOfGridSize = 0;
+            if (modelItemsPerMetaData.Count > 0)
+            {
+                //Check to see if the first element in the input list needs offset. Generalize that information for all ModelItems in the input list.
+                //Get location information of the first element
+                object location = this.ViewStateService.RetrieveViewState(modelItemsPerMetaData[0], shapeLocation);
+                if (location != null)
+                {
+                    Point locationOfShape = (Point)location;
+
+                    foreach (var point in this.shapeLocations)
+                    {
+                        // When the pasting occurs, the pasted point may not be exactly the same
+                        // as the copied point (with a slight margin of offset).  Therefore,
+                        // we need to detect if the pasted point is within the boundary of the copied
+                        // object.  If so, offset the pasted position such that the overlap is not observable.
+                        if ((locationOfShape.X < point.X + FreeFormPanel.GridSize &&
+                             locationOfShape.X > point.X - FreeFormPanel.GridSize) &&
+                            (locationOfShape.Y < point.Y + FreeFormPanel.GridSize &&
+                             locationOfShape.Y > point.Y - FreeFormPanel.GridSize))
+                        {
+                            offSetInMultipleOfGridSize++;
+                            locationOfShape.Offset(FreeFormPanel.GridSize, FreeFormPanel.GridSize);
+                        }
+                    }
+                }
+            }
+            //Update viewstate according to calculated offset.
+            if (offSetInMultipleOfGridSize > 0)
+            {
+                double offsetValue = FreeFormPanel.GridSize * offSetInMultipleOfGridSize;
+                OffSetViewState(new Vector(offsetValue, offsetValue), modelItemsPerMetaData);
+            }
+
+        }
+
+        void UpdateViewStateOnPastePoint(List<ModelItem> modelItemsInMetaData, Point newOrigin)
+        {
+            //Determine top left of pasted objects.
+            Point topLeft = new Point(Double.PositiveInfinity, Double.PositiveInfinity);
+            foreach (ModelItem modelItem in modelItemsInMetaData)
+            {
+                Dictionary<string, object> viewState = this.ViewStateService.RetrieveAllViewState(modelItem);
+
+                foreach (object viewStateValue in viewState.Values)
+                {
+                    PointCollection viewStatePoints = viewStateValue as PointCollection;
+                    if (viewStatePoints == null && viewStateValue is Point)
+                    {
+                        viewStatePoints = new PointCollection { (Point)viewStateValue };
+                    }
+                    if (viewStatePoints != null)
+                    {
+                        foreach (Point viewStatePoint in viewStatePoints)
+                        {
+                            topLeft.X = topLeft.X > viewStatePoint.X ? viewStatePoint.X : topLeft.X;
+                            topLeft.Y = topLeft.Y > viewStatePoint.Y ? viewStatePoint.Y : topLeft.Y;
+                        }
+                    }
+                }
+            }
+
+            //Update the viewState.
+            OffSetViewState(new Vector(newOrigin.X - topLeft.X, newOrigin.Y - topLeft.Y), modelItemsInMetaData);
+        }
+
+        PointCollection OffsetPointCollection(PointCollection collection, Vector offset)
+        {
+            if (collection == null)
+            {
+                return null;
+            }
+
+            PointCollection newcollection = new PointCollection();
+            foreach (Point pt in collection)
+            {
+                Point nPt = Point.Add(pt, offset);
+                newcollection.Add(nPt);
+            }
+            return newcollection;
+        }
+
+        void OffSetViewState(Vector offsetVector, ModelItem modelItem, bool isUndoableViewState)
+        {
+            Dictionary<string, object> modifiedValues = new Dictionary<string, object>();
+            Dictionary<string, object> viewState = this.ViewStateService.RetrieveAllViewState(modelItem);
+            foreach (KeyValuePair<string, object> viewStatePair in viewState)
+            {
+                PointCollection viewStatePoints = viewStatePair.Value as PointCollection;
+                if (viewStatePoints != null)
+                {
+
+                    modifiedValues.Add(viewStatePair.Key, OffsetPointCollection(viewStatePoints, offsetVector));
+                }
+                else if (viewStatePair.Value is Point)
+                {
+                    modifiedValues.Add(viewStatePair.Key, Point.Add((Point)viewStatePair.Value, offsetVector));
+                }
+            }
+            foreach (KeyValuePair<string, object> kvPair in modifiedValues)
+            {
+                if (isUndoableViewState)
+                {
+                    this.ViewStateService.StoreViewStateWithUndo(modelItem, kvPair.Key, kvPair.Value);
+                }
+                else
+                {
+                    this.ViewStateService.StoreViewState(modelItem, kvPair.Key, kvPair.Value);
+                }
+            }
+
+            modifiedValues.Clear();
+        }
+
+
+        void OffSetViewState(Vector offsetVector, List<ModelItem> modelItemsInMetaData)
+        {
+            foreach (ModelItem modelItem in modelItemsInMetaData)
+            {
+                OffSetViewState(offsetVector, modelItem, false);
+            }
+        }
+
+        HashSet<Connector> GetRelatedConnectors(IEnumerable<ModelItem> modelItems)
+        {
+            HashSet<Connector> connectors = new HashSet<Connector>();
+            foreach (ModelItem shapeModelItem in modelItems)
+            {
+                UIElement deleteElement = (UIElement)(this.modelElement[shapeModelItem]);
+                List<Connector> attachedConnectors = GetAttachedConnectors(deleteElement);
+                connectors.UnionWith(attachedConnectors);
+            }
+            return connectors;
+        }
+
+        //This does a shallow copy of all the public properties with getter and setter. 
+        //It also replicates Xaml Attached properties.
+        FlowNode CloneFlowElement(FlowNode flowElement, Predicate<AttachableMemberIdentifier> allowAttachableProperty = null)
+        {
+            Type flowElementType = flowElement.GetType();
+            FlowNode clonedObject = (FlowNode)Activator.CreateInstance(flowElementType);
+            foreach (PropertyInfo propertyInfo in flowElementType.GetProperties())
+            {
+                if (propertyInfo.GetGetMethod() != null && propertyInfo.GetSetMethod() != null)
+                {
+                    propertyInfo.SetValue(clonedObject, propertyInfo.GetValue(flowElement, null), null);
+                }
+            }
+
+            //Replicate any Xaml Attached Property.
+            KeyValuePair<AttachableMemberIdentifier, object>[] attachedProperties = new KeyValuePair<AttachableMemberIdentifier, object>[AttachablePropertyServices.GetAttachedPropertyCount(flowElement)];
+            AttachablePropertyServices.CopyPropertiesTo(flowElement, attachedProperties, 0);
+            foreach (KeyValuePair<AttachableMemberIdentifier, object> attachedProperty in attachedProperties)
+            {
+                if (allowAttachableProperty != null && !allowAttachableProperty(attachedProperty.Key))
+                {
+                    continue;
+                }
+                AttachablePropertyServices.SetProperty(clonedObject, attachedProperty.Key, attachedProperty.Value);
+            }
+
+            return clonedObject;
+        }
+
+        public bool IsDefaultContainer
+        {
+            get { return true; }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Helpers.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Helpers.cs
new file mode 100644 (file)
index 0000000..6484425
--- /dev/null
@@ -0,0 +1,411 @@
+    //------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Windows;
+    using System.Windows.Documents;
+    using System.Windows.Media;
+    using System.Windows.Shapes;
+    using System.Activities.Statements;
+    using System.Activities.Presentation.Model;
+    using System.Linq;
+    using System.Runtime;
+    using System.Globalization;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.Internal.PropertyEditing;
+
+    partial class FlowchartDesigner
+    {
+        //Returns true if visual is on the visual tree for point p relative to the panel.
+        bool IsVisualHit(UIElement visual, UIElement reference, Point point)
+        {
+            bool visualIsHit = false;
+            HitTestResult result = VisualTreeHelper.HitTest(reference, point);
+            if (result != null)
+            {
+                DependencyObject obj = result.VisualHit;
+                while (obj != null)
+                {
+                    if (visual.Equals(obj))
+                    {
+                        visualIsHit = true;
+                        break;
+                    }
+                    obj = VisualTreeHelper.GetParent(obj);
+                }
+            }
+            return visualIsHit;
+        }
+
+        /// <summary>
+        /// Priority order of finding the connection point:
+        /// 1. Unoccupied (free) connection point closest to the object
+        /// 2. Existing incoming/outgoing connection point, depending on the 
+        /// Fallback: Connection point closest to the object)
+        /// </summary>
+        /// <param name="srcConnPoints"></param>
+        /// <param name="destConnPoints"></param>
+        /// <param name="srcConnPoint"></param>
+        /// <param name="destConnPoint"></param>
+        internal void FindBestMatchConnectionPointPair(
+            List<ConnectionPoint> srcConnPoints, 
+            List<ConnectionPoint> destConnPoints, 
+            out ConnectionPoint srcConnPoint, 
+            out ConnectionPoint destConnPoint)
+        {
+            double minDist = double.PositiveInfinity;
+            double dist;
+            ConnectionPoint tempConnPoint;
+            srcConnPoint = null;
+            destConnPoint = null;
+
+            List<ConnectionPoint> candidateSrcConnPoints = FindCandidatePointsForLink(srcConnPoints, ConnectionPointKind.Incoming);
+            List<ConnectionPoint> candidateDestConnPoints = FindCandidatePointsForLink(destConnPoints, ConnectionPointKind.Outgoing);
+
+            foreach (ConnectionPoint connPoint in candidateSrcConnPoints)
+            {
+                tempConnPoint = FindClosestConnectionPoint(connPoint, candidateDestConnPoints, out dist);
+                if (dist < minDist)
+                {
+                    minDist = dist;
+                    srcConnPoint = connPoint;
+                    destConnPoint = tempConnPoint;
+                }
+            }
+
+            Fx.Assert(srcConnPoint != null, "No ConnectionPoint found");
+            Fx.Assert(destConnPoint != null, "No ConnectionPoint found");
+        }
+
+        private static List<ConnectionPoint> FindCandidatePointsForLink(List<ConnectionPoint> destConnPoints, ConnectionPointKind excludePointType)
+        {
+            List<ConnectionPoint> candidateDestConnPoints;
+            IEnumerable<ConnectionPoint> freeDestConnPoints = destConnPoints.Where(p =>
+                    p.PointType != excludePointType &&
+                    !p.AttachedConnectors.Any());
+
+            if (freeDestConnPoints.Any())
+            {
+                candidateDestConnPoints = freeDestConnPoints.ToList();
+            }
+            else
+            {
+                IEnumerable<ConnectionPoint> availablePoints =
+                    destConnPoints.Where(
+                        p => p.PointType != excludePointType &&
+                        p.AttachedConnectors.Any(connector => FreeFormPanel.GetDestinationConnectionPoint(connector).Equals(p)));
+
+                candidateDestConnPoints = availablePoints.Any() ? availablePoints.ToList() : destConnPoints;
+            }
+
+            return candidateDestConnPoints;
+        }
+
+        /// <summary>
+        /// for connection:
+        /// 1. return all free connection points are available on the object
+        /// 2. return any existing points that are already connected on the object, excluding the unmatched type.
+        ///    Fallback: return all connection points of the given object
+        /// </summary>
+        /// <param name="sourceConnectionPoint"></param>
+        /// <param name="dest"></param>
+        /// <param name="errorMessage"></param>
+        /// <returns></returns>
+        ConnectionPoint FindBestMatchDestConnectionPoint(ConnectionPoint sourceConnectionPoint, UIElement dest, out string errorMessage)
+        {
+            List<ConnectionPoint> destConnPoints = FlowchartDesigner.GetConnectionPoints(dest);
+            Fx.Assert(null != destConnPoints && destConnPoints.Any(), "A flownode designer object should have one connection point.");
+
+            errorMessage = string.Empty;
+
+            if (sourceConnectionPoint.PointType == ConnectionPointKind.Incoming)
+            {
+                errorMessage = SR.FCInvalidLink;
+                return null;
+            }
+            
+            ConnectionPoint destConnectionPoint;
+            double minDist;
+            List<ConnectionPoint> candidateDestConnPoints = FindCandidatePointsForLink(destConnPoints, ConnectionPointKind.Outgoing);
+            destConnectionPoint = FindClosestConnectionPoint(sourceConnectionPoint, candidateDestConnPoints, out minDist);
+
+            return destConnectionPoint;
+        }
+
+        internal ConnectionPoint FindClosestConnectionPoint(ConnectionPoint srcConnPoint, List<ConnectionPoint> destConnPoints, out double minDist)
+        {
+            return FindClosestConnectionPoint(srcConnPoint.Location, destConnPoints, out minDist);
+        }
+
+        internal ConnectionPoint FindClosestConnectionPoint(Point srcConnPointLocation, List<ConnectionPoint> destConnPoints, out double minDist)
+        {
+            return ConnectionPoint.GetClosestConnectionPoint(destConnPoints, srcConnPointLocation, out minDist);
+        }
+
+        ConnectionPoint FindClosestConnectionPointNotOfType(ConnectionPoint srcConnectionPoint, List<ConnectionPoint> targetConnectionPoints, ConnectionPointKind illegalConnectionPointKind)
+        {
+            double minDist;
+            List<ConnectionPoint> filteredConnectionPoints = new List<ConnectionPoint>();
+            foreach (ConnectionPoint connPoint in targetConnectionPoints)
+            {
+                if (connPoint != null && connPoint.PointType != illegalConnectionPointKind && !connPoint.Equals(srcConnectionPoint))
+                {
+                    filteredConnectionPoints.Add(connPoint);
+                }
+            }
+            return FindClosestConnectionPoint(srcConnectionPoint, filteredConnectionPoints, out minDist);
+        }
+
+        void RemoveAdorner(UIElement adornedElement, Type adornerType)
+        {
+            Fx.Assert(adornedElement != null, "Invalid argument");
+            Fx.Assert(typeof(Adorner).IsAssignableFrom(adornerType), "Invalid argument");
+            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(adornedElement);
+            if (adornerLayer != null)
+            {
+                Adorner[] adorners = adornerLayer.GetAdorners(adornedElement);
+                if (adorners != null)
+                {
+                    foreach (Adorner adorner in adorners)
+                    {
+                        if (adornerType.IsAssignableFrom(adorner.GetType()))
+                        {
+                            adornerLayer.Remove(adorner);
+                        }
+                    }
+                }
+            }
+        }
+
+        //Returns true if child is a member of the tree rooted at the parent;
+        bool IsParentOf(ModelItem parent, ModelItem child)
+        {
+            Fx.Assert(parent != null, "Invalid argument");
+            bool isParentOf = false;
+            while (child != null)
+            {
+                if (parent.Equals(child))
+                {
+                    isParentOf = true;
+                    break;
+                }
+                child = child.Parent;
+            }
+            return isParentOf;
+        }
+
+        ConnectionPoint ConnectionPointHitTest(UIElement element, Point hitPoint)
+        {
+            List<ConnectionPoint> connectionPoints = new List<ConnectionPoint>();
+            List<ConnectionPoint> defaultConnectionPoints = FlowchartDesigner.GetConnectionPoints(element);
+            connectionPoints.InsertRange(0, defaultConnectionPoints);
+            connectionPoints.Add(FlowchartDesigner.GetTrueConnectionPoint(element));
+            connectionPoints.Add(FlowchartDesigner.GetFalseConnectionPoint(element));
+            return FreeFormPanel.ConnectionPointHitTest(hitPoint, connectionPoints, this.panel);
+        }
+
+        internal int NumberOfIncomingLinks(UIElement designer)
+        {
+            return GetInComingConnectors(designer).Count;
+        }
+
+        List<Connector> GetAttachedConnectors(UIElement shape)
+        {
+            HashSet<Connector> attachedConnectors = new HashSet<Connector>();
+            List<ConnectionPoint> allConnectionPoints = GetAllConnectionPoints(shape);
+            foreach (ConnectionPoint connPoint in allConnectionPoints)
+            {
+                if (connPoint != null)
+                {
+                    foreach (Connector connector in connPoint.AttachedConnectors)
+                    {
+                        attachedConnectors.Add(connector);
+                    }
+                }
+            }
+            return attachedConnectors.ToList<Connector>();
+        }
+
+        List<Connector> GetOutGoingConnectors(UIElement shape)
+        {
+            List<Connector> outGoingConnectors = new List<Connector>();
+            List<ConnectionPoint> allConnectionPoints = GetAllConnectionPoints(shape);
+            foreach (ConnectionPoint connPoint in allConnectionPoints)
+            {
+                if (connPoint != null)
+                {
+                    outGoingConnectors.AddRange(connPoint.AttachedConnectors.Where(p => FreeFormPanel.GetSourceConnectionPoint(p).Equals(connPoint)));
+                }
+            }
+            return outGoingConnectors;
+        }
+
+        List<Connector> GetInComingConnectors(UIElement shape)
+        {
+            List<Connector> inComingConnectors = new List<Connector>();
+            List<ConnectionPoint> allConnectionPoints = GetAllConnectionPoints(shape);
+            foreach (ConnectionPoint connPoint in allConnectionPoints)
+            {
+                if (connPoint != null)
+                {
+                    inComingConnectors.AddRange(connPoint.AttachedConnectors.Where(p => FreeFormPanel.GetDestinationConnectionPoint(p).Equals(connPoint)));
+                }
+            }
+            return inComingConnectors;
+        }
+
+        static List<ConnectionPoint> GetAllConnectionPoints(UIElement shape)
+        {
+            List<ConnectionPoint> allConnectionPoints = new List<ConnectionPoint>(6);
+            allConnectionPoints.AddRange(FlowchartDesigner.GetConnectionPoints(shape));
+            allConnectionPoints.Add(FlowchartDesigner.GetTrueConnectionPoint(shape));
+            allConnectionPoints.Add(FlowchartDesigner.GetFalseConnectionPoint(shape));
+            return allConnectionPoints;
+        }
+
+        Point SnapPointToGrid(Point pt)
+        {
+            pt.X -= pt.X % FreeFormPanel.GridSize;
+            pt.Y -= pt.Y % FreeFormPanel.GridSize;
+            pt.X = pt.X < 0 ? 0 : pt.X;
+            pt.Y = pt.Y < 0 ? 0 : pt.Y;
+            return pt;
+        }
+
+        //This snaps the center of the element to grid.
+        //This is called only when dropping an item 
+        //Whereever, shapeAnchorPoint is valid, it is made co-incident with the drop location.
+        Point SnapVisualToGrid(UIElement element, Point location, Point shapeAnchorPoint, bool isAnchorPointValid)
+        {
+            Fx.Assert(element != null, "Input UIElement is null");
+            element.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
+            Point oldCenter = location;
+            if (!isAnchorPointValid)
+            {
+                //shapeAnchorPoint is set to (-1, -1) in case where it does not make sense (Eg. toolbox drop).
+                //In that scenario align the center of the shape to the drop point.
+                location.X -= element.DesiredSize.Width / 2;
+                location.Y -= element.DesiredSize.Height / 2;
+            }
+            else
+            {
+                //The else part also takes care of the ActivityDesigner case, 
+                //where the drag handle is outside the shape.
+                location.X -= shapeAnchorPoint.X;
+                location.Y -= shapeAnchorPoint.Y;
+                oldCenter = new Point(location.X + element.DesiredSize.Width / 2, location.Y + element.DesiredSize.Height / 2);
+            }
+
+            Point newCenter = SnapPointToGrid(oldCenter);
+
+            location.Offset(newCenter.X - oldCenter.X, newCenter.Y - oldCenter.Y);
+
+            if (location.X < 0)
+            {
+                double correction = FreeFormPanel.GridSize - ((location.X * (-1)) % FreeFormPanel.GridSize);
+                location.X = (correction == FreeFormPanel.GridSize) ? 0 : correction;
+            }
+            if (location.Y < 0)
+            {
+                double correction = FreeFormPanel.GridSize - ((location.Y * (-1)) % FreeFormPanel.GridSize);
+                location.Y = (correction == FreeFormPanel.GridSize) ? 0 : correction;
+            }
+            return location;
+        }
+
+
+        // This creates a link from modelItems[i] to modelItems[i+1] - foreach i between 0 and modelItems.Count-2;
+        void CreateLinks(List<ModelItem> modelItems)
+        {
+            Fx.Assert(modelItems.Count > 1, "Link creation requires more than one ModelItem");
+            modelItems.ForEach(p => { Fx.Assert(this.modelElement.ContainsKey(p), "View should be in the flowchart"); });
+            ModelItem[] modelItemsArray = modelItems.ToArray();
+            string errorMessage = string.Empty;
+            for (int i = 0; i < modelItemsArray.Length - 1; i++)
+            {
+                string error = string.Empty;
+                CreateLinkGesture(this.modelElement[modelItemsArray[i]], this.modelElement[modelItemsArray[i + 1]], out error, null);
+                if (!string.Empty.Equals(error))
+                {
+                    errorMessage += string.Format(CultureInfo.CurrentUICulture, "Link{0}:{1}\n", i + 1, error);
+                }
+            }
+            if (!string.Empty.Equals(errorMessage))
+            {
+                ErrorReporting.ShowErrorMessage(errorMessage);
+            }
+        }
+
+        // This is a utility function to pack all the elements in an array that match a particular predicate
+        // to the end of the array, while maintaining the rest of the system unchanged.
+        public static bool Pack<T>(T[] toPack, Func<T, bool> isPacked) where T : class
+        {
+            if (toPack == null)
+            {
+                throw FxTrace.Exception.ArgumentNull("toPack");
+            }
+            if (isPacked == null)
+            {
+                throw FxTrace.Exception.ArgumentNull("isPacked");
+            }
+            int count = toPack.Length;
+            bool needRearrange = false;
+            bool found = false;
+            T[] arranged = new T[count];
+            for (int i = 0; i < count; i++)
+            {
+                if (isPacked(toPack[i]))
+                {
+                    arranged[i] = toPack[i];
+                    toPack[i] = null;
+                    found = true;
+                }
+                else
+                {
+                    if (found)
+                    {
+                        needRearrange = true;
+                    }
+                    arranged[i] = null;
+                }
+            }
+            if (needRearrange)
+            {
+                int j = 0;
+                for (int i = 0; i < count; i++)
+                {
+                    if (toPack[i] != null)
+                    {
+                        toPack[j++] = toPack[i];
+                    }
+                }
+                j = count;
+                for (int i = 0; i < count; i++)
+                {
+                    int k = count - i - 1;
+                    if (arranged[k] != null)
+                    {
+                        toPack[--j] = arranged[k];
+                    }
+                }
+            }
+            else
+            {
+                for (int i = 0; i < count; i++)
+                {
+                    if (arranged[i] != null)
+                    {
+                        toPack[i] = arranged[i];
+                    }
+                }
+            }
+            return needRearrange;
+        }
+
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChangeReactions.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChangeReactions.cs
new file mode 100644 (file)
index 0000000..fbd5327
--- /dev/null
@@ -0,0 +1,837 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Diagnostics;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Linq;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Documents;
+    using System.Windows.Threading;
+    using System.Windows.Input;
+    using System.Windows.Media;
+
+    partial class FlowchartDesigner
+    {
+        ModelItem flowStart;
+        const string ExpandViewStateKey = "IsExpanded";
+
+        void CreateStartSymbol()
+        {
+            //Instantiate the start symbol
+            StartSymbol start = System.Activities.Core.Presentation.StartSymbol.CreateStartSymbol(this.Context);
+            start.Text = "Start";
+            this.flowStart = start.ModelItem;
+            DragDropHelper.SetCompositeView(start, this);
+            modelElement.Add(flowStart, start);
+            start.SizeChanged += new SizeChangedEventHandler(ChildSizeChanged);
+            this.StartSymbol = start;
+            PopulateConnectionPoints(this.StartSymbol, null);
+            this.StartSymbol.MouseEnter += new MouseEventHandler(ChildElement_MouseEnter);
+            this.StartSymbol.MouseLeave += new MouseEventHandler(ChildElement_MouseLeave);
+
+            //Getting the View state information.
+            object locationOfShape = this.ViewStateService.RetrieveViewState(this.ModelItem, shapeLocation);
+            object sizeOfShape = this.ViewStateService.RetrieveViewState(this.ModelItem, shapeSize);
+            if (locationOfShape != null)
+            {
+                Point locationPt = (Point)locationOfShape;
+                FreeFormPanel.SetLocation(this.StartSymbol, locationPt);
+            }
+            else
+            {
+                //Set the location of the start symbol.
+                this.StartSymbol.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
+                double startHeight = this.StartSymbol.DesiredSize.Height;
+                double startWidth = this.StartSymbol.DesiredSize.Width;
+                Point startPoint = new Point(panel.MinWidth / 2, startSymbolTopMargin + startHeight / 2);
+                Point startLocation = SnapVisualToGrid(this.StartSymbol, startPoint, new Point(-1, -1), false);
+                FreeFormPanel.SetLocation(this.StartSymbol, startLocation);
+                this.internalViewStateChange = true;
+                this.StoreShapeViewState(this.ModelItem, startLocation);
+                this.internalViewStateChange = false;
+            }
+            if (sizeOfShape != null)
+            {
+                FreeFormPanel.SetChildSize(this.StartSymbol, (Size)sizeOfShape);
+            }
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            // Make flowchart designer always collapse by default, but only if the user didnt explicitly specify collapsed or expanded.
+            ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
+            if (viewStateService != null)
+            {
+                bool? isExpanded = (bool?)viewStateService.RetrieveViewState((ModelItem)newItem, ExpandViewStateKey);
+                if (isExpanded == null)
+                {
+                    viewStateService.StoreViewState((ModelItem)newItem, ExpandViewStateKey, false);
+                }
+            }
+            base.OnModelItemChanged(newItem);
+
+        }
+
+        void OnViewStateChanged(object sender, ViewStateChangedEventArgs e)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            Fx.Assert(e.ParentModelItem != null, "ViewState should be associated with some modelItem");
+            Connector changedConnector = null;
+            if (e.ParentModelItem == this.ModelItem)
+            {
+                if (string.Equals(e.Key, FlowchartSizeFeature.WidthPropertyName, StringComparison.Ordinal))
+                {
+                    this.FlowchartWidth = (double)TypeDescriptor.GetProperties(this.ModelItem)[FlowchartSizeFeature.WidthPropertyName].GetValue(this.ModelItem);
+                }
+                else if (string.Equals(e.Key, FlowchartSizeFeature.HeightPropertyName, StringComparison.Ordinal))
+                {
+                    this.FlowchartHeight = (double)TypeDescriptor.GetProperties(this.ModelItem)[FlowchartSizeFeature.HeightPropertyName].GetValue(this.ModelItem);
+                }
+            }
+            if ((IsFlowNode(e.ParentModelItem) || this.ModelItem.Equals(e.ParentModelItem)) && !this.internalViewStateChange)
+            {
+                ModelItem itemOnCanvas = this.GetCorrespondingElementOnCanvas(e.ParentModelItem);
+                if (this.modelElement.ContainsKey(itemOnCanvas))
+                {
+                    if (e.Key.Equals(shapeLocation))
+                    {
+                        if (e.NewValue != null)
+                        {
+                            FreeFormPanel.SetLocation(this.modelElement[itemOnCanvas], (Point)e.NewValue);
+                            this.panel.InvalidateMeasure();
+                            if (e.OldValue != null)
+                            {
+                                this.shapeLocations.Remove((Point)e.OldValue);
+                            }
+                            this.shapeLocations.Add((Point)e.NewValue);
+                        }
+                    }
+                    else
+                    {
+                        if (this.ModelItem.Equals(e.ParentModelItem)
+                            && e.Key.Equals(ConnectorViewStateKey))
+                        {
+                            changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, e.ParentModelItem.Properties["StartNode"].Value, "StartNode");
+                        }
+                        else if (typeof(FlowStep).IsAssignableFrom(e.ParentModelItem.ItemType)
+                            && e.Key.Equals(ConnectorViewStateKey))
+                        {
+                            changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, e.ParentModelItem.Properties["Next"].Value, "Next");
+                        }
+                        else if (typeof(FlowDecision).IsAssignableFrom(e.ParentModelItem.ItemType))
+                        {
+                            if (e.Key.Equals(TrueConnectorViewStateKey))
+                            {
+                                changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, e.ParentModelItem.Properties["True"].Value, "True");
+                            }
+                            else if (e.Key.Equals(FalseConnectorViewStateKey))
+                            {
+                                changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, e.ParentModelItem.Properties["False"].Value, "False");
+                            }
+                        }
+                        else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(e.ParentModelItem.ItemType))
+                        {
+                            if (e.Key.Equals(FlowchartDesigner.FlowSwitchDefaultViewStateKey, StringComparison.CurrentCulture))
+                            {
+                                changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, e.ParentModelItem.Properties["Default"].Value, e.Key);
+                            }
+                            else if (e.Key.EndsWith(CaseViewStateKeyAppendString, StringComparison.CurrentCulture))
+                            {
+                                string switchCaseName = e.Key.Substring(0, e.Key.Length - CaseViewStateKeyAppendString.Length);
+                                object switchCase = switchCaseName;
+                                Type genericType = e.ParentModelItem.ItemType.GetGenericArguments()[0];
+                                switchCase = GenericFlowSwitchHelper.GetObject(switchCaseName, genericType);
+
+                                if (GenericFlowSwitchHelper.ContainsCaseKey(e.ParentModelItem.Properties["Cases"], switchCase))
+                                {
+                                    //Prepending with GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier to differentiate between the property Default and the key Default.
+                                    changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, GenericFlowSwitchHelper.GetCaseModelItem(e.ParentModelItem.Properties["Cases"], switchCase), GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier + switchCase);
+                                }
+                            }
+
+                        }
+                    }
+                }
+            }
+            if (changedConnector != null)
+            {
+                if (e.NewValue != null)
+                {
+                    Fx.Assert(e.NewValue is PointCollection, "e.NewValue is not PointCollection");
+                    changedConnector.Points = e.NewValue as PointCollection;
+                    this.panel.RemoveConnectorEditor();
+                    this.panel.InvalidateMeasure();
+                }
+            }
+        }
+
+        void RefreshFlowSwitchLinkModelItem(ModelItem flowSwitchModelItem, Connector connector, bool isDefault)
+        {
+            ModelItem oldLinkModelItem = FlowchartDesigner.GetLinkModelItem(connector);
+
+            IModelTreeItem modelTreeItem = flowSwitchModelItem as IModelTreeItem;
+            IFlowSwitchLink link = GenericFlowSwitchHelper.CreateFlowSwitchLink(flowSwitchModelItem.ItemType, flowSwitchModelItem, ((IFlowSwitchLink)oldLinkModelItem.GetCurrentValue()).CaseObject, isDefault);
+            ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
+            link.ModelItem = linkModelItem;
+
+            FlowchartDesigner.SetLinkModelItem(connector, linkModelItem);
+            connector.SetBinding(Connector.LabelTextProperty, link.CreateConnectorLabelTextBinding());
+
+            Selection currentSelection = this.Context.Items.GetValue<Selection>();
+            if (currentSelection.SelectedObjects.Contains(oldLinkModelItem))
+            {
+                Selection.Toggle(this.Context, oldLinkModelItem);
+                Selection.Select(this.Context, linkModelItem);
+            }
+        }
+
+        //For flowchart reacting to ModelItem changes we are concerned of the following scenarios:
+        //1. FlowElements being deleted from the Flowchart.Nodes collection or Flowswitch cases being deleted from ItemsCollection
+        //2. FlowElements being added to the Flowchart.Nodes collection or Flowswitch cases being added from ItemsCollection
+        //3. Properties being changed in FlowStep(Next), FlowDecision(True, false), FlowSwitch(Default) (Any of the flowelemnet should be present in the elements collection).
+        //4. Flowswitch cases being added/remove via Cases.Dicitionary
+        void ModelTreeManager_EditingScopeCompleted(object sender, EditingScopeEventArgs e)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            foreach (Change change in e.EditingScope.Changes)
+            {
+                //Case 1, 2.
+                if (change is CollectionChange)
+                {
+                    CollectionChange collectionChange = change as CollectionChange;
+                    if (collectionChange.Collection.Equals(this.ModelItem.Properties["Nodes"].Collection))
+                    {
+                        if (collectionChange.Operation == CollectionChange.OperationType.Delete)
+                        {
+                            this.DeleteShapeVisual(this.flowNodeToUIElement[collectionChange.Item]);
+                        }
+                        else
+                        {
+                            this.AddFlowElementsToDesigner(new List<ModelItem> { collectionChange.Item });
+                            //An editing scope change references the ModelItem. 
+                            //Hence in case of multiple changes to the same modelItem within the same EditingScope, we will see all the changes on the ModelItem for each change.
+                            //Eg. Suppose following two changes are in the same editing scope: 1. Add ModelItem item1 to Collection, 2. Change a property on this MI, item1.Prop1
+                            //In this case, EditingScope.Changes.Count will be 2. 
+                            //Since an EditingScope change keeps a reference to the ModelItem changed, when we process the first change, the second change would already be reflected on the ModelItem.
+                            //Hence, while processing CollectionChange for item1, item1.Prop1 will already reflect the new value. 
+                            //Also there will be another change notifying the change in item1.Prop1.
+                            //AddFlowElementsToDesigner() method, walks through the properties of a newly added item and creates any links if required. 
+                            //This is necessary for Paste scenario where we want to create links between Items added to the Nodes Collection.
+                            //Because of this behavior of AddFlowElementsToDesigner(), before reacting to a property change for adding a link, we will always verify that the link does not already exists.
+                        }
+                    }
+                    if (collectionChange.Collection.Parent != null && collectionChange.Collection.Parent.Parent != null &&
+                        this.ModelItem.Properties["Nodes"].Collection.Contains(collectionChange.Collection.Parent.Parent) &&
+                        collectionChange.Collection.Parent.Parent.ItemType.IsGenericType &&
+                        collectionChange.Collection.Parent.Parent.ItemType.GetGenericTypeDefinition() == typeof(FlowSwitch<>))
+                    {
+                        ModelItem item = collectionChange.Item;
+                        string caseName = GenericFlowSwitchHelper.GetString(item.Properties["Key"].ComputedValue, item.Properties["Key"].PropertyType);
+
+                        Connector connector = this.GetLinkOnCanvas(collectionChange.Collection.Parent.Parent,
+                            item.Properties["Value"].Value, GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier + caseName);
+                        if (collectionChange.Operation == CollectionChange.OperationType.Delete)
+                        {
+                            if (connector != null)
+                            {
+                                this.DeleteLinkVisual(connector);
+                            }
+                        }
+                        else if (collectionChange.Operation == CollectionChange.OperationType.Insert)
+                        {
+                            if (connector == null)
+                            {
+                                //Prepending GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier to differentiate between the FlowSwitch's Property Default and key Default.
+                                connector = this.CreatePropertyLink(collectionChange.Collection.Parent.Parent,
+                                    item.Properties["Value"].Value,
+                                    GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier + caseName);
+                                Fx.Assert(connector != null, "Link not created");
+                                this.panel.Children.Add(connector);
+                            }
+                            else
+                            {
+                                RefreshFlowSwitchLinkModelItem(/* flowSwitchModelItem = */ collectionChange.Collection.Parent.Parent, connector, false);
+                            }
+                        }
+                    }
+                }
+                else if (change is DictionaryChange)
+                {
+                    // case 4
+                    DictionaryChange dictionaryChange = change as DictionaryChange;
+
+                    if (dictionaryChange.Dictionary.Parent != null &&
+                        this.ModelItem.Properties["Nodes"].Collection.Contains(dictionaryChange.Dictionary.Parent) &&
+                        dictionaryChange.Dictionary.Parent.ItemType.IsGenericType &&
+                        dictionaryChange.Dictionary.Parent.ItemType.GetGenericTypeDefinition() == typeof(FlowSwitch<>))
+                    {
+                        ModelItem flowSwitchModelItem = dictionaryChange.Dictionary.Parent;
+                        ModelItem caseTargetModelItem = dictionaryChange.Value;
+                        string caseName = GenericFlowSwitchHelper.GetString(dictionaryChange.Key == null ? null : dictionaryChange.Key.GetCurrentValue(), dictionaryChange.Key == null ? null : dictionaryChange.Key.ItemType);
+                        string caseNameInModelItem = GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier + caseName;
+
+                        Connector connector = this.GetLinkOnCanvas(
+                            flowSwitchModelItem,
+                            caseTargetModelItem,
+                            caseNameInModelItem);
+
+                        if (dictionaryChange.Operation == DictionaryChange.OperationType.Delete)
+                        {
+                            if (connector != null)
+                            {
+                                this.DeleteLinkVisual(connector);
+                            }
+                        }
+                        else if (dictionaryChange.Operation == DictionaryChange.OperationType.Insert)
+                        {
+                            if (connector == null)
+                            {
+                                connector = this.CreatePropertyLink(
+                                    flowSwitchModelItem,
+                                    caseTargetModelItem,
+                                    caseNameInModelItem);
+                                this.panel.Children.Add(connector);
+                            }
+                        }
+                    }
+                }
+                //Case 3.
+                else if (change is PropertyChange)
+                {
+                    PropertyChange propertyChange = change as PropertyChange;
+
+                    if (this.ModelItem.Properties["Nodes"].Collection.Contains(propertyChange.Owner)
+                        || (propertyChange.PropertyName == "StartNode" && propertyChange.Owner == this.ModelItem))
+                    {
+                        if (propertyChange.OldValue != null
+                            && IsFlowNode(propertyChange.OldValue))
+                        {
+                            Connector link = GetLinkOnCanvas(propertyChange.Owner, propertyChange.OldValue, propertyChange.PropertyName);
+                            //Debug.Assert(link != null, "Link not found on designer");
+                            if (link != null)
+                            {
+                                this.DeleteLinkVisual(link);
+                            }
+                        }
+                        if (propertyChange.NewValue != null
+                            && IsFlowNode(propertyChange.NewValue))
+                        {
+                            Connector oldLink = GetLinkOnCanvas(propertyChange.Owner, propertyChange.NewValue, propertyChange.PropertyName);
+                            //If this connector has already been added don't add again. 
+                            if (oldLink == null)
+                            {
+                                Connector link = CreatePropertyLink(propertyChange.Owner, propertyChange.NewValue, propertyChange.PropertyName);
+                                Fx.Assert(link != null, "Link not created");
+                                this.panel.Children.Add(link);
+                            }
+                            else
+                            {
+                                if (GenericFlowSwitchHelper.IsGenericFlowSwitch(propertyChange.Owner.ItemType))
+                                {
+                                    this.RefreshFlowSwitchLinkModelItem(/* flowSwitchModelItem = */ propertyChange.Owner, oldLink, true);
+                                }
+                            }
+                        }
+
+                        //handling for the case where the FlowStep.Action changes:
+                        //Explicitly adding a check for FlowStep, because other FlowNodes have properties of type Activity, which we don't want to react to.
+                        //AddFlowElementsToDesigner() will add the links originating out of the shape that is changing.
+                        //We have to take care of refreshing the links coming into the shape that is changing.
+                        if (typeof(FlowStep).IsAssignableFrom(propertyChange.Owner.ItemType))
+                        {
+                            List<Connector> oldIncomingConnectors = new List<Connector>();
+                            if (propertyChange.OldValue != null && IsFlowStepAction(propertyChange.OldValue))
+                            {
+                                UIElement oldShape = this.flowNodeToUIElement[propertyChange.Owner];
+                                oldIncomingConnectors = this.GetInComingConnectors(oldShape);
+                                this.DeleteShapeVisual(oldShape);
+                            }
+                            if (propertyChange.NewValue != null && IsFlowStepAction(propertyChange.NewValue))
+                            {
+                                this.AddFlowElementsToDesigner(new List<ModelItem> { propertyChange.Owner });
+                                foreach (Connector oldConnector in oldIncomingConnectors)
+                                {
+                                    Connector newConnector = CreateLink(FreeFormPanel.GetSourceConnectionPoint(oldConnector),
+                                        this.flowNodeToUIElement[propertyChange.Owner], FlowchartDesigner.GetLinkModelItem(oldConnector));
+                                    this.panel.Children.Add(newConnector);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        void AddFlowElementsToDesigner(IList<ModelItem> flowElementMICollection, bool addConnectorAfterLoaded = false)
+        {
+            Queue<ModelItem> flowElementsToProcess = new Queue<ModelItem>();
+            List<UIElement> viewsAdded = new List<UIElement>();
+            foreach (ModelItem model in flowElementMICollection)
+            {
+                ModelItem itemOnCanvas = GetCorrespondingElementOnCanvas(model);
+                if (!this.modelElement.ContainsKey(itemOnCanvas))
+                {
+                    flowElementsToProcess.Enqueue(model);
+                    viewsAdded.Add(ProcessAndGetModelView(itemOnCanvas));
+                }
+                else if (!this.panel.Children.Contains(this.modelElement[itemOnCanvas]))
+                {
+                    flowElementsToProcess.Enqueue(model);
+                    viewsAdded.Add(this.modelElement[itemOnCanvas]);
+                }
+            }
+
+            ModelItem startNodeModelItem = null;
+            List<Tuple<UIElement, UIElement, ModelItem>> elem2elemConnections = new List<Tuple<UIElement, UIElement, ModelItem>>();
+            List<Tuple<ConnectionPoint, UIElement, ModelItem>> point2elemConnections = new List<Tuple<ConnectionPoint, UIElement, ModelItem>>();
+
+            while (flowElementsToProcess.Count > 0)
+            {
+                ModelItem currentMI = flowElementsToProcess.Dequeue();
+                //Create links for the current FlowNode.
+                //First of all check if this is connected to the start node.
+                if (this.ModelItem.Properties["StartNode"].Value != null
+                    && this.ModelItem.Properties["StartNode"].Value.Equals(currentMI))
+                {
+                    startNodeModelItem = currentMI;
+                }
+                if (typeof(FlowStep).IsAssignableFrom(currentMI.ItemType))
+                {
+                    ModelItem linkDest = currentMI.Properties["Next"].Value;
+                    if (linkDest != null)
+                    {
+                        ModelItem src = GetCorrespondingElementOnCanvas(currentMI);
+                        ModelItem dest = GetCorrespondingElementOnCanvas(linkDest);
+                        if (!modelElement.ContainsKey(dest))
+                        {
+                            viewsAdded.Add(ProcessAndGetModelView(dest));
+                            flowElementsToProcess.Enqueue(linkDest);
+                        }
+                        elem2elemConnections.Add(Tuple.Create(modelElement[src], modelElement[dest], currentMI));
+                    }
+                }
+                else if (typeof(FlowDecision).IsAssignableFrom(currentMI.ItemType))
+                {
+                    ModelItem trueDest = currentMI.Properties["True"].Value;
+                    ModelItem falseDest = currentMI.Properties["False"].Value;
+                    if (trueDest != null)
+                    {
+                        ConnectionPoint srcConnectionPoint = FlowchartDesigner.GetTrueConnectionPoint(modelElement[currentMI]);
+                        ModelItem trueDestOnCanvas = GetCorrespondingElementOnCanvas(trueDest);
+                        if (!modelElement.ContainsKey(trueDestOnCanvas))
+                        {
+                            viewsAdded.Add(ProcessAndGetModelView(trueDestOnCanvas));
+                            flowElementsToProcess.Enqueue(trueDest);
+                        }
+                        point2elemConnections.Add(Tuple.Create(srcConnectionPoint, modelElement[trueDestOnCanvas], currentMI));
+                    }
+                    if (falseDest != null)
+                    {
+                        ConnectionPoint srcConnectionPoint = FlowchartDesigner.GetFalseConnectionPoint(modelElement[currentMI]);
+                        ModelItem falseDestOnCanvas = GetCorrespondingElementOnCanvas(falseDest);
+                        if (!modelElement.ContainsKey(falseDestOnCanvas))
+                        {
+                            viewsAdded.Add(ProcessAndGetModelView(falseDestOnCanvas));
+                            flowElementsToProcess.Enqueue(falseDest);
+                        }
+                        point2elemConnections.Add(Tuple.Create(srcConnectionPoint, modelElement[falseDestOnCanvas], currentMI));
+                    }
+                }
+                else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(currentMI.ItemType))
+                {
+                    IModelTreeItem modelTreeItem = this.ModelItem as IModelTreeItem;
+                    ModelItem defaultCase = currentMI.Properties["Default"].Value;
+
+                    if (defaultCase != null)
+                    {
+                        ModelItem defaultCaseOnCanvas = GetCorrespondingElementOnCanvas(defaultCase);
+                        if (!modelElement.ContainsKey(defaultCaseOnCanvas))
+                        {
+                            viewsAdded.Add(ProcessAndGetModelView(defaultCaseOnCanvas));
+                            flowElementsToProcess.Enqueue(defaultCase);
+                        }
+                        IFlowSwitchLink link = GenericFlowSwitchHelper.CreateFlowSwitchLink(currentMI.ItemType, currentMI, null, true);
+                        ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
+                        link.ModelItem = linkModelItem;
+
+                        elem2elemConnections.Add(Tuple.Create(modelElement[currentMI], modelElement[defaultCaseOnCanvas], linkModelItem));
+                    }
+                    Type genericType = currentMI.ItemType.GetGenericArguments()[0];
+
+                    foreach (ModelItem key in GenericFlowSwitchHelper.GetCaseKeys(currentMI.Properties["Cases"]))
+                    {
+                        ModelItem destFlowElementMI = GenericFlowSwitchHelper.GetCaseModelItem(currentMI.Properties["Cases"], (key == null) ? null : key.GetCurrentValue());
+                        IFlowSwitchLink link = GenericFlowSwitchHelper.CreateFlowSwitchLink(currentMI.ItemType, currentMI, (key == null) ? null : key.GetCurrentValue(), false);
+                        ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
+                        link.ModelItem = linkModelItem;
+                        ModelItem destModelItem = GetCorrespondingElementOnCanvas(destFlowElementMI);
+                        if (!modelElement.ContainsKey(destModelItem))
+                        {
+                            viewsAdded.Add(ProcessAndGetModelView(destModelItem));
+                            flowElementsToProcess.Enqueue(destFlowElementMI);
+                        }
+
+                        elem2elemConnections.Add(Tuple.Create(modelElement[currentMI], modelElement[destModelItem], linkModelItem));
+                    }
+                }
+                else
+                {
+                    Fx.Assert(false, "Unknown type of FlowNode");
+                }
+            }
+
+            if (!this.startNodeAdded)
+            {
+                panel.Children.Add(this.StartSymbol);
+                this.startNodeAdded = true;
+            }
+            foreach (UIElement view in viewsAdded)
+            {
+                panel.Children.Add(view);
+            }
+
+            // connection between flownode should be create only after all flownodes have been loaded on the canvas
+            if (addConnectorAfterLoaded)
+            {
+                this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
+                {
+                    if (this.isLoaded)
+                    {
+                        AddConnectorsToPanel(startNodeModelItem, elem2elemConnections, point2elemConnections);
+                    }
+                }));
+            }
+            else
+            {
+                AddConnectorsToPanel(startNodeModelItem, elem2elemConnections, point2elemConnections);
+            }
+        }
+
+        private void AddConnectorsToPanel(
+            ModelItem startNodeModelItem, 
+            List<Tuple<UIElement, UIElement, ModelItem>> elem2elemConnections, 
+            List<Tuple<ConnectionPoint, UIElement, ModelItem>> point2elemConnections)
+        {
+            List<Connector> connectorList = new List<Connector>();
+
+            if (startNodeModelItem != null)
+            {
+                ModelItem dest = GetCorrespondingElementOnCanvas(startNodeModelItem);
+                connectorList.Add(CreateLink(this.StartSymbol, modelElement[dest], this.ModelItem));
+            }
+
+            foreach (var connection in elem2elemConnections)
+            {
+                connectorList.Add(CreateLink(connection.Item1, connection.Item2, connection.Item3));
+            }
+
+            foreach (var connection in point2elemConnections)
+            {
+                connectorList.Add(CreateLink(connection.Item1, connection.Item2, connection.Item3));
+            }
+
+            foreach (Connector connector in connectorList)
+            {
+                panel.Children.Add(connector);
+            }
+        }
+
+        void DeleteLinkVisual(Connector link)
+        {
+            ConnectionPoint srcConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(link);
+            ConnectionPoint destConnectionPoint = FreeFormPanel.GetDestinationConnectionPoint(link);
+            //Update ConnectionPoints.            
+            srcConnectionPoint.AttachedConnectors.Remove(link);
+            destConnectionPoint.AttachedConnectors.Remove(link);
+
+            this.panel.Children.Remove(link);
+        }
+
+        void DeleteShapeVisual(UIElement deleteShape)
+        {
+            //Remove any link visuals attached to this shape. This is required for the scenarios as follows:
+            //Copy paste two Connected activities into flowchart and undo the paste. 
+            //The property is not removed as a model change. Hence the link visual will remain dangling on the designer.
+            List<Connector> attachedConnectors = GetAttachedConnectors(deleteShape);
+
+            foreach (Connector connector in attachedConnectors)
+            {
+                Fx.Assert(this.panel.Children.Contains(connector), "Connector does not exist");
+                this.DeleteLinkVisual(connector);
+            }
+
+            List<ConnectionPoint> connectionPoints = GetConnectionPoints(deleteShape);
+            if (connectionPoints.Contains(this.srcConnectionPoint))
+            {
+                this.srcConnectionPoint = null;
+                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+            }
+
+            ModelItem shapeModelItem = ((VirtualizedContainerService.VirtualizingContainer)deleteShape).ModelItem;
+            ModelItem flowNodeMI = this.GetFlowElementMI(shapeModelItem);
+
+            this.modelElement.Remove(shapeModelItem);
+            this.flowNodeToUIElement.Remove(flowNodeMI);
+            deleteShape.MouseEnter -= new MouseEventHandler(ChildElement_MouseEnter);
+            deleteShape.MouseLeave -= new MouseEventHandler(ChildElement_MouseLeave);
+            ((FrameworkElement)deleteShape).SizeChanged -= new SizeChangedEventHandler(ChildSizeChanged);
+            this.panel.Children.Remove(deleteShape);
+
+            // deselect removed item
+            if (this.Context != null)
+            {
+                HashSet<ModelItem> selectedItems = new HashSet<ModelItem>(this.Context.Items.GetValue<Selection>().SelectedObjects);
+                if (selectedItems.Contains(shapeModelItem))
+                {
+                    Selection.Toggle(this.Context, shapeModelItem);
+                }
+            }
+
+            //Update this.shapeLocations.
+            object locationOfShape = this.ViewStateService.RetrieveViewState(flowNodeMI, shapeLocation);
+            if (locationOfShape != null)
+            {
+                this.shapeLocations.Remove((Point)locationOfShape);
+            }
+
+        }
+
+        Connector CreatePropertyLink(ModelItem srcModelItem, ModelItem propertyValue, string propertyName)
+        {
+            Connector newConnector = null;
+            if (typeof(FlowStep).IsAssignableFrom(srcModelItem.ItemType))
+            {
+                ModelItem src = GetCorrespondingElementOnCanvas(srcModelItem);
+                ModelItem dest = GetCorrespondingElementOnCanvas(propertyValue);
+                newConnector = CreateLink(modelElement[src], modelElement[dest], srcModelItem);
+
+            }
+            else if (typeof(FlowDecision).IsAssignableFrom(srcModelItem.ItemType))
+            {
+                ModelItem dest = GetCorrespondingElementOnCanvas(propertyValue);
+                ConnectionPoint srcConnPoint;
+                if (propertyName.Equals("True"))
+                {
+                    srcConnPoint = FlowchartDesigner.GetTrueConnectionPoint(modelElement[srcModelItem]);
+                }
+                else
+                {
+                    srcConnPoint = FlowchartDesigner.GetFalseConnectionPoint(modelElement[srcModelItem]);
+                }
+                newConnector = CreateLink(srcConnPoint, modelElement[dest], srcModelItem);
+            }
+            else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(srcModelItem.ItemType))
+            {
+                ModelItem dest = GetCorrespondingElementOnCanvas(propertyValue);
+                IFlowSwitchLink link;
+                if (propertyName.Equals("Default"))
+                {
+                    link = GenericFlowSwitchHelper.CreateFlowSwitchLink(srcModelItem.ItemType, srcModelItem, null, true);
+                }
+                else
+                {
+                    Fx.Assert(propertyName.Length >= GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier.Length, "Case property names should be prepended by the string GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier");
+                    link = GenericFlowSwitchHelper.CreateFlowSwitchLink(srcModelItem.ItemType, srcModelItem, propertyName.Substring(GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier.Length), false);
+                }
+                IModelTreeItem modelTreeItem = (IModelTreeItem)this.ModelItem;
+                ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
+                link.ModelItem = linkModelItem;
+                newConnector = CreateLink(modelElement[srcModelItem], modelElement[dest], linkModelItem);
+            }
+            else // FlowStart
+            {
+                ModelItem dest = GetCorrespondingElementOnCanvas(propertyValue);
+                newConnector = CreateLink(this.StartSymbol, modelElement[dest], this.ModelItem);
+            }
+            return newConnector;
+
+        }
+
+        internal Connector GetLinkOnCanvas(ModelItem srcFlowElementModelItem, ModelItem destflowElementModelItem, string propertyName)
+        {
+            Connector linkOnCanvas = null;
+            ModelItem shapeModelItem = null;
+            List<Connector> outGoingConnectors = null;
+            if (!srcFlowElementModelItem.Equals(this.ModelItem))
+            {
+                shapeModelItem = this.GetCorrespondingElementOnCanvas(srcFlowElementModelItem);
+                outGoingConnectors = GetOutGoingConnectors(this.modelElement[shapeModelItem]);
+            }
+            else // Must be startNode
+            {
+                outGoingConnectors = GetOutGoingConnectors(this.StartSymbol);
+            }
+
+            foreach (Connector connector in outGoingConnectors)
+            {
+                ModelItem connectorDestModelItem = ((VirtualizedContainerService.VirtualizingContainer)FreeFormPanel.GetDestinationConnectionPoint(connector).ParentDesigner).ModelItem;
+                ModelItem connectorDestFlowElementMI = this.GetFlowElementMI(connectorDestModelItem);
+                //Following condition checks if the destination for current connector is equal to the destination passed in.
+                if (destflowElementModelItem != null && destflowElementModelItem.Equals(connectorDestFlowElementMI))
+                {
+                    if (GenericFlowSwitchHelper.IsGenericFlowSwitch(srcFlowElementModelItem.ItemType))
+                    {
+                        ModelItem linkModelItem = FlowchartDesigner.GetLinkModelItem(connector);
+                        if (linkModelItem.Properties["IsDefaultCase"].Value.GetCurrentValue().Equals(true) && propertyName.Equals("Default"))
+                        {
+                            linkOnCanvas = connector;
+                            break;
+                        }
+                        else
+                        {
+                            ModelItem connectorCaseMI = linkModelItem.Properties["Case"].Value;
+                            if (linkModelItem.Properties["IsDefaultCase"].Value.GetCurrentValue().Equals(false))
+                            {
+                                string caseName = connectorCaseMI == null ? null : GenericFlowSwitchHelper.GetString(connectorCaseMI.GetCurrentValue(), connectorCaseMI.ItemType);
+                                if (connectorCaseMI != null && caseName.Equals(propertyName.Substring(GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier.Length)))
+                                {
+                                    linkOnCanvas = connector;
+                                    break;
+                                }
+                                else if (connectorCaseMI == null)
+                                {
+                                    if (GenericFlowSwitchHelper.FlowSwitchNullCaseKeyIdentifier.Equals(propertyName.Substring(GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier.Length)))
+                                    {
+                                        linkOnCanvas = connector;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    else if (typeof(FlowDecision).IsAssignableFrom(srcFlowElementModelItem.ItemType))
+                    {
+                        ConnectionPoint trueConnPoint = FlowchartDesigner.GetTrueConnectionPoint(this.modelElement[shapeModelItem]);
+                        ConnectionPoint falseConnPoint = FlowchartDesigner.GetFalseConnectionPoint(this.modelElement[shapeModelItem]);
+                        ConnectionPoint connectorSrcConnPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
+                        if ((propertyName.Equals("True") && connectorSrcConnPoint.Equals(trueConnPoint))
+                            || (propertyName.Equals("False") && connectorSrcConnPoint.Equals(falseConnPoint)))
+                        {
+                            linkOnCanvas = connector;
+                            break;
+                        }
+                    }
+                    else    //FlowStep case.
+                    {
+                        linkOnCanvas = connector;
+                        break;
+                    }
+                }
+            }
+            return linkOnCanvas;
+        }
+
+
+        //Finally the call to CreateLink ends in calling this overloaded method.
+        Connector CreateLink(ConnectionPoint sourceConnectionPoint, ConnectionPoint destConnectionPoint, ModelItem linkModelItem)
+        {
+            Fx.Assert(sourceConnectionPoint != null, "sourceConnectionPoint is null.");
+            Fx.Assert(destConnectionPoint != null, "destinationConnectionPoint is null.");
+            Connector newConnector = null;
+            if (destConnectionPoint.PointType != ConnectionPointKind.Outgoing && sourceConnectionPoint.PointType != ConnectionPointKind.Incoming)
+            {
+                newConnector = GetConnectorViewState(sourceConnectionPoint.ParentDesigner, destConnectionPoint.ParentDesigner, linkModelItem, sourceConnectionPoint);
+                if (newConnector == null)
+                {
+                    newConnector = GetConnector(linkModelItem, sourceConnectionPoint, destConnectionPoint);
+                }
+                else
+                {
+                    //This is a workaround for CSDMain 139197, if any sectment of a connector is neither vertical nor horizontal, we'll reroute it.
+                    RerouteIfInvalid(newConnector, linkModelItem);
+                }
+                Fx.Assert(newConnector != null, "Link could not be created");
+            }
+            return newConnector;
+        }
+
+        Connector CreateLink(ConnectionPoint sourceConnectionPoint, UIElement dest, ModelItem linkModelItem)
+        {
+            Connector newConnector = null;
+            ConnectionPoint destConnectionPoint = null;
+            if (this.srcConnectionPointForAutoConnect != null)
+            {
+                Fx.Assert(this.srcConnectionPointForAutoConnect == sourceConnectionPoint, "sourceConnectionPoint should equal to this.srcConnectionPointForAutoConnect");
+                destConnectionPoint = FlowchartDesigner.GetDestinationConnectionPointForAutoConnect(dest, sourceConnectionPoint);
+                this.srcConnectionPointForAutoConnect = null;
+            }
+            else if (this.srcConnectionPointForAutoSplit == sourceConnectionPoint)
+            {
+                destConnectionPoint = this.GetDestinationConnectionPointForAutoSplit(this.srcConnectionPointForAutoSplit, dest);
+                this.srcConnectionPointForAutoSplit = null;
+            }
+            else
+            {
+                string errorMessage;
+                destConnectionPoint = FindBestMatchDestConnectionPoint(sourceConnectionPoint, dest, out errorMessage);
+            }
+            if (destConnectionPoint != null)
+            {
+                newConnector = CreateLink(sourceConnectionPoint, destConnectionPoint, linkModelItem);
+            }
+            return newConnector;
+        }
+
+
+        Connector CreateLink(UIElement source, UIElement dest, ModelItem linkModelItem)
+        {
+            Connector newConnector = null;
+            ConnectionPoint srcConnPoint = null, destConnPoint = null;
+            if (this.srcConnectionPointForAutoConnect != null)
+            {
+                srcConnPoint = this.srcConnectionPointForAutoConnect;
+                destConnPoint = FlowchartDesigner.GetDestinationConnectionPointForAutoConnect(dest, srcConnPoint);
+                this.srcConnectionPointForAutoConnect = null;
+            }
+            else if (this.srcConnectionPointForAutoSplit != null && this.srcConnectionPointForAutoSplit.ParentDesigner == source)
+            {
+                srcConnPoint = this.srcConnectionPointForAutoSplit;
+                destConnPoint = this.GetDestinationConnectionPointForAutoSplit(srcConnPoint, dest);
+                this.srcConnectionPointForAutoSplit = null;
+            }
+            else if (this.destConnectionPointForAutoSplit != null && this.destConnectionPointForAutoSplit.ParentDesigner == dest)
+            {
+                destConnPoint = this.destConnectionPointForAutoSplit;
+                srcConnPoint = this.GetSourceConnectionPointForAutoSplit(destConnPoint, source);
+                this.destConnectionPointForAutoSplit = null;
+            }
+            else
+            {
+                string errorMessage;
+                GetSrcDestConnectionPoints(source, dest, out srcConnPoint, out destConnPoint, out errorMessage);
+            }
+            if (srcConnPoint != null && destConnPoint != null)
+            {
+                newConnector = CreateLink(srcConnPoint, destConnPoint, linkModelItem);
+            }
+            return newConnector;
+        }
+
+        [SuppressMessage(FxCop.Category.Usage, FxCop.Rule.ReviewUnusedParameters, Justification = "Existing code")]
+        void RerouteIfInvalid(Connector connector, ModelItem linkModelItem)
+        {
+            if (connector.Points != null)
+            {
+                Point[] points = new Point[connector.Points.Count];
+                connector.Points.CopyTo(points, 0);
+                if (!ConnectorRouter.AreSegmentsValid(points))
+                {
+                    Reroute(connector, false);
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChanges.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChanges.cs
new file mode 100644 (file)
index 0000000..86ed794
--- /dev/null
@@ -0,0 +1,376 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Windows;
+    using System.Windows.Documents;
+    using System.Windows.Media;
+    using System.Windows.Shapes;
+    using System.Activities.Statements;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.Model;
+    using System.Runtime;
+    using System.Globalization;
+    using System.Activities.Presentation.FreeFormEditing;
+
+    partial class FlowchartDesigner
+    {
+        // The method will return the CaseKey if any.
+        // referenceUpdatedModelItems: say A linked to B by linker C, there is a relationship:
+        //   A.Properties["Relation"] = B. 
+        //   When delete the linker C, A will be updated like, A.Properties["Relation"] = null;
+        //   In multiple drag/drop, the A.Properties["Relation"] is set correctly before coming
+        //   here, which means we should not set the value again, otherwise the correct,
+        //   value which is set previously, will be removed.
+        internal IFlowSwitchLink DeleteLink(Connector link, bool isMoveOrAutoSplit = false,
+            HashSet<ModelItem> referenceUpdatedModelItems = null)
+        {
+            IFlowSwitchLink caseKey = null;
+            using (EditingScope deleteLinkEditingScope =
+                        ((IModelTreeItem)this.ModelItem).ModelTreeManager.CreateEditingScope(SR.FCDeleteLink))
+            {
+                caseKey = DeleteLinkImpl(link, isMoveOrAutoSplit, referenceUpdatedModelItems);
+                deleteLinkEditingScope.Complete();
+            }
+            return caseKey;
+        }
+
+        private IFlowSwitchLink DeleteLinkImpl(Connector link, bool isMoveOrAutoSplit = false, 
+            HashSet<ModelItem> referenceUpdatedModelItems = null)
+        {
+            IFlowSwitchLink caseKey = null;
+            ModelItem linkModelItem = FlowchartDesigner.GetLinkModelItem(link);
+
+            if (referenceUpdatedModelItems != null
+                && referenceUpdatedModelItems.Contains(linkModelItem))
+            {
+                return caseKey;
+            }
+            ConnectionPoint srcConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(link);
+            ConnectionPoint destConnectionPoint = FreeFormPanel.GetDestinationConnectionPoint(link);
+
+            if (typeof(FlowStep).IsAssignableFrom(linkModelItem.ItemType))
+            {
+                linkModelItem.Properties["Next"].SetValue(null);
+            }
+            else if (typeof(FlowDecision).IsAssignableFrom(linkModelItem.ItemType))
+            {
+                //Determine if it is True or False branch.
+                if (srcConnectionPoint.Equals(FlowchartDesigner.GetTrueConnectionPoint(srcConnectionPoint.ParentDesigner)))
+                {
+                    //True branch
+                    linkModelItem.Properties["True"].SetValue(null);
+                }
+                else
+                {
+                    linkModelItem.Properties["False"].SetValue(null);
+                }
+            }
+            else if (typeof(IFlowSwitchLink).IsAssignableFrom(linkModelItem.ItemType))
+            {
+                IFlowSwitchLink flowSwitchLink = (IFlowSwitchLink)linkModelItem.GetCurrentValue();
+                caseKey = flowSwitchLink;
+                //Transitioning from the fakeModelItem world to the real ModelItem world.
+                FlowNode fs = flowSwitchLink.ParentFlowSwitch;
+                ModelItem realFlowSwitchMI = (this.ModelItem as IModelTreeItem).ModelTreeManager.WrapAsModelItem(fs);
+                if (referenceUpdatedModelItems != null
+                    && referenceUpdatedModelItems.Contains(realFlowSwitchMI))
+                {
+                    return caseKey;
+                }
+
+                if (flowSwitchLink.IsDefaultCase)
+                {
+                    realFlowSwitchMI.Properties["Default"].SetValue(null);
+
+                    if (!isMoveOrAutoSplit)
+                    {
+                        realFlowSwitchMI.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].SetValue(FlowSwitchLabelFeature.DefaultCaseDisplayNameDefaultValue);
+                    }
+                }
+                else
+                {
+                   GenericFlowSwitchHelper.RemoveCase(realFlowSwitchMI.Properties["Cases"], flowSwitchLink.CaseObject);
+                }
+
+            }
+            else // StartNode
+            {
+                this.ModelItem.Properties["StartNode"].SetValue(null);
+            }
+            
+            this.StoreConnectorViewState(linkModelItem, null, srcConnectionPoint, true);
+            return caseKey;
+        }
+
+
+        void DeleteShape(ModelItem shapeModelItem, HashSet<ModelItem> updatedItems = null)
+        {
+            ModelItem flowElementMI = GetFlowElementMI(shapeModelItem);
+            Fx.Assert(flowElementMI != null, "Invalid shape in Flowchart");
+            bool itemRemoved = this.ModelItem.Properties["Nodes"].Collection.Remove(flowElementMI);
+            //Clean up the FlowStep so that shapeModelItem.Parents will be updated and FlowStep will not be leaked.
+            if (typeof(FlowStep).IsAssignableFrom(flowElementMI.ItemType)
+                && (updatedItems == null || !updatedItems.Contains(flowElementMI)))
+            {
+                flowElementMI.Properties["Action"].SetValue(null);
+            }
+            Fx.Assert(itemRemoved, "Selected item not present in the Flowchart object");
+        }
+
+
+        bool UpdateFlowChartObject(ConnectionPoint sourceConnPoint, ConnectionPoint destConnPoint, out string errorMessage, bool isLinkValidDueToLinkMove, IFlowSwitchLink caseKey)
+        {
+            //srcDesigner will be null for the case where source designer is StartSymbol.
+            VirtualizedContainerService.VirtualizingContainer srcDesigner = sourceConnPoint.ParentDesigner as VirtualizedContainerService.VirtualizingContainer;
+            VirtualizedContainerService.VirtualizingContainer destDesigner = destConnPoint.ParentDesigner as VirtualizedContainerService.VirtualizingContainer;
+            ModelItem linkSource;
+            ModelItem linkDest = destDesigner.ModelItem;
+            ModelItem destFlowElementMI = GetFlowElementMI(linkDest);
+            PointCollection connectorViewState = new PointCollection(ConnectorRouter.Route(this.panel, sourceConnPoint, destConnPoint));
+            errorMessage = string.Empty;
+            
+            if (sourceConnPoint.ParentDesigner is StartSymbol)
+            {
+                linkSource = this.ModelItem;
+                if (linkSource.Properties["StartNode"].Value == null || isLinkValidDueToLinkMove)
+                {
+                    this.StoreConnectorViewState(linkSource, connectorViewState, sourceConnPoint);
+                    linkSource.Properties["StartNode"].SetValue(destFlowElementMI);
+                }
+                else
+                {
+                    errorMessage = SR.FCNextLinkDefined;
+                }
+            }
+            else
+            {
+                linkSource = srcDesigner.ModelItem;
+                ModelItem srcFlowElementMI = GetFlowElementMI(linkSource);
+
+                if (typeof(FlowStep).IsAssignableFrom(srcFlowElementMI.ItemType))
+                {
+                    if (srcFlowElementMI.Properties["Next"].Value == null || isLinkValidDueToLinkMove)
+                    {
+                        this.StoreConnectorViewState(srcFlowElementMI, connectorViewState, sourceConnPoint);
+                        srcFlowElementMI.Properties["Next"].SetValue(destFlowElementMI);
+                    }
+                    else
+                    {
+                        errorMessage = SR.FCNextLinkDefined;
+                    }
+                }
+                else if (typeof(FlowDecision).IsAssignableFrom(srcFlowElementMI.ItemType))
+                {
+                    if (sourceConnPoint.Equals(FlowchartDesigner.GetTrueConnectionPoint(this.modelElement[linkSource])))
+                    {
+                        if (linkSource.Properties["True"].Value == null || isLinkValidDueToLinkMove)
+                        {
+                            this.StoreConnectorViewState(srcFlowElementMI, connectorViewState, sourceConnPoint);
+                            linkSource.Properties["True"].SetValue(destFlowElementMI);
+                        }
+                        else
+                        {
+                            errorMessage = SR.FCTrueBranchExists;
+                        }
+                    }
+                    else if (sourceConnPoint.Equals(FlowchartDesigner.GetFalseConnectionPoint(this.modelElement[linkSource])))
+                    {
+                        if (linkSource.Properties["False"].Value == null || isLinkValidDueToLinkMove)
+                        {
+                            this.StoreConnectorViewState(srcFlowElementMI, connectorViewState, sourceConnPoint);
+                            linkSource.Properties["False"].SetValue(destFlowElementMI);
+                        }
+                        else
+                        {
+                            errorMessage = SR.FCFalseBranchExists;
+                        }
+                    }
+                    else
+                    {
+                        errorMessage = SR.FCFlowConditionLinkError;
+                    }
+
+                }
+                else //FlowSwitch
+                {
+                    if (!CreateFlowSwitchLink(sourceConnPoint, srcFlowElementMI, destFlowElementMI, caseKey, connectorViewState, ref errorMessage))
+                    {
+                        return false;
+                    }
+                }
+            }
+            return errorMessage.Equals(string.Empty);
+        }
+
+        bool CreateFlowSwitchLink(ConnectionPoint sourceConnPoint, ModelItem srcFlowElementMI, ModelItem destFlowElementMI, IFlowSwitchLink caseKey, PointCollection connectorViewState, ref string errorMessage)
+        {
+            IModelTreeItem modelTreeItem = this.ModelItem as IModelTreeItem;
+            if ((caseKey != null && caseKey.IsDefaultCase) || (caseKey == null && srcFlowElementMI.Properties["Default"].Value == null))
+            {
+                IFlowSwitchLink link = GenericFlowSwitchHelper.CreateFlowSwitchLink(srcFlowElementMI.ItemType, srcFlowElementMI, null, true);
+                ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
+                link.ModelItem = linkModelItem;
+                if (connectorViewState != null)
+                {
+                    this.StoreConnectorViewState(linkModelItem, connectorViewState, sourceConnPoint);
+                }
+                srcFlowElementMI.Properties["Default"].SetValue(destFlowElementMI);
+            }
+            else
+            {
+                ModelProperty casesProp = srcFlowElementMI.Properties["Cases"];
+
+                string uniqueCaseName = null;
+
+                if (caseKey == null)
+                {
+                    Type typeArgument = srcFlowElementMI.ItemType.GetGenericArguments()[0];
+                    if (GenericFlowSwitchHelper.CanBeGeneratedUniquely(typeArgument))
+                    {
+                        uniqueCaseName = GenericFlowSwitchHelper.GetCaseName(casesProp, typeArgument, out errorMessage);
+                    }
+                    else
+                    {
+                        FlowSwitchCaseEditorDialog editor = new FlowSwitchCaseEditorDialog(srcFlowElementMI, this.Context, this, SR.AddNewCase, typeArgument);
+                        editor.WindowSizeToContent = SizeToContent.WidthAndHeight;
+                        if (!editor.ShowOkCancel())
+                        {
+                            return false;
+                        }
+                        uniqueCaseName = editor.CaseName;
+                    }
+                }
+                else
+                {
+                    uniqueCaseName = caseKey.CaseName;
+                }
+
+                if (string.IsNullOrEmpty(errorMessage))
+                {
+                    IFlowSwitchLink link = GenericFlowSwitchHelper.CreateFlowSwitchLink(srcFlowElementMI.ItemType, srcFlowElementMI, uniqueCaseName, false);
+                    ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
+                    link.ModelItem = linkModelItem;
+                    if (connectorViewState != null)
+                    {
+                        this.StoreConnectorViewState(linkModelItem, connectorViewState, sourceConnPoint);
+                    }
+                    GenericFlowSwitchHelper.AddCase(srcFlowElementMI.Properties["Cases"], link.CaseObject, destFlowElementMI.GetCurrentValue());
+                }
+            }
+            return true;
+        }
+
+        //Interfaces for users to create links on the flowchart.
+        internal bool CreateLinkGesture(ConnectionPoint sourceConnectionPoint, ConnectionPoint destConnectionPoint, out string errorMessage, IFlowSwitchLink caseKey)
+        {
+            return CreateLinkGesture(sourceConnectionPoint, destConnectionPoint, out errorMessage, false, caseKey);
+        }
+        
+        internal bool CreateLinkGesture(ConnectionPoint sourceConnectionPoint, ConnectionPoint destConnectionPoint, out string errorMessage, bool isLinkValidDueToLinkMove, IFlowSwitchLink caseKey)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            Fx.Assert(sourceConnectionPoint != null, "sourceConnectionPoint is null.");
+            Fx.Assert(destConnectionPoint != null, "destConnectionPoint is null.");
+            bool linkCreated = false;
+            errorMessage = string.Empty;
+            if (destConnectionPoint.PointType != ConnectionPointKind.Outgoing && sourceConnectionPoint.PointType != ConnectionPointKind.Incoming)
+            {
+                using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.FCCreateLink))
+                {
+                    linkCreated = UpdateFlowChartObject(sourceConnectionPoint, destConnectionPoint, out errorMessage, isLinkValidDueToLinkMove, caseKey);
+                    try
+                    {
+                        es.Complete();
+                    }
+                    catch (ArgumentException)
+                    {
+                        errorMessage = SR.InvalidFlowSwitchCaseMessage;
+                        linkCreated = false;
+                    }
+
+                }
+            }
+            else
+            {
+                errorMessage = SR.FCInvalidLink;
+            }
+         
+            return linkCreated;
+        }
+
+        internal bool CreateLinkGesture(ConnectionPoint sourceConnectionPoint, UIElement dest, Point mouseLocation, out string errorMessage, bool isLinkValidDueToLinkMove, IFlowSwitchLink caseKey)
+        {
+            bool linkCreated = false;
+            double minDist;
+            errorMessage = string.Empty;
+
+            ConnectionPoint destConnectionPoint = FindClosestConnectionPoint(
+                mouseLocation, 
+                FlowchartDesigner.GetConnectionPoints(dest).Where(p => p.PointType != ConnectionPointKind.Outgoing).ToList(), 
+                out minDist);
+
+            if (destConnectionPoint != null)
+            {
+                linkCreated = CreateLinkGesture(sourceConnectionPoint, destConnectionPoint, out errorMessage, isLinkValidDueToLinkMove, caseKey);
+            }
+            else
+            {
+                errorMessage = SR.FCInvalidLink;
+            }
+
+            return linkCreated;
+        }
+        internal bool CreateLinkGesture(ConnectionPoint sourceConnectionPoint, UIElement dest, out string errorMessage, bool isLinkValidDueToLinkMove, IFlowSwitchLink caseKey)
+        {
+            bool linkCreated = false;
+            ConnectionPoint destConnectionPoint = ClosestDestConnectionPoint(sourceConnectionPoint, dest, out errorMessage);
+            if (destConnectionPoint != null)
+            {
+                linkCreated = CreateLinkGesture(sourceConnectionPoint, destConnectionPoint, out errorMessage, isLinkValidDueToLinkMove, caseKey);
+            }
+            return linkCreated;
+        }
+
+        internal bool CreateLinkGesture(UIElement source, ConnectionPoint destConnectionPoint, Point mouseLocation, out string errorMessage, bool isLinkValidDueToLinkMove, IFlowSwitchLink caseKey)
+        {
+            bool linkCreated = false;
+            double minDist;
+            errorMessage = string.Empty;
+
+            ConnectionPoint sourceConnectionPoint = FindClosestConnectionPoint(
+                mouseLocation,
+                FlowchartDesigner.GetConnectionPoints(source).Where(p => p.PointType != ConnectionPointKind.Incoming).ToList(),
+                out minDist);
+
+            if (sourceConnectionPoint != null)
+            {
+                linkCreated = CreateLinkGesture(sourceConnectionPoint, destConnectionPoint, out errorMessage, isLinkValidDueToLinkMove, caseKey);
+            }
+            else
+            {
+                errorMessage = SR.FCInvalidLink;
+            }
+
+            return linkCreated;
+        }
+
+        internal bool CreateLinkGesture(UIElement source, UIElement dest, out string errorMessage, IFlowSwitchLink caseKey)
+        {
+            bool linkCreated = false;
+            ConnectionPoint srcConnPoint, destConnPoint;
+            GetSrcDestConnectionPoints(source, dest, out srcConnPoint, out destConnPoint, out errorMessage);
+            if (srcConnPoint != null && destConnPoint != null)
+            {
+                linkCreated = CreateLinkGesture(srcConnPoint, destConnPoint, out errorMessage, caseKey);
+            }
+            return linkCreated;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..3832b3b
--- /dev/null
@@ -0,0 +1,2778 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.Hosting;
+    using System.Activities.Presentation.Internal.PropertyEditing;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Presentation.ViewState;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+    using System.Collections.ObjectModel;
+    using System.ComponentModel;
+    using System.Linq;
+    using System.Reflection;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Documents;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Windows.Threading;
+
+    [ActivityDesignerOptions(AlwaysCollapseChildren = true)]
+    partial class FlowchartDesigner : IAutoConnectContainer, IAutoSplitContainer
+    {
+        public static readonly DependencyProperty ConnectionPointsProperty = DependencyProperty.RegisterAttached("ConnectionPoints", typeof(List<ConnectionPoint>), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
+        public static readonly DependencyProperty LinkModelItemProperty = DependencyProperty.RegisterAttached("LinkModelItem", typeof(ModelItem), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
+        public static readonly DependencyProperty FlowElementModelItemProperty = DependencyProperty.RegisterAttached("FlowElementModelItem", typeof(ModelItem), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
+
+        public static readonly DependencyProperty FlowchartWidthProperty = DependencyProperty.Register("FlowchartWidth", typeof(double), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
+        public static readonly DependencyProperty FlowchartHeightProperty = DependencyProperty.Register("FlowchartHeight", typeof(double), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
+
+        public static readonly DependencyProperty TrueConnectionPointProperty = DependencyProperty.RegisterAttached("TrueConnectionPoint", typeof(ConnectionPoint), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
+        public static readonly DependencyProperty FalseConnectionPointProperty = DependencyProperty.RegisterAttached("FalseConnectionPoint", typeof(ConnectionPoint), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
+
+        public static readonly DependencyProperty ShowAllConditionsProperty = DependencyProperty.Register("ShowAllConditions", typeof(bool), typeof(FlowchartDesigner));
+
+        public static readonly RoutedCommand SetAsStartNodeCommand = new RoutedCommand("SetAsStartNode", typeof(FlowchartDesigner));
+        //public static readonly RoutedCommand ConnectNodesCommand = new RoutedCommand("ConnectNodes", typeof(FlowchartDesigner));
+        public static readonly RoutedCommand ShowAllConditionsCommand = new RoutedCommand("ShowAllConditionsCommand", typeof(FlowchartDesigner));
+        public static readonly RoutedCommand HideAllConditionsCommand = new RoutedCommand("HideAllConditionsCommand", typeof(FlowchartDesigner));
+
+        const double flowElementCaptionFontSize = 11;
+        const double DebugTimeMaxConnectorShapeDist = 10;
+        static readonly FontFamily flowElementCaptionFontFamily = new FontFamily("Tohoma");
+        static readonly FontStyle flowElementCaptionFontStyle = new FontStyle();
+        static readonly Typeface flowElementCaptionTypeface = new Typeface("Tohoma");
+        
+        internal Dictionary<ModelItem, UIElement> modelElement;
+        //Consider FlowStep.Action = SomeActivity. FlowStep modelItem is referred as FlowNodeMI, SomeActivity modelItem is shapeMI and the designer for SomeActivity is the shape on canvas.
+        //To go from the FlowNodeMI to the shape on canvas, we can use the path: FlowNodeMI(FlowStep.Action)-> shapeMI (modelElement Dictionary)-> Actual UIElement shape
+        //However this path does not always work.  For instance in delete case: FlowStep.Action is set to null to update the ModelItem.Parents property on the shapeMI
+        //flowNodeToUIElement dictionary is used to solve this problem.
+        Dictionary<ModelItem, UIElement> flowNodeToUIElement;
+
+        const double startSymbolTopMargin = 10.0;
+        const string shapeLocation = "ShapeLocation";
+        const string shapeSize = "ShapeSize";
+        const string TrueConnectorViewStateKey = "TrueConnector";
+        const string FalseConnectorViewStateKey = "FalseConnector";
+        const string CaseViewStateKeyAppendString = "Connector";
+        const string FlowSwitchDefaultViewStateKey = "Default";
+        const string ConnectorViewStateKey = "ConnectorLocation";
+        static Color ConnectionPointColor = Colors.LightGray;
+        UIElement lastConnectionPointMouseUpElement = null;
+        //shapeLocations is useful to avoid pasting on existing shapes.
+        //This is populated in 2 cases 1. When the shape with existing Viewstate is added 2. On ViewState changed.
+        HashSet<Point> shapeLocations = null;
+        //selectedConnector is a placeholder for the last connector selected.
+        //This removes the need for a dictionary mapping modelitem to connector for deletion.
+        //This will change if in future we plan to support multi-select + delete.
+        Connector selectedConnector;
+        //srcConnectionPoint is required for link addition gesture to store the source of the link.
+        ConnectionPoint srcConnectionPoint;
+        ConnectionPoint srcConnectionPointForAutoConnect;
+        ConnectionPoint srcConnectionPointForAutoSplit;
+        ConnectionPoint destConnectionPointForAutoSplit;
+        EdgeLocation entryEdgeForAutoSplit;
+        EdgeLocation exitEdgeForAutoSplit;
+        bool internalViewStateChange = false;
+        bool startNodeAdded = false;
+        bool updatingSelectedConnector;
+        internal FreeFormPanel panel = null;
+        AdornerLayer adornerLayer;
+        MenuItem setAsStartNode;
+        bool? isRightToLeft;
+        private bool isLoaded = false;
+
+        internal bool IsResizing { get; set; }
+
+        public FlowchartDesigner()
+        {
+            InitializeComponent();
+            this.modelElement = new Dictionary<ModelItem, UIElement>();
+            this.flowNodeToUIElement = new Dictionary<ModelItem, UIElement>();
+            this.shapeLocations = new HashSet<Point>();
+            this.selectedConnector = null;
+            ConstructSetAsStartNodeMenuItem();
+
+            this.Loaded += (s, e) =>
+            {
+                this.isLoaded = true;
+
+                if (this.ShowExpanded)
+                {
+                    ((ICompositeViewEvents)this).RegisterDefaultCompositeView(this);
+                }
+                DesignerView designerView = this.Context.Services.GetService<DesignerView>() as DesignerView;
+                if (!designerView.ContextMenu.Items.Contains(setAsStartNode))
+                {
+                    designerView.ContextMenu.Items.Add(setAsStartNode);
+                }
+
+                WorkflowCommandExtensionItem item = this.Context.Items.GetValue<WorkflowCommandExtensionItem>();
+                if (item != null)
+                {
+                    if (item.CommandExtensionCallback is DefaultCommandExtensionCallback)
+                    {
+                        this.InputBindings.Add(new KeyBinding(FlowchartDesignerCommands.ConnectNodesCommand, new DefaultCommandExtensionCallback.ChordKeyGesture(Key.E, Key.F)));
+                    }
+                }
+
+                Selection.Subscribe(Context, OnSelectionChanged);
+            };
+
+            this.Unloaded += (s, e) =>
+            {
+                this.isLoaded = false;
+
+                if (object.Equals(this.DefaultCompositeView, this))
+                {
+                    ((ICompositeViewEvents)this).UnregisterDefaultCompositeView(this);
+                }
+                DesignerView designerView = this.Context.Services.GetService<DesignerView>() as DesignerView;
+                designerView.ContextMenu.Items.Remove(setAsStartNode);
+
+                Selection.Unsubscribe(Context, OnSelectionChanged);
+            };
+        }
+
+        public static double FlowNodeCaptionFontSize
+        {
+            get { return flowElementCaptionFontSize; }
+        }
+
+        public static FontFamily FlowNodeCaptionFontFamily
+        {
+            get { return flowElementCaptionFontFamily; }
+        }
+
+        public static FontStyle FlowNodeCaptionFontStyle
+        {
+            get { return flowElementCaptionFontStyle; }
+        }
+
+        public static Typeface FlowElementCaptionTypeface
+        {
+            get { return flowElementCaptionTypeface; }
+        }
+
+        void OnSetAsStartNodeCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            //The condition is necessary so that the child flowchart inside a flowchart doesn't try to handle the event.
+            if (!object.Equals(e.Source, this))
+            {
+                e.CanExecute = !this.IsReadOnly;
+                e.Handled = true;
+            }
+        }
+
+        void OnShowAllConditionsMenuLoaded(object sender, RoutedEventArgs e)
+        {
+            MenuItem item = sender as MenuItem;
+            if (null != item)
+            {
+                bool expanded = (bool)GetValue(WorkflowViewElement.ShowExpandedProperty);
+                if (expanded)
+                {
+                    item.Visibility = Visibility.Visible;
+                }
+                else
+                {
+                    item.Visibility = Visibility.Collapsed;
+                }
+            }
+            e.Handled = true;
+        }
+
+        void OnHideAllConditionsMenuLoaded(object sender, RoutedEventArgs e)
+        {
+            MenuItem item = sender as MenuItem;
+            if (null != item)
+            {
+                bool expanded = (bool)GetValue(WorkflowViewElement.ShowExpandedProperty);
+                if (expanded)
+                {
+                    item.Visibility = Visibility.Visible;
+                }
+                else
+                {
+                    item.Visibility = Visibility.Collapsed;
+                }
+            }
+            e.Handled = true;
+        }
+
+        void OnSetAsStartNodeCommandExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            ModelItem selection = this.Context.Items.GetValue<Selection>().PrimarySelection;
+            Fx.Assert(this.modelElement.ContainsKey(selection), "Selection is not contained in this container");
+            this.ModelItem.Properties["StartNode"].SetValue(this.GetFlowElementMI(selection));
+            e.Handled = true;
+        }
+
+        void ConstructSetAsStartNodeMenuItem()
+        {
+            setAsStartNode = new MenuItem();
+            setAsStartNode.Command = FlowchartDesigner.SetAsStartNodeCommand;
+            setAsStartNode.Header = this.SetAsStartNodeMenuItemHeader;
+            setAsStartNode.Visibility = Visibility.Collapsed;
+            setAsStartNode.Loaded += new RoutedEventHandler(OnSetAsStartNodeLoaded);
+            //AutomationProperties
+            setAsStartNode.SetValue(System.Windows.Automation.AutomationProperties.AutomationIdProperty, "SetAsStartNodeMenuItem");
+        }
+
+        string SetAsStartNodeMenuItemHeader
+        {
+            get { return (string)this.FindResource("SetAsStartNodeMenuItemHeader"); }
+        }
+
+        void OnSetAsStartNodeLoaded(object sender, RoutedEventArgs e)
+        {
+            MenuItem setAsStartNodeMenuItem = sender as MenuItem;
+            setAsStartNodeMenuItem.Visibility = Visibility.Collapsed;
+            Selection selection = this.Context.Items.GetValue<Selection>();
+            if (selection.SelectionCount == 1 && this.modelElement.ContainsKey(selection.PrimarySelection))
+            {
+                setAsStartNodeMenuItem.Visibility = Visibility.Visible;
+            }
+            e.Handled = true;
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(Flowchart);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(FlowchartDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("StartNode"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Nodes"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, new FeatureAttribute(typeof(FlowchartSizeFeature)));
+
+            PropertyInfo nodesProperty = type.GetProperty("Nodes");
+            builder.AddCustomAttributes(type, nodesProperty, new ShowPropertyInOutlineViewAttribute());
+
+            type = typeof(FlowStep);
+            builder.AddCustomAttributes(type, type.GetProperty("Action"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Next"), BrowsableAttribute.No);
+
+            builder.AddCustomAttributes(type, new ShowInOutlineViewAttribute() { PromotedProperty = "Action" });
+            builder.AddCustomAttributes(type, type.GetProperty("Next"), new ShowPropertyInOutlineViewAsSiblingAttribute());
+
+            builder.AddCustomAttributes(typeof(FlowNode), new ShowInOutlineViewAttribute());
+            builder.AddCustomAttributes(typeof(Collection<FlowNode>), new ShowInOutlineViewAttribute());
+
+            CutCopyPasteHelper.AddDisallowedTypeForCopy(typeof(StartNode));
+        }
+
+        //Unregister all events. Reset startNodeAdded to enable reuse of the designer.
+        void CleanupFlowchart()
+        {
+            this.startNodeAdded = false;
+            this.panel.Children.Clear();
+            this.flowNodeToUIElement.Clear();
+            // Cleaning up the designers as they might be re-used.
+            foreach (UIElement element in this.modelElement.Values)
+            {
+                element.MouseEnter -= new MouseEventHandler(ChildElement_MouseEnter);
+                element.MouseLeave -= new MouseEventHandler(ChildElement_MouseLeave);
+            }
+            this.panel.LocationChanged -= new LocationChangedEventHandler(OnFreeFormPanelLocationChanged);
+            this.panel.ConnectorMoved -= new ConnectorMovedEventHandler(OnFreeFormPanelConnectorMoved);
+            this.panel.LayoutUpdated -= new EventHandler(OnFreeFormPanelLayoutUpdated);
+            this.panel.RequiredSizeChanged -= new RequiredSizeChangedEventHandler(OnFreeFormPanelRequiredSizeChanged);
+            this.panel = null;
+            ModelTreeManager modelTreeManager = (this.ModelItem as IModelTreeItem).ModelTreeManager;
+            modelTreeManager.EditingScopeCompleted -= new EventHandler<EditingScopeEventArgs>(ModelTreeManager_EditingScopeCompleted);
+            this.ViewStateService.ViewStateChanged -= new ViewStateChangedEventHandler(OnViewStateChanged);
+        }
+
+        void OnFreeFormPanelLoaded(object sender, RoutedEventArgs eventArgs)
+        {
+            //Adding the following check because of 137896: Inside tab control multiple Loaded events happen without an Unloaded event.
+            if (this.panel != null)
+            {
+                CleanupFlowchart();
+            }
+            this.panel = (FreeFormPanel)sender;
+            if (this.ShowExpanded)
+            {
+                PopulateFlowchartChildren();
+            }
+        }
+
+        void OnFreeFormPanelUnLoaded(object sender, RoutedEventArgs eventArgs)
+        {
+            if (object.Equals(sender, this.panel))
+            {
+                CleanupFlowchart();
+            }
+        }
+
+        void PopulateFlowchartChildren()
+        {
+            Fx.Assert(this.ShowExpanded, "This method should be called only when the flowchart designer is shown expanded.");
+            Fx.Assert(this.panel != null, "panel cannot be null");
+            this.panel.LocationChanged += new LocationChangedEventHandler(OnFreeFormPanelLocationChanged);
+            this.panel.ConnectorMoved += new ConnectorMovedEventHandler(OnFreeFormPanelConnectorMoved);
+            this.panel.LayoutUpdated += new EventHandler(OnFreeFormPanelLayoutUpdated);
+            this.panel.RequiredSizeChanged += new RequiredSizeChangedEventHandler(OnFreeFormPanelRequiredSizeChanged);
+
+            DesignerPerfEventProvider perfEventProvider = this.Context.Services.GetService<DesignerPerfEventProvider>();
+            perfEventProvider.FlowchartDesignerLoadStart();
+            ModelTreeManager modelTreeManager = (this.ModelItem as IModelTreeItem).ModelTreeManager;
+            modelTreeManager.EditingScopeCompleted += new EventHandler<EditingScopeEventArgs>(ModelTreeManager_EditingScopeCompleted);
+            this.ViewStateService.ViewStateChanged += new ViewStateChangedEventHandler(OnViewStateChanged);
+
+            this.startNodeAdded = false;
+            panel.Children.Clear();
+            this.modelElement.Clear();
+            this.flowNodeToUIElement.Clear();
+            this.shapeLocations.Clear();
+
+            this.FlowchartWidth = (double)TypeDescriptor.GetProperties(this.ModelItem)[FlowchartSizeFeature.WidthPropertyName].GetValue(this.ModelItem);
+            this.FlowchartHeight = (double)TypeDescriptor.GetProperties(this.ModelItem)[FlowchartSizeFeature.HeightPropertyName].GetValue(this.ModelItem);
+
+            CreateStartSymbol();
+            AddFlowElementsToDesigner(this.ModelItem.Properties["Nodes"].Collection, true);
+            perfEventProvider.FlowchartDesignerLoadEnd();
+        }
+
+        //This is to keep this.selectedConnector upto date.
+        //Eg. cases included 1. create a link, select it and undo, 2. Move a link from one shape to another.
+        void OnFreeFormPanelLayoutUpdated(object sender, EventArgs e)
+        {
+            if (!this.panel.Children.Contains(this.selectedConnector))
+            {
+                this.selectedConnector = null;
+            }
+        }
+
+        public UIElement StartSymbol { get; set; }
+
+        internal static List<ConnectionPoint> GetConnectionPoints(DependencyObject obj)
+        {
+            return (List<ConnectionPoint>)obj.GetValue(FlowchartDesigner.ConnectionPointsProperty);
+        }
+
+        internal static ConnectionPoint GetFalseConnectionPoint(DependencyObject obj)
+        {
+            return (ConnectionPoint)obj.GetValue(FlowchartDesigner.FalseConnectionPointProperty);
+        }
+
+        internal static ModelItem GetLinkModelItem(DependencyObject obj)
+        {
+            return (ModelItem)obj.GetValue(FlowchartDesigner.LinkModelItemProperty);
+        }
+
+        internal static ModelItem GetFlowElementModelItem(DependencyObject obj)
+        {
+            return (ModelItem)obj.GetValue(FlowchartDesigner.FlowElementModelItemProperty);
+        }
+
+        internal static ConnectionPoint GetTrueConnectionPoint(DependencyObject obj)
+        {
+            return (ConnectionPoint)obj.GetValue(FlowchartDesigner.TrueConnectionPointProperty);
+        }
+
+        public double FlowchartWidth
+        {
+            get { return (double)this.GetValue(FlowchartDesigner.FlowchartWidthProperty); }
+            set { this.SetValue(FlowchartDesigner.FlowchartWidthProperty, value); }
+        }
+
+        public double FlowchartHeight
+        {
+            get { return (double)this.GetValue(FlowchartDesigner.FlowchartHeightProperty); }
+            set { this.SetValue(FlowchartDesigner.FlowchartHeightProperty, value); }
+        }
+
+        public bool ShowAllConditions
+        {
+            get { return (bool)GetValue(ShowAllConditionsProperty); }
+            set { SetValue(ShowAllConditionsProperty, value); }
+        }
+
+        ModelItem GetFlowElementMI(ModelItem shapeModelItem)
+        {
+            Fx.Assert(this.modelElement.ContainsKey(shapeModelItem), "The ModelItem does not exist.");
+            UIElement element = this.modelElement[shapeModelItem];
+            ModelItem flowElementMI = FlowchartDesigner.GetFlowElementModelItem(element);
+            Fx.Assert(flowElementMI != null, "FlowNode dependency property not set.");
+            return flowElementMI;
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+        }
+
+        //Returns actual link destination - Activity ModelItem in case of a FlowStep.
+        ModelItem GetCorrespondingElementOnCanvas(ModelItem model)
+        {
+            ModelItem destModelItem = model;
+            if (typeof(FlowStep).IsAssignableFrom(model.ItemType)
+                && model.Properties["Action"].Value != null)
+            {
+                destModelItem = model.Properties["Action"].Value;
+            }
+            if (typeof(Flowchart) == model.ItemType)
+            {
+                destModelItem = flowStart;
+            }
+            return destModelItem;
+        }
+
+        private bool IsRightToLeft
+        {
+            get
+            {
+                if (!this.isRightToLeft.HasValue)
+                {
+                    this.isRightToLeft = FreeFormPanelUtilities.IsRightToLeft(this.flowchartContentPresenter);
+                }
+
+                return this.isRightToLeft.Value;
+            }
+        }
+
+        private void OnFlowchartGridMouseLeave(object sender, MouseEventArgs e)
+        {
+            bool endLinkCreation = !IsVisualHit(sender as UIElement, sender as UIElement, e.GetPosition(sender as IInputElement));
+            if (endLinkCreation)
+            {
+                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+                this.srcConnectionPoint = null;
+            }
+        }
+
+        private void OnFlowchartGridMouseMove(object sender, MouseEventArgs e)
+        {
+            if (this.srcConnectionPoint != null)
+            {
+                AutoScrollHelper.AutoScroll(e, this, 1);
+                Point[] points = ConnectorRouter.Route(this.panel, this.srcConnectionPoint, e);
+                if (points == null)
+                {
+                    e.Handled = true;
+                    return;
+                }
+                List<Point> segments = new List<Point>(points);
+                //Remove the previous adorner.
+                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+                //Add new adorner.
+                AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.srcConnectionPoint.ParentDesigner);
+                Fx.Assert(adornerLayer != null, "Adorner Layer does not exist");
+                ConnectorCreationAdorner newAdorner = new ConnectorCreationAdorner(this.panel, segments);
+                adornerLayer.Add(newAdorner);
+                e.Handled = true;
+            }
+
+        }
+
+        private void OnFlowchartGridMouseUp(object sender, MouseButtonEventArgs e)
+        {
+            if (this.srcConnectionPoint != null)
+            {
+                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+                this.srcConnectionPoint = null;
+            }
+        }
+
+
+        static void SetConnectionPoints(DependencyObject obj, List<ConnectionPoint> connectionPoints)
+        {
+            obj.SetValue(FlowchartDesigner.ConnectionPointsProperty, connectionPoints);
+        }
+
+
+        static void SetFalseConnectionPoint(DependencyObject obj, ConnectionPoint connectionPoint)
+        {
+            obj.SetValue(FlowchartDesigner.FalseConnectionPointProperty, connectionPoint);
+        }
+
+        static void SetLinkModelItem(DependencyObject obj, ModelItem modelItem)
+        {
+            obj.SetValue(FlowchartDesigner.LinkModelItemProperty, modelItem);
+        }
+
+        static void SetFlowElementModelItem(DependencyObject obj, ModelItem modelItem)
+        {
+            obj.SetValue(FlowchartDesigner.FlowElementModelItemProperty, modelItem);
+        }
+
+        static void SetTrueConnectionPoint(DependencyObject obj, ConnectionPoint connectionPoint)
+        {
+            obj.SetValue(FlowchartDesigner.TrueConnectionPointProperty, connectionPoint);
+        }
+
+        void ChildElement_MouseEnter(object sender, MouseEventArgs e)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            VirtualizedContainerService.VirtualizingContainer senderElement = sender as VirtualizedContainerService.VirtualizingContainer;
+            if ((senderElement != null || sender is StartSymbol) && !this.IsReadOnly)
+            {
+                AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer((Visual)sender);
+                Fx.Assert(adornerLayer != null, "Cannot get AdornerLayer.");
+                ConnectionPointsAdorner adorner = null;
+                if (sender is StartSymbol)
+                {
+                    adorner = new FlowchartConnectionPointsAdorner((UIElement)sender, ConnectionPointsToShow((UIElement)sender, this.ModelItem), false, this.IsRightToLeft);
+                }
+                else
+                {
+                    bool isSenderElementSelected = (((Selection)this.Context.Items.GetValue<Selection>()).SelectedObjects as ICollection<ModelItem>).Contains(senderElement.ModelItem);
+                    adorner = new FlowchartConnectionPointsAdorner(senderElement, ConnectionPointsToShow(senderElement, senderElement.ModelItem), isSenderElementSelected, this.IsRightToLeft);
+                }
+                adornerLayer.Add(adorner);
+                adorner.MouseDown += new MouseButtonEventHandler(ConnectionPoint_MouseDown);
+                adorner.MouseUp += new MouseButtonEventHandler(ConnectionPoint_MouseUp);
+                adorner.MouseLeave += new MouseEventHandler(ConnectionPoint_MouseLeave);
+            }
+        }
+
+
+        //This method returns which connection points should be shown on hover of a shape.
+        List<ConnectionPoint> ConnectionPointsToShow(UIElement element, ModelItem model)
+        {
+            bool isInComingConnection = false;
+
+            //This condition checks if it is an incoming connection.
+            if (this.srcConnectionPoint != null || (this.panel.connectorEditor != null && this.panel.connectorEditor.IsConnectorEndBeingMoved))
+            {
+                isInComingConnection = true;
+            }
+            List<ConnectionPoint> connectionPointsToShow = new List<ConnectionPoint>();
+
+            if (GenericFlowSwitchHelper.IsGenericFlowSwitch(model.ItemType))
+            {
+                connectionPointsToShow.AddRange(FlowchartDesigner.GetConnectionPoints(element));
+            }
+            else if (typeof(FlowDecision).IsAssignableFrom(model.ItemType))
+            {
+                if (isInComingConnection)
+                {
+                    connectionPointsToShow.AddRange(FlowchartDesigner.GetConnectionPoints(element));
+                }
+                else
+                {
+                    connectionPointsToShow.Add(FlowchartDesigner.GetTrueConnectionPoint(element));
+                    connectionPointsToShow.Add(FlowchartDesigner.GetFalseConnectionPoint(element));
+                    List<Connector> outGoingConnectors = GetOutGoingConnectors(element);
+                    if (this.panel.connectorEditor != null && this.panel.connectorEditor.IsConnectorStartBeingMoved)
+                    {
+                        //If the start of an outgoing connector is moved, its not an outgoing connector any more.
+                        outGoingConnectors.Remove(this.panel.connectorEditor.Connector);
+                    }
+                    //Do not show True/False connection point if a link already exists.
+                    foreach (Connector connector in outGoingConnectors)
+                    {
+                        connectionPointsToShow.Remove(FreeFormPanel.GetSourceConnectionPoint(connector));
+                    }
+                }
+            }
+            else// Case where only one out going connector is allowed - Start and FlowStep.
+            {
+                ConnectionPointKind allowedType = ConnectionPointKind.Default;
+                bool isConnectionAllowed = false;
+                if (isInComingConnection)
+                {
+                    allowedType = ConnectionPointKind.Incoming;
+                    isConnectionAllowed = true;
+                }
+                else
+                {
+                    List<Connector> outGoingConnectors = GetOutGoingConnectors(element);
+                    if (this.panel.connectorEditor != null && this.panel.connectorEditor.IsConnectorStartBeingMoved)
+                    {
+                        outGoingConnectors.Remove(this.panel.connectorEditor.Connector);
+                    }
+                    //Outgoing Connection is allowed only if there are no outgoing connectors already.
+                    if (outGoingConnectors.Count == 0)
+                    {
+                        allowedType = ConnectionPointKind.Outgoing;
+                        isConnectionAllowed = true;
+                    }
+                }
+
+                if (isConnectionAllowed)
+                {
+                    foreach (ConnectionPoint connPoint in FlowchartDesigner.GetConnectionPoints(element))
+                    {
+                        if (connPoint.PointType == allowedType || connPoint.PointType == ConnectionPointKind.Default)
+                        {
+                            connectionPointsToShow.Add(connPoint);
+                        }
+                    }
+                }
+            }
+            //Do not show the connection points of a selected connector.
+            if (this.selectedConnector != null)
+            {
+                connectionPointsToShow.Remove(FreeFormPanel.GetSourceConnectionPoint(this.selectedConnector));
+                connectionPointsToShow.Remove(FreeFormPanel.GetDestinationConnectionPoint(this.selectedConnector));
+            }
+            return connectionPointsToShow;
+        }
+
+
+        void ChildElement_MouseLeave(object sender, MouseEventArgs e)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            bool removeConnectionPointsAdorner = true;
+            if (Mouse.DirectlyOver != null)
+            {
+                removeConnectionPointsAdorner = !typeof(ConnectionPointsAdorner).IsAssignableFrom(Mouse.DirectlyOver.GetType());
+            }
+            if (removeConnectionPointsAdorner)
+            {
+                RemoveAdorner(sender as UIElement, typeof(ConnectionPointsAdorner));
+            }
+        }
+
+
+        void ChildSizeChanged(object sender, SizeChangedEventArgs e)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            VirtualizedContainerService.VirtualizingContainer container = sender as VirtualizedContainerService.VirtualizingContainer;
+            if (container != null || sender is StartSymbol)
+            {
+                this.internalViewStateChange = true;
+                //Initializing storageModelItem for the case of FlowchartStartNode.
+                ModelItem storageModelItem = this.ModelItem;
+                if (container != null)
+                {
+                    storageModelItem = GetFlowElementMI(container.ModelItem);
+                }
+                this.ViewStateService.StoreViewState(storageModelItem, shapeSize, ((UIElement)sender).DesiredSize);
+                this.internalViewStateChange = false;
+            }
+        }
+
+        void ConnectionPoint_MouseDown(object sender, MouseButtonEventArgs e)
+        {
+            UIElement srcElement = ((Adorner)sender).AdornedElement as UIElement;
+            this.srcConnectionPoint = ConnectionPointHitTest(srcElement, e.GetPosition(this.panel));
+            e.Handled = true;
+        }
+
+        void ConnectionPoint_MouseLeave(object sender, MouseEventArgs e)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            UIElement adornedElement = ((Adorner)sender).AdornedElement as UIElement;
+            RemoveAdorner(adornedElement, typeof(ConnectionPointsAdorner));
+        }
+
+
+        void ConnectionPoint_MouseUp(object sender, MouseButtonEventArgs e)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            UIElement dest = ((Adorner)sender).AdornedElement as UIElement;
+            Fx.Assert(dest != null, "Adorned element is not a UIElement");
+            if (this.srcConnectionPoint != null)
+            {
+                ConnectionPoint destConnectionPoint = ConnectionPointHitTest(dest, e.GetPosition(this.panel));
+                if (destConnectionPoint != null && !this.srcConnectionPoint.Equals(destConnectionPoint))
+                {
+                    string errorMessage = string.Empty;
+                    if (!CreateLinkGesture(this.srcConnectionPoint, destConnectionPoint, out errorMessage, null) && !errorMessage.Equals(string.Empty))
+                    {
+                        ErrorReporting.ShowErrorMessage(errorMessage);
+                    }
+                }
+                this.srcConnectionPoint = null;
+                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+                RemoveAdorner(dest, typeof(FlowchartConnectionPointsAdorner));
+            }
+            else
+            {
+                //This will cause the FreeFormPanel to handle the event and is useful while moving connection end points of a connector.
+                lastConnectionPointMouseUpElement = dest;
+                dest.RaiseEvent(e);
+            }
+        }
+
+        void OnFreeFormPanelRequiredSizeChanged(object sender, RequiredSizeChangedEventArgs e)
+        {
+            Dispatcher.BeginInvoke(() =>
+            {
+                // Access the view state dictionary directly to avoid generating an undo item because of ViewStateAttachedPropertyFeature implementation.
+                Dictionary<string, object> viewState = WorkflowViewStateService.GetViewState(this.ModelItem.GetCurrentValue());
+                if (viewState == null)
+                {
+                    viewState = new Dictionary<string, object>();
+                    WorkflowViewStateService.SetViewState(this.ModelItem.GetCurrentValue(), viewState);
+                }
+
+                if (e.NewRequiredSize.Width > this.FlowchartWidth)
+                {
+                    viewState[FlowchartSizeFeature.WidthPropertyName] = e.NewRequiredSize.Width;
+                    this.FlowchartWidth = e.NewRequiredSize.Width;
+                }
+
+                if (e.NewRequiredSize.Height > this.FlowchartHeight)
+                {
+                    viewState[FlowchartSizeFeature.HeightPropertyName] = e.NewRequiredSize.Height;
+                    this.FlowchartHeight = e.NewRequiredSize.Height;
+                }
+            });
+        }
+
+        void OnFreeFormPanelLocationChanged(object sender, System.Activities.Presentation.FreeFormEditing.LocationChangedEventArgs e)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            Fx.Assert(sender is UIElement, "Sender should be of type UIElement");
+            Connector movedConnector = sender as Connector;
+            if (movedConnector != null)
+            {
+                //ViewState is undoable only when a user gesture moves a connector. If the freeformpanel routes a connector,
+                //the change is not undoable.
+                bool isUndoableViewState = false;
+                ModelItem linkModelItem = FlowchartDesigner.GetLinkModelItem(movedConnector);
+                ConnectionPoint source = FreeFormPanel.GetSourceConnectionPoint(movedConnector);
+                string viewStateKey = GetConnectorViewStateKey(linkModelItem, source);
+                ModelItem storageModelItem = GetConnectorViewStateStorageModelItem(linkModelItem);
+                PointCollection existingVS = this.ViewStateService.RetrieveViewState(storageModelItem, viewStateKey) as PointCollection;
+                if (existingVS != null && existingVS.Count > 0 && movedConnector.Points.Count > 0
+                    && existingVS[0].Equals(movedConnector.Points[0]) && existingVS[existingVS.Count - 1].Equals(movedConnector.Points[movedConnector.Points.Count - 1]))
+                {
+                    isUndoableViewState = true;
+                }
+                StoreConnectorViewState(movedConnector, isUndoableViewState);
+            }
+            else
+            {
+                //Save the location property of each shape on the CFx object for serialization and viewstate maintenance.
+                //This is called only when a shape without viewstate is autolayed out by the freeform panel.
+                VirtualizedContainerService.VirtualizingContainer container = sender as VirtualizedContainerService.VirtualizingContainer;
+                if (container != null)
+                {
+                    StoreShapeViewState(container, e.NewLocation);
+                }
+            }
+        }
+
+
+        void UpdateFlowchartOnLinkVisualMoved(ConnectionPoint knownConnectionPoint, Point newPoint, Connector movedConnector, bool isSourceKnown)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            HitTestResult hitTestResult = VisualTreeHelper.HitTest(this.panel, newPoint);
+            if (hitTestResult == null)
+            {
+                return;
+            }
+            //Test if the last connectionPoint hit, is the new location for the connector.
+            UIElement newViewElement = null;
+            ConnectionPoint newConnectionPoint = null;
+
+            //The case where the link is dropped on a connectionpoint.
+            if (this.lastConnectionPointMouseUpElement != null)
+            {
+                newConnectionPoint = this.ConnectionPointHitTest(this.lastConnectionPointMouseUpElement, newPoint);
+                if (newConnectionPoint != null)
+                {
+                    newViewElement = this.lastConnectionPointMouseUpElement;
+                }
+            }
+            //The case where the link is dropped on a shape.
+            if (newViewElement == null)
+            {
+                newViewElement = VisualTreeUtils.FindVisualAncestor<StartSymbol>(hitTestResult.VisualHit);
+                if (newViewElement == null)
+                {
+                    newViewElement = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(hitTestResult.VisualHit);
+                }
+            }
+            if (newViewElement != null)
+            {
+                if (this.panel.Children.Contains(newViewElement))
+                {
+                    using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.FCLinkMove))
+                    {
+                        //Delete the existing link and keep the caseKey
+                        IFlowSwitchLink oldCaseKey = this.DeleteLink(movedConnector, true);
+
+                        //Create new link
+                        bool linkCreated = false;
+                        string errorMessage = string.Empty;
+                        if (isSourceKnown)
+                        {
+                            if (newConnectionPoint == null)
+                            {
+                                linkCreated = CreateLinkGesture(knownConnectionPoint, newViewElement, newPoint, out errorMessage, true, oldCaseKey);
+                            }
+                            else
+                            {
+                                linkCreated = CreateLinkGesture(knownConnectionPoint, newConnectionPoint, out errorMessage, true, oldCaseKey);
+                            }
+                        }
+                        else
+                        {
+                            //If the Link source is dropped onto itself, we need to set the isLinkValidDueToLinkMove flag.
+                            bool isLinkValidDueToLinkMove = FreeFormPanel.GetSourceConnectionPoint(movedConnector).ParentDesigner.Equals(newViewElement);
+                            if (newConnectionPoint == null)
+                            {
+                                linkCreated = CreateLinkGesture(newViewElement, knownConnectionPoint, newPoint, out errorMessage, isLinkValidDueToLinkMove, oldCaseKey);
+                            }
+                            else
+                            {
+                                linkCreated = CreateLinkGesture(newConnectionPoint, knownConnectionPoint, out errorMessage, isLinkValidDueToLinkMove, oldCaseKey);
+                            }
+                        }
+                        if (!linkCreated)
+                        {
+                            if (!errorMessage.Equals(string.Empty))
+                            {
+                                ErrorReporting.ShowErrorMessage(errorMessage);
+                            }
+                            es.Revert();
+                        }
+                        else
+                        {
+                            es.Complete();
+                        }
+                    }
+                }
+            }
+        }
+
+        void OnFreeFormPanelConnectorMoved(object sender, ConnectorMovedEventArgs e)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            Connector movedConnector = sender as Connector;
+            int movedEndConnectorPointIndex = movedConnector.Points.Count - 1;
+            int newEndConnectorPointIndex = e.NewConnectorLocation.Count - 1;
+
+            if (movedConnector != null)
+            {
+                Fx.Assert(e.NewConnectorLocation.Count > 0, "Invalid connector editor");
+                if (!e.NewConnectorLocation[0].Equals(movedConnector.Points[0]))
+                {
+                    //srcMoved
+                    ConnectionPoint destConnPoint = FreeFormPanel.GetDestinationConnectionPoint(movedConnector);
+                    UpdateFlowchartOnLinkVisualMoved(destConnPoint, e.NewConnectorLocation[0], movedConnector, false);
+                }
+                else if (!e.NewConnectorLocation[newEndConnectorPointIndex].Equals(movedConnector.Points[movedEndConnectorPointIndex]))
+                {
+                    //DestMoved
+                    ConnectionPoint srcConnPoint = FreeFormPanel.GetSourceConnectionPoint(movedConnector);
+                    Point destPoint = e.NewConnectorLocation[newEndConnectorPointIndex];
+                    UpdateFlowchartOnLinkVisualMoved(srcConnPoint, destPoint, movedConnector, true);
+                }
+
+                this.selectedConnector = movedConnector;
+            }
+        }
+
+        MultiBinding GetConnectionPointBinding(FrameworkElement element, double widthFraction, double heightFraction)
+        {
+            Fx.Assert(element != null, "FrameworkElement is null.");
+            MultiBinding bindings = new MultiBinding();
+            Binding sizeBinding = new Binding();
+            sizeBinding.Source = element;
+            sizeBinding.Path = new PropertyPath(FreeFormPanel.ChildSizeProperty);
+            Binding locationBinding = new Binding();
+            locationBinding.Source = element;
+            locationBinding.Path = new PropertyPath(FreeFormPanel.LocationProperty);
+            bindings.Bindings.Add(sizeBinding);
+            bindings.Bindings.Add(locationBinding);
+            bindings.Converter = new ConnectionPointConverter();
+            bindings.ConverterParameter = new List<Object> { widthFraction, heightFraction, element.Margin };
+            return bindings;
+        }
+
+
+        Connector GetConnector(ModelItem linkModelItem, ConnectionPoint srcConnPoint, ConnectionPoint destConnPoint)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            ConnectorWithoutStartDot connector = new ConnectorWithoutStartDot();
+            connector.FocusVisualStyle = null;
+            connector.Focusable = true;
+            DesignerView.SetCommandMenuMode(connector, CommandMenuMode.NoCommandMenu);
+            SetConnectorLabel(connector, srcConnPoint, linkModelItem);
+
+            connector.GotKeyboardFocus += new KeyboardFocusChangedEventHandler(OnConnectorGotKeyboardFocus);
+            connector.RequestBringIntoView += new RequestBringIntoViewEventHandler(OnConnectorRequestBringIntoView);
+            connector.MouseDown += new MouseButtonEventHandler(OnConnectorMouseDown);
+            connector.GotFocus += new RoutedEventHandler(OnConnectorGotFocus);
+            SetConnectorSrcDestConnectionPoints(connector, srcConnPoint, destConnPoint);
+            FlowchartDesigner.SetLinkModelItem(connector, linkModelItem);
+            connector.Unloaded += new RoutedEventHandler(OnConnectorUnloaded);
+            connector.AutoSplitContainer = this;
+            return connector;
+        }
+
+        // To prevent the parent FlowchartDesigner from handling mouse events and setting the selection to itself.
+        void OnConnectorMouseDown(object sender, MouseButtonEventArgs e)
+        {
+            e.Handled = true;
+        }
+
+        void SetConnectorLabel(Connector connector, ConnectionPoint srcConnPoint, ModelItem linkModelItem)
+        {
+            BindingBase labelBinding = null;
+
+            if (typeof(FlowDecision).IsAssignableFrom(linkModelItem.ItemType))
+            {
+                if (FlowchartDesigner.GetTrueConnectionPoint(srcConnPoint.ParentDesigner).Equals(srcConnPoint))
+                {
+                    labelBinding = new Binding { Source = linkModelItem, Path = new PropertyPath("TrueLabel") };
+                }
+                else
+                {
+                    labelBinding = new Binding { Source = linkModelItem, Path = new PropertyPath("FalseLabel") };
+                }
+
+                SetConnectorLabelToolTip(connector, labelBinding);
+            }
+            else if (typeof(IFlowSwitchLink).IsAssignableFrom(linkModelItem.ItemType))
+            {
+                IFlowSwitchLink flowSwitchLink = (IFlowSwitchLink)linkModelItem.GetCurrentValue();
+                labelBinding = flowSwitchLink.CreateConnectorLabelTextBinding();
+                SetConnectorLabelToolTip(connector, labelBinding);
+            }
+        }
+
+        void SetConnectorLabelToolTip(Connector connector, BindingBase binding)
+        {
+            connector.SetBinding(Connector.LabelTextProperty, binding);
+            ToolTip toolTip = new ToolTip();
+            toolTip.SetBinding(UserControl.ContentProperty, binding);
+            connector.SetLabelToolTip(toolTip);
+        }
+
+        void OnConnectorUnloaded(object sender, RoutedEventArgs e)
+        {
+            ModelItem primarySelection = this.Context.Items.GetValue<Selection>().PrimarySelection;
+            if (object.Equals(primarySelection, FlowchartDesigner.GetLinkModelItem(sender as DependencyObject)))
+            {
+                if (primarySelection != null)
+                {
+                    Selection.Toggle(this.Context, primarySelection);
+                }
+            }
+        }
+
+        //Marking e.Handled = true to avoid scrolling in large workflows to bring the
+        //area of a connector in the center of the view region.
+        //Area covered by a connector includes the region between 0,0 of the panel and the edges of the connector.
+        void OnConnectorRequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
+        {
+            e.Handled = true;
+        }
+
+
+
+        //Returns a new connector if viewstate exists, null otherwise.
+        Connector GetConnectorViewState(UIElement source, UIElement dest, ModelItem linkModelItem, ConnectionPoint sourceConnectionPoint)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            Connector connector = null;
+            object connectorLocation = null;
+            if (typeof(FlowDecision).IsAssignableFrom(linkModelItem.ItemType))
+            {
+                Fx.Assert(sourceConnectionPoint != null, "Source connection point is null.");
+                if (sourceConnectionPoint.Equals(FlowchartDesigner.GetTrueConnectionPoint(this.modelElement[linkModelItem])))
+                {
+                    connectorLocation = this.ViewStateService.RetrieveViewState(linkModelItem, TrueConnectorViewStateKey);
+                }
+                else
+                {
+                    connectorLocation = this.ViewStateService.RetrieveViewState(linkModelItem, FalseConnectorViewStateKey);
+                }
+            }
+            else if (typeof(IFlowSwitchLink).IsAssignableFrom(linkModelItem.ItemType))
+            {
+                string key = null;
+                IFlowSwitchLink link = (IFlowSwitchLink)linkModelItem.GetCurrentValue();
+                if (link.IsDefaultCase)
+                {
+                    key = FlowSwitchDefaultViewStateKey;
+                }
+                else
+                {
+                    key = link.CaseName + CaseViewStateKeyAppendString;
+                }
+                //Transitioning from fake ModelItem world to real ModelItem world.
+                ModelItem realFSModelItem = (this.ModelItem as IModelTreeItem).ModelTreeManager.WrapAsModelItem(link.ParentFlowSwitch);
+                connectorLocation = this.ViewStateService.RetrieveViewState(realFSModelItem, key);
+            }
+            else
+            {
+                connectorLocation = this.ViewStateService.RetrieveViewState(linkModelItem, ConnectorViewStateKey);
+            }
+            PointCollection locationPts = connectorLocation as PointCollection;
+            if (locationPts != null)
+            {
+                ConnectionPoint srcConnPoint, destConnPoint;
+                System.Diagnostics.Debug.WriteLine(this.isLoaded ? "About to call ConnectionPointHitTest - Loaded" : "About to call ConnectionPointHitTest - Not Loaded");
+                srcConnPoint = ConnectionPointHitTest(source, locationPts[0]);
+                destConnPoint = ConnectionPointHitTest(dest, locationPts[locationPts.Count - 1]);
+                //In Debug mode, the size of the designer changes due to the debug adorner(border). Because of this connection points will move and
+                //won't coincide with the viewstate.
+                //The following code path is added for the scenario where we reload the flowchart designer by navigating back and forth on breadcrumb
+                //when one of the flowchart activities has the debug border.
+                //In this scenario we try to find the closest connection point from the end point stored in viewstate. If the distance between the two
+                //is within the acceptable range, we will reuse the viewstate and avoid re-drawing the connector.
+                if (this.IsReadOnly)
+                {
+                    ConnectionPoint pt;
+                    double dist;
+                    if (srcConnPoint == null)
+                    {
+                        pt = FindClosestConnectionPoint(locationPts[0], FlowchartDesigner.GetConnectionPoints(source), out dist);
+                        if (pt != null && pt.PointType != ConnectionPointKind.Incoming && dist <= DebugTimeMaxConnectorShapeDist)
+                        {
+                            srcConnPoint = pt;
+                        }
+                    }
+                    if (destConnPoint == null)
+                    {
+                        pt = FindClosestConnectionPoint(locationPts[locationPts.Count - 1], FlowchartDesigner.GetConnectionPoints(dest), out dist);
+                        if (pt != null && pt.PointType != ConnectionPointKind.Outgoing && dist <= DebugTimeMaxConnectorShapeDist)
+                        {
+                            destConnPoint = pt;
+                        }
+                    }
+                }
+                if (srcConnPoint != null && destConnPoint != null)
+                {
+                    connector = GetConnector(linkModelItem, srcConnPoint, destConnPoint);
+                    connector.Points = locationPts;
+                }
+            }
+            return connector;
+        }
+
+
+        //Marking e.Handled true for the case where a connector is clicked on.
+        //This is to prevent WorkflowViewElement class from making Flowchart as the current selection.
+        void OnConnectorGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
+        {
+            e.Handled = true;
+        }
+
+        void OnConnectorGotFocus(object sender, RoutedEventArgs e)
+        {
+            Connector clickedLine = e.Source as Connector;
+            DesignerView designerView = this.Context.Services.GetService<DesignerView>();
+
+            if (!designerView.IsMultipleSelectionMode)
+            {
+
+                if (this.panel.connectorEditor == null || !clickedLine.Equals(this.panel.connectorEditor.Connector))
+                {
+                    this.panel.RemoveConnectorEditor();
+                    this.panel.connectorEditor = new ConnectorEditor(this.panel, clickedLine);
+                }
+
+                if (this.panel.Children.Contains(clickedLine))
+                {
+                    this.updatingSelectedConnector = true;
+                    ModelItem lineModelItem = FlowchartDesigner.GetLinkModelItem(clickedLine);
+                    Selection newSelection = new Selection();
+                    // If the linkModelItem is FlowDecision or Flowchart, we don't want to add it to the selection
+                    if (IsLinkModelItemSelectable(lineModelItem))
+                    {
+                        newSelection = new Selection(lineModelItem);
+                    }
+                    this.Context.Items.SetValue(newSelection);
+                    this.selectedConnector = clickedLine;
+                    this.updatingSelectedConnector = false;
+                    e.Handled = true;
+                }
+            }
+        }
+
+        private void OnSelectionChanged(Selection selection)
+        {
+            // If selection changed, remove ConnectorEditor if existed.
+            // Only if the selection changed is caused by adding ConnectorEditor when OnConnectorGotFocus, ignore.
+            if (!this.updatingSelectedConnector && this.panel != null && this.panel.connectorEditor != null)
+            {
+                this.panel.RemoveConnectorEditor();
+            }
+        }
+
+        //widthFraction, heightFraction determine location of connectionpoint on the shape.
+        ConnectionPoint CreateConnectionPoint(UIElement element, double widthFraction, double heightFraction, EdgeLocation location)
+        {
+            ConnectionPoint connectionPoint = new ConnectionPoint();
+            connectionPoint.EdgeLocation = location;
+            connectionPoint.PointType = ConnectionPointKind.Default;
+            connectionPoint.ParentDesigner = element;
+            BindingOperations.SetBinding(connectionPoint, ConnectionPoint.LocationProperty, GetConnectionPointBinding(element as FrameworkElement, widthFraction, heightFraction));
+            return connectionPoint;
+        }
+
+        void PopulateConnectionPoints(UIElement element, ModelItem model)
+        {
+            element.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
+            List<ConnectionPoint> connectionPoints;
+            if (model != null &&
+                GenericFlowSwitchHelper.IsGenericFlowSwitch(model.ItemType))
+            {
+                connectionPoints = new List<ConnectionPoint>
+                    {
+                        //Top edge
+                        CreateConnectionPoint(element, 0.25, 0, EdgeLocation.Top),
+                        CreateConnectionPoint(element, 0.5, 0, EdgeLocation.Top),
+                        CreateConnectionPoint(element, 0.75, 0, EdgeLocation.Top),
+                        //Right edge
+                        CreateConnectionPoint(element, 1, 0.25, EdgeLocation.Right),
+                        CreateConnectionPoint(element, 1, 0.50, EdgeLocation.Right),
+                        CreateConnectionPoint(element, 1, 0.75, EdgeLocation.Right),
+                        //Bottom edge
+                        CreateConnectionPoint(element, 0.25, 1, EdgeLocation.Bottom),
+                        CreateConnectionPoint(element, 0.5, 1, EdgeLocation.Bottom),
+                        CreateConnectionPoint(element, 0.75, 1, EdgeLocation.Bottom),
+                        //Left edge
+                        CreateConnectionPoint(element, 0, 0.25, EdgeLocation.Left),
+                        CreateConnectionPoint(element, 0, 0.50, EdgeLocation.Left),
+                        CreateConnectionPoint(element, 0, 0.75, EdgeLocation.Left),
+                    };
+            }
+            else if (model != null && typeof(FlowDecision).IsAssignableFrom(model.ItemType))
+            {
+                ConnectionPoint trueConnectionPoint = CreateConnectionPoint(element, 0, 0.50, EdgeLocation.Left);
+                trueConnectionPoint.PointType = ConnectionPointKind.Outgoing;
+                FlowchartDesigner.SetTrueConnectionPoint(element, trueConnectionPoint);
+
+                ConnectionPoint falseConnectionPoint = CreateConnectionPoint(element, 1, 0.50, EdgeLocation.Right);
+                falseConnectionPoint.PointType = ConnectionPointKind.Outgoing;
+                FlowchartDesigner.SetFalseConnectionPoint(element, falseConnectionPoint);
+
+                connectionPoints = new List<ConnectionPoint>
+                    {
+                        //Top edge
+                        CreateConnectionPoint(element, 0.25, 0, EdgeLocation.Top),
+                        CreateConnectionPoint(element, 0.5, 0, EdgeLocation.Top),
+                        CreateConnectionPoint(element, 0.75, 0, EdgeLocation.Top),
+                        //Bottom edge
+                        CreateConnectionPoint(element, 0.5, 1, EdgeLocation.Bottom),
+                    };
+                connectionPoints.ForEach((point) => point.PointType = ConnectionPointKind.Incoming);
+            }
+            else
+            {
+                //First adding top, right, bottom and left default connection points in that order on all shapes other than flowswitch.
+                //For shapes that do not need any of the points, we will remove that point explicitly.
+                connectionPoints = new List<ConnectionPoint>
+                    {
+                        CreateConnectionPoint(element, 0.5, 0, EdgeLocation.Top),
+                        CreateConnectionPoint(element, 1, 0.5, EdgeLocation.Right),
+                        CreateConnectionPoint(element, 0.5, 1, EdgeLocation.Bottom),
+                        CreateConnectionPoint(element, 0, 0.5, EdgeLocation.Left)
+                    };
+            }
+
+            if (model == null) // Start symbol: model = null
+            {
+                foreach (ConnectionPoint connPoint in connectionPoints)
+                {
+                    connPoint.PointType = ConnectionPointKind.Outgoing;
+                }
+            }
+            FlowchartDesigner.SetConnectionPoints(element, connectionPoints);
+        }
+
+        void SetFlowElementModelItem(UIElement view, ModelItem model)
+        {
+            ModelItem flowElementMI = model;
+            if (flowElementMI != null && !IsFlowNode(flowElementMI))
+            {
+                ModelItem flowStepMI = null;
+                //Select the right FlowStep ModelItem out of view.ModelItem.Parents.
+                foreach (ModelItem parentModelItem in flowElementMI.Parents)
+                {
+                    if (IsFlowNode(parentModelItem)
+                        && this.ModelItem.Properties["Nodes"].Collection.Contains(parentModelItem))
+                    {
+                        flowStepMI = parentModelItem;
+                        break;
+                    }
+                }
+                flowElementMI = flowStepMI;
+            }
+            Fx.Assert(flowElementMI != null, "Non FlowNode present on Flowchart");
+            FlowchartDesigner.SetFlowElementModelItem(view as DependencyObject, flowElementMI);
+            this.flowNodeToUIElement[flowElementMI] = view;
+
+        }
+
+        UIElement ProcessAndGetModelView(ModelItem model)
+        {
+            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
+            UIElement container;
+            if (!this.modelElement.TryGetValue(model, out container))
+            {
+                VirtualizedContainerService containerService = this.Context.Services.GetService<VirtualizedContainerService>();
+                Fx.Assert(this.ViewService != null, "ViewService is null");
+                container = containerService.GetContainer(model, this);
+                //WorkflowViewElement view = (WorkflowViewElement)this.ViewService.GetView(model);
+                //Fx.Assert(view != null, "View does not exist for a model Item");
+                //DragDropHelper.SetSourceContainer(view, this);
+                //element = (UIElement)view;
+                //element.MouseEnter += new MouseEventHandler(ChildElement_MouseEnter);
+                //element.MouseLeave += new MouseEventHandler(ChildElement_MouseLeave);
+                container.MouseEnter += new MouseEventHandler(ChildElement_MouseEnter);
+                container.MouseLeave += new MouseEventHandler(ChildElement_MouseLeave);
+
+                ((FrameworkElement)container).SizeChanged += new SizeChangedEventHandler(ChildSizeChanged);
+                this.modelElement.Add(model, container);
+                PopulateConnectionPoints(container, model);
+                this.SetFlowElementModelItem(container, model);
+
+                //Getting the View state information.
+                ModelItem flowElementMI = GetFlowElementMI(model);
+                object locationOfShape = this.ViewStateService.RetrieveViewState(flowElementMI, shapeLocation);
+                object sizeOfShape = this.ViewStateService.RetrieveViewState(flowElementMI, shapeSize);
+                if (locationOfShape != null)
+                {
+                    Point locationPt = (Point)locationOfShape;
+                    FreeFormPanel.SetLocation(container, locationPt);
+                    this.shapeLocations.Add(locationPt);
+                }
+                if (sizeOfShape != null)
+                {
+                    Size size = (Size)sizeOfShape;
+                    FreeFormPanel.SetChildSize(container, size);
+                    VirtualizedContainerService.VirtualizingContainer virtualizingContainer = container as VirtualizedContainerService.VirtualizingContainer;
+                    if (virtualizingContainer != null)
+                    {
+                        virtualizingContainer.MinWidth = size.Width;
+                        virtualizingContainer.MinHeight = size.Height;
+                    }
+
+                }
+            }
+            return container;
+        }
+
+        void GetSrcDestConnectionPoints(UIElement source, UIElement dest, out ConnectionPoint srcConnPoint, out ConnectionPoint destConnPoint, out string errorMessage)
+        {
+            srcConnPoint = null;
+            destConnPoint = null;
+            errorMessage = string.Empty;
+            VirtualizedContainerService.VirtualizingContainer sourceContainer = source as VirtualizedContainerService.VirtualizingContainer;
+            if (sourceContainer != null && typeof(FlowDecision).IsAssignableFrom(sourceContainer.ModelItem.ItemType))
+            {
+                srcConnPoint = FindFlowDecisionSrcConnectionPoint(source, out errorMessage);
+                if (srcConnPoint != null)
+                {
+                    destConnPoint = FindBestMatchDestConnectionPoint(srcConnPoint, dest, out errorMessage);
+                }
+            }
+            else
+            {
+
+                List<ConnectionPoint> srcConnectionPoints = FlowchartDesigner.GetConnectionPoints(source);
+                List<ConnectionPoint> destConnectionPoints = FlowchartDesigner.GetConnectionPoints(dest);
+                if (sourceContainer != null && GenericFlowSwitchHelper.IsGenericFlowSwitch(sourceContainer.ModelItem.ItemType))
+                {
+                    FindBestMatchConnectionPointPair(srcConnectionPoints, destConnectionPoints, out srcConnPoint, out destConnPoint);
+                }
+                else
+                {
+                    // Flowstep
+                    FindBestMatchConnectionPointPair(srcConnectionPoints, destConnectionPoints, out srcConnPoint, out destConnPoint);
+                }
+            }
+        }
+
+        //This returns the closest non-outgoing connectionPoint on dest. Return value will be different than sourceConnectionPoint.
+        ConnectionPoint ClosestDestConnectionPoint(ConnectionPoint sourceConnectionPoint, UIElement dest, out string errorMessage)
+        {
+            ConnectionPoint destConnectionPoint = null;
+            errorMessage = string.Empty;
+            if (sourceConnectionPoint.PointType != ConnectionPointKind.Incoming)
+            {
+                destConnectionPoint = FindClosestConnectionPointNotOfType(sourceConnectionPoint, FlowchartDesigner.GetConnectionPoints(dest), ConnectionPointKind.Outgoing);
+            }
+            else
+            {
+                errorMessage = SR.FCInvalidLink;
+            }
+            return destConnectionPoint;
+
+        }
+
+        //This returns the closest non-Incoming connectionPoint on source. Return value will be different than destConnectionPoint.
+        ConnectionPoint ClosestSrcConnectionPoint(UIElement src, ConnectionPoint destConnectionPoint, out string errorMessage)
+        {
+            ConnectionPoint sourceConnectionPoint = null;
+            errorMessage = string.Empty;
+            if (destConnectionPoint.PointType != ConnectionPointKind.Outgoing)
+            {
+                VirtualizedContainerService.VirtualizingContainer srcContainer = src as VirtualizedContainerService.VirtualizingContainer;
+                if (srcContainer != null && typeof(FlowDecision).IsAssignableFrom(srcContainer.ModelItem.ItemType))
+                {
+                    sourceConnectionPoint = FindFlowDecisionSrcConnectionPoint(src, out errorMessage);
+                }
+                else
+                {
+                    sourceConnectionPoint = FindClosestConnectionPointNotOfType(destConnectionPoint, FlowchartDesigner.GetConnectionPoints(src), ConnectionPointKind.Incoming);
+                }
+            }
+            else
+            {
+                errorMessage = SR.FCInvalidLink;
+            }
+            return sourceConnectionPoint;
+        }
+
+        //Priority of selection: 1st true then false.
+        ConnectionPoint FindFlowDecisionSrcConnectionPoint(UIElement decisionDesigner, out string errorMessage)
+        {
+            ConnectionPoint sourceConnectionPoint = null;
+            errorMessage = string.Empty;
+            ConnectionPoint trueConnPoint = FlowchartDesigner.GetTrueConnectionPoint(decisionDesigner);
+            ConnectionPoint falseConnPoint = FlowchartDesigner.GetFalseConnectionPoint(decisionDesigner);
+            if (trueConnPoint.AttachedConnectors.Count == 0)
+            {
+                sourceConnectionPoint = trueConnPoint;
+            }
+            else if (falseConnPoint.AttachedConnectors.Count == 0)
+            {
+                sourceConnectionPoint = falseConnPoint;
+            }
+            else
+            {
+                errorMessage = SR.FCFlowConditionLinksExist;
+            }
+            return sourceConnectionPoint;
+        }
+
+        void SetConnectorSrcDestConnectionPoints(Connector connector, ConnectionPoint sourceConnectionPoint, ConnectionPoint destConnectionPoint)
+        {
+            FreeFormPanel.SetSourceConnectionPoint(connector, sourceConnectionPoint);
+            FreeFormPanel.SetDestinationConnectionPoint(connector, destConnectionPoint);
+            sourceConnectionPoint.AttachedConnectors.Add(connector);
+            destConnectionPoint.AttachedConnectors.Add(connector);
+        }
+
+        //Save the connector.Points property on the CFx object for serialization and viewstate maintenance.
+        void StoreConnectorViewState(ModelItem linkModelItem, PointCollection viewState, ConnectionPoint srcConnPoint, bool isUndoableViewState)
+        {
+            ModelItem storageModelItem = GetConnectorViewStateStorageModelItem(linkModelItem);
+            string viewStateKey = GetConnectorViewStateKey(linkModelItem, srcConnPoint);
+            StoreConnectorViewState(storageModelItem, viewStateKey, viewState, isUndoableViewState);
+        }
+
+        void StoreConnectorViewState(ModelItem storageModelItem, string viewStateKey, PointCollection viewState, bool isUndoableViewState)
+        {
+            if (isUndoableViewState)
+            {
+                this.ViewStateService.StoreViewStateWithUndo(storageModelItem, viewStateKey, viewState);
+            }
+            else
+            {
+                this.ViewStateService.StoreViewState(storageModelItem, viewStateKey, viewState);
+            }
+        }
+
+        void StoreConnectorViewState(ModelItem linkModelItem, PointCollection viewState, ConnectionPoint srcConnPoint)
+        {
+            StoreConnectorViewState(linkModelItem, viewState, srcConnPoint, true);
+        }
+
+        void StoreConnectorViewState(Connector connector, bool isUndoableViewState)
+        {
+            //This method will be called whenever the FreeFormPanel raises a location changed event on a connector.
+            //Such location changed events are a result of changes already commited in the UI. Hence we do not want to react to such view state changes.
+            //Using internalViewStateChange flag for that purpose.
+            this.internalViewStateChange = true;
+            this.StoreConnectorViewState(FlowchartDesigner.GetLinkModelItem(connector), connector.Points, FreeFormPanel.GetSourceConnectionPoint(connector), isUndoableViewState);
+            this.internalViewStateChange = false;
+        }
+
+        string GetConnectorViewStateKey(ModelItem linkModelItem, ConnectionPoint srcConnPoint)
+        {
+            string viewStateKey = ConnectorViewStateKey;
+            if ((typeof(FlowDecision).IsAssignableFrom(linkModelItem.ItemType)))
+            {
+                if (srcConnPoint.Equals(FlowchartDesigner.GetTrueConnectionPoint(this.modelElement[linkModelItem])))
+                {
+                    viewStateKey = TrueConnectorViewStateKey;
+                }
+                else
+                {
+                    viewStateKey = FalseConnectorViewStateKey;
+                }
+            }
+            else if (typeof(IFlowSwitchLink).IsAssignableFrom(linkModelItem.ItemType))
+            {
+                IFlowSwitchLink link = (IFlowSwitchLink)linkModelItem.GetCurrentValue();
+                if (link.IsDefaultCase)
+                {
+                    viewStateKey = FlowSwitchDefaultViewStateKey;
+                }
+                else
+                {
+                    viewStateKey = link.CaseName + CaseViewStateKeyAppendString;
+                }
+            }
+            return viewStateKey;
+        }
+
+        ModelItem GetConnectorViewStateStorageModelItem(ModelItem linkModelItem)
+        {
+            ModelItem storageModelItem = linkModelItem;
+            if (typeof(IFlowSwitchLink).IsAssignableFrom(linkModelItem.ItemType))
+            {
+                IFlowSwitchLink link = (IFlowSwitchLink)linkModelItem.GetCurrentValue();
+                //Getting FlowSwitch ModelItem since there is no CFx object for linkModelItem.
+                IModelTreeItem modelTreeItem = this.ModelItem as IModelTreeItem;
+                storageModelItem = modelTreeItem.ModelTreeManager.WrapAsModelItem(link.ParentFlowSwitch);
+            }
+            return storageModelItem;
+        }
+
+
+        //Save the shape location on the CFx object for serialization and viewstate maintenance.
+        void StoreShapeViewState(UIElement movedElement, Point newLocation)
+        {
+            ModelItem storageModelItem;
+            if (movedElement is StartSymbol)
+            {
+                storageModelItem = this.ModelItem;
+            }
+            else
+            {
+                ModelItem model = ((VirtualizedContainerService.VirtualizingContainer)movedElement).ModelItem;
+                storageModelItem = GetFlowElementMI(model);
+            }
+            StoreShapeViewState(storageModelItem, newLocation);
+        }
+
+        void StoreShapeViewState(ModelItem storageModelItem, Point newLocation)
+        {
+            if (this.ViewStateService.RetrieveViewState(storageModelItem, shapeLocation) != null)
+            {
+                this.ViewStateService.StoreViewStateWithUndo(storageModelItem, shapeLocation, newLocation);
+            }
+            else
+            {
+                this.ViewStateService.StoreViewState(storageModelItem, shapeLocation, newLocation);
+            }
+        }
+
+        void PerformInternalMove(UIElement movedElement, Point newPoint, Point? shapeAnchorPoint,
+            AutoConnectDirections autoConnectDirection, Connector connectorToSplit)
+        {
+            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.FCLinkMove))
+            {
+                RemoveAdorner(movedElement, typeof(ConnectionPointsAdorner));
+                Point shapeLocation;
+                Size size = FreeFormPanel.GetChildSize(movedElement);
+                if (autoConnectDirection != AutoConnectDirections.None)
+                {
+                    shapeLocation = this.CalculateDropLocationForAutoConnect(autoConnectDirection, size);
+                }
+                else if (shapeAnchorPoint.HasValue)
+                {
+                    shapeLocation = SnapVisualToGrid(movedElement, newPoint, shapeAnchorPoint.Value, true);
+                }
+                else
+                {
+                    Fx.Assert(newPoint.X.IsNoLessThan(0) && newPoint.Y.IsNoLessThan(0),
+                        "newPoint is negative");
+                    shapeLocation = newPoint;
+                }
+                if (connectorToSplit != null)
+                {
+                    shapeLocation = this.CalculateDropLocationForAutoSplit(newPoint, shapeLocation, connectorToSplit, size);
+                }
+                StoreShapeViewState(movedElement, shapeLocation);
+                RerouteAttachedConnectors(movedElement);
+                es.Complete();
+            }
+        }
+
+        void RerouteAttachedConnectors(UIElement movedElement)
+        {
+            foreach (Connector connector in GetAttachedConnectors(movedElement))
+            {
+                Reroute(connector, true);
+            }
+        }
+
+        void Reroute(Connector connector, bool withUndo)
+        {
+            ConnectionPoint source = FreeFormPanel.GetSourceConnectionPoint(connector);
+            ConnectionPoint destination = FreeFormPanel.GetDestinationConnectionPoint(connector);
+
+            //Nulling out the PointCollection so that it doesn't interfere in line routing.
+            connector.Points = new PointCollection();
+            PointCollection viewState = new PointCollection(ConnectorRouter.Route(this.panel, source, destination));
+            StoreConnectorViewState(FlowchartDesigner.GetLinkModelItem(connector), viewState, source, withUndo);
+        }
+
+
+
+        // Returns the last dropped item - used for auto-connect and auto-split where only one item is allowed
+        ModelItem DoFlowchartGridDrop(DragEventArgs e, AutoConnectDirections autoConnectDirection, Connector connectorToSplit)
+        {
+            ModelItem droppedModelItem = null;
+            ModelItem newFlowStepMI = null;
+            e.Effects = DragDropEffects.None;
+            IEnumerable<object> droppedObjects = DragDropHelper.GetDroppedObjects(this, e, Context);
+            //Marking the event as being handled. In whichever case we want to route the event, it will be unmarked explicitly.
+            e.Handled = true;
+            List<WorkflowViewElement> movedViewElements = new List<WorkflowViewElement>();
+            ShapeOffsetter shapeOffsetter = new ShapeOffsetter();
+            Dictionary<WorkflowViewElement, Point> relativeLocations = DragDropHelper.GetDraggedViewElementRelativeLocations(e);
+            ModelItem modelItemDroppedFromToolBox = null;
+            Dictionary<object, FlowNode> objToNewFlowNodeMap = null;
+            Dictionary<FlowNode, ModelItem> flowNodeModelItemMap = null;
+            Dictionary<FlowNode, FlowNode> oldNewFlowNodeMap = null;
+            this.PrepareForDrop(droppedObjects,
+                out objToNewFlowNodeMap,
+                out flowNodeModelItemMap,
+                out oldNewFlowNodeMap);
+            bool shouldStoreCurrentSizeViewState = true;
+            foreach (object droppedObject in droppedObjects)
+            {
+                if (droppedObject == null)
+                {
+                    continue;
+                }
+                droppedModelItem = droppedObject as ModelItem;
+
+                // archor point
+                Point anchorPoint = DragDropHelper.GetDragDropAnchorPoint(e);
+
+
+                ICompositeView srcContainer = droppedModelItem != null
+                    ? DragDropHelper.GetCompositeView(droppedModelItem.View as WorkflowViewElement) as ICompositeView
+                    : null;
+                bool keepRelativePosition = srcContainer is FlowchartDesigner;
+                // This is the case of dragging from toolbox
+                if (anchorPoint.X < 0 && anchorPoint.Y < 0)
+                {
+                    keepRelativePosition = false;
+                }
+
+                // This is the case of dragging from the designer surface
+                else if (droppedModelItem != null)
+                {
+                    WorkflowViewElement view = (WorkflowViewElement)droppedModelItem.View;
+                    anchorPoint.Offset(-relativeLocations[view].X, -relativeLocations[view].Y);
+                }
+
+
+                if (droppedModelItem != null && srcContainer != null && srcContainer.Equals(this))
+                {
+                    if (shouldStoreCurrentSizeViewState)
+                    {
+                        // Moving may change the size of flowchart; need this to undo the size change.
+                        this.StoreCurrentSizeViewStateWithUndo();
+                        shouldStoreCurrentSizeViewState = false;
+                    }
+                    //InternalMove
+                    PerformInternalMove(modelElement[droppedModelItem], e.GetPosition(this.panel), anchorPoint, autoConnectDirection, connectorToSplit);
+                }
+                else
+                {
+                    //External model Item drop.
+                    if (droppedModelItem != null)
+                    {
+                        if ((IsFlowStepAction(droppedModelItem)
+                            || IsFlowNode(droppedModelItem))
+                            && !IsParentOf(droppedModelItem, this.ModelItem))
+                        {
+                            if (shouldStoreCurrentSizeViewState)
+                            {
+                                // Drop may change the size of flowchart; need this to undo the size change.
+                                this.StoreCurrentSizeViewStateWithUndo();
+                                shouldStoreCurrentSizeViewState = false;
+                            }
+
+                            FlowNode flowElement = objToNewFlowNodeMap[droppedObject];
+                            ModelItem flowElementMI;
+                            if (flowNodeModelItemMap.TryGetValue(flowElement, out flowElementMI))
+                            {
+                                // FlowNode comes from some other flowchart. 
+                                this.ModelItem.Properties["Nodes"].Collection.Add(flowElementMI);
+                            }
+                            else
+                            {
+                                // FlowNode is a new created one, which means this is an Activity dragged
+                                // from somewhere else, outside of Flowchart.
+                                flowElementMI = this.ModelItem.Properties["Nodes"].Collection.Add(flowElement);
+                                flowNodeModelItemMap[flowElement] = flowElementMI;
+                            }
+                            newFlowStepMI = flowElementMI;
+                        }
+                        else
+                        {
+                            //We want to route the event in the case that the flowchart is dropped upon itself.
+                            if (droppedModelItem.Equals(this.ModelItem))
+                            {
+                                e.Handled = false;
+                            }
+                            //Don't add anything for what is neither a Activity nor a flowlink.
+                            continue;
+                        }
+
+                        if (droppedModelItem != null && droppedModelItem.View != null)
+                        {
+                            movedViewElements.Add((WorkflowViewElement)droppedModelItem.View);
+                        }
+
+                        // the external item may come from other panel (sequence) which is already given
+                        // a size by its previous layout panel.  That might give an inaccurate size to the
+                        // dropped object (i.e. Bug 198290).  Therefore, when the object is dropped externally
+                        // the FC should erases its previous hint size, forcing the FC to recompute an appropriate
+                        // size based on the workflowelementview size.
+                        VirtualizedContainerService.SetHintSize(droppedModelItem.GetCurrentValue(), null);
+                    }
+                    //Tool box drop.
+                    else
+                    {
+                        if (typeof(Activity).IsAssignableFrom(droppedObject.GetType()))
+                        {
+                            FlowStep flowStep = new FlowStep();
+                            flowStep.Action = (Activity)droppedObject;
+                            if (shouldStoreCurrentSizeViewState)
+                            {
+                                // Drop may change the size of flowchart; need this to undo the size change.
+                                this.StoreCurrentSizeViewStateWithUndo();
+                                shouldStoreCurrentSizeViewState = false;
+                            }
+
+                            newFlowStepMI = this.ModelItem.Properties["Nodes"].Collection.Add(flowStep);
+                            droppedModelItem = newFlowStepMI.Properties["Action"].Value;
+                        }
+                        else if (typeof(FlowNode).IsAssignableFrom(droppedObject.GetType()))
+                        {
+                            if (shouldStoreCurrentSizeViewState)
+                            {
+                                // Drop may change the size of flowchart; need this to undo the size change.
+                                this.StoreCurrentSizeViewStateWithUndo();
+                                shouldStoreCurrentSizeViewState = false;
+                            }
+                            droppedModelItem = this.ModelItem.Properties["Nodes"].Collection.Add(droppedObject);
+                            newFlowStepMI = droppedModelItem;
+                        }
+
+                        // Now,  toolbox drop doesn't support multiple drop
+                        // If multi-drop from tool box, use an array here.
+                        modelItemDroppedFromToolBox = droppedModelItem;
+                        keepRelativePosition = false;
+                    } // tool box 
+
+                    WorkflowViewElement view = droppedModelItem.View as WorkflowViewElement;
+                    if (view == null || view.ExpandState)
+                    {
+                        //Creating a new view to get the size of collapsed view.
+                        view = this.ViewService.GetView(droppedModelItem) as WorkflowViewElement;
+                        ViewUtilities.MeasureView(view, true);
+                    }
+
+                    if (view != null)
+                    {
+                        PostDropUpdateViewState(view,
+                            newFlowStepMI,
+                            autoConnectDirection,
+                            connectorToSplit,
+                            e.GetPosition(this.panel),
+                            anchorPoint,
+                            keepRelativePosition,
+                            shapeOffsetter);
+                    }
+                } // external move
+            } // foreach
+
+            // Remap references.
+            // The re-map here is different from the remaping in copy/paste.
+            // In copy paste, all the values are copied. but here, some value are
+            // set by Properties["key"].SetValue().
+            // Don't move this into PrepareMove. Some value setting is added to 
+            // Change. So the operation here will decide the order of Change.Apply().
+            // PropertyChange in some case, must happen after ModelItem is moved to 
+            // new places.
+            foreach (FlowNode flowNode in oldNewFlowNodeMap.Keys)
+            {
+                UpdateCloneReferenceByModelItem(flowNode, flowNodeModelItemMap, oldNewFlowNodeMap);
+            }
+
+            DragDropHelper.SetDragDropMovedViewElements(e, movedViewElements);
+            
+            //Backward compatibility for 4.0
+            if (droppedObjects.Count() == 1 && movedViewElements.Count == 1)
+            {
+                #pragma warning disable 618
+                DragDropHelper.SetDragDropCompletedEffects(e, DragDropEffects.Move);
+                #pragma warning restore 618
+            }
+
+            if (modelItemDroppedFromToolBox != null)
+            {
+                // if it is dropped from toolbox, select
+                this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (Action)(() =>
+                {
+                    UIElement view = (UIElement)(modelItemDroppedFromToolBox.View);
+                    if (view != null)
+                    {
+                        Keyboard.Focus(view);
+                        Selection.SelectOnly(this.Context, modelItemDroppedFromToolBox);
+                    }
+                }));
+            }
+
+            if (droppedModelItem != null)
+            {
+                if (IsFlowNode(droppedModelItem))
+                {
+                    return droppedModelItem;
+                }
+                else if (IsFlowStepAction(droppedModelItem))
+                {
+                    if (newFlowStepMI != null)
+                    {
+                        return newFlowStepMI;
+                    }
+                    else
+                    {
+                        return this.GetParentFlowStepModelItem(droppedModelItem);
+                    }
+                }
+                return null;
+            }
+
+            return null;
+        }
+
+        Point CalculateDropLocationForAutoConnect(AutoConnectDirections autoConnectDirection, Size droppedSize)
+        {
+            return AutoConnectHelper.CalculateDropLocation(droppedSize, this.panel.CurrentAutoConnectTarget, autoConnectDirection, this.shapeLocations);
+        }
+
+        Point CalculateDropLocationForAutoSplit(Point mousePosition, Point originalDropLocation, Connector connector, Size droppedSize)
+        {
+            return AutoSplitHelper.CalculateDropLocation(mousePosition, originalDropLocation, connector, droppedSize, this.shapeLocations);
+        }
+
+        private void OnFlowchartGridDrop(object sender, DragEventArgs e)
+        {
+            ModelItemHelper.TryCreateImmediateEditingScopeAndExecute(this.ModelItem.GetEditingContext(), System.Activities.Presentation.SR.CollectionAddEditingScopeDescription, (es) =>
+                {
+                    this.DoFlowchartGridDrop(e, AutoConnectDirections.None, null);
+                    if (es != null)
+                    {
+                        es.Complete();
+                    }
+                });
+        }
+
+        // Prepare some maps for drag/drop in Flowchart
+        // objToNewFlowNodeMap : 
+        //    <DroppedObject, FlowNodeToBeDropInDestFlowchart>
+        // flowNodeNewModelItemMap : 
+        //    <OldFlowNode, NewModelItemInDestFlowchart>
+        //    For FlowSwitch/FlowDecision: NewModelItemINDestFlowchart is the source ModelItem.
+        //    For FlowStep, leeve NewModeItemInDestFlowchart Null, this value could not be decided here.
+        // flowNodeMovingMap: 
+        //    <OldFlowNode, NewFlowNode>
+        //    If a droppedObject is not a flownode, say it is from tool box, this value is empty.
+        private void PrepareForDrop(IEnumerable<object> objects,
+                out Dictionary<object, FlowNode> objToNewFlowNodeMap,
+                out Dictionary<FlowNode, ModelItem> flowNodeNewModelItemMap,
+                out Dictionary<FlowNode, FlowNode> oldNewFlowNodeMap)
+        {
+            Fx.Assert(objects != null, "dropping null objects");
+            objToNewFlowNodeMap = new Dictionary<object, FlowNode>();
+            oldNewFlowNodeMap = new Dictionary<FlowNode, FlowNode>();
+            flowNodeNewModelItemMap = new Dictionary<FlowNode, ModelItem>();
+            // 1) Get flow node and Composite view
+            foreach (object obj in objects)
+            {
+                if (obj == null)
+                {
+                    Fx.Assert("obj == null");
+                    continue;
+                }
+
+                objToNewFlowNodeMap[obj] = null;
+                ModelItem modelItem = obj as ModelItem;
+                if (modelItem == null)
+                {
+                    // if not a model item, return
+                    continue;
+                }
+
+                ICompositeView compositeView = DragDropHelper.GetCompositeView(modelItem.View as WorkflowViewElement) as ICompositeView;
+                if (compositeView == null)
+                {
+                    continue;
+                }
+
+                // This means a internal move, no extra thing needed.
+                if (compositeView.Equals(this))
+                {
+                    // internal move.
+                    continue;
+                }
+
+                if (!IsFlowStepAction(modelItem)
+                    && !IsFlowNode(modelItem))
+                {
+
+                    Fx.Assert(modelItem.ItemType.Equals(typeof(StartNode)),
+                        "should not happen. Not a Activity, FlowNode or StartSymbol");
+                    // don't do anything if the dropped object is either an Activity or
+                    // Flownode.
+                    continue;
+                }
+
+                FlowNode flowNode = null;
+                FlowchartDesigner fcDesigner = compositeView as FlowchartDesigner;
+                if (fcDesigner != null)
+                {
+                    // If the source view is a FlowchartDesigner, we need to do some to prepare
+                    // the remap.
+                    ModelItem flowElementMI = fcDesigner.GetFlowElementMI(modelItem);
+                    Fx.Assert(flowElementMI != null, "flowElementMI != null");
+                    FlowNode oldFlowNode = flowElementMI.GetCurrentValue() as FlowNode;
+                    Fx.Assert(oldFlowNode != null, "oldFlowNode != null");
+                    flowNode = oldFlowNode;
+                    flowNodeNewModelItemMap[oldFlowNode] = flowElementMI;
+                    oldNewFlowNodeMap[oldFlowNode] = flowNode;
+                }
+                else
+                {
+                    // The object is moved from somewhere else, say Sequence. 
+                    // We create a FlowStep for it.
+                    FlowStep flowStep = new FlowStep();
+                    flowStep.Action = (Activity)modelItem.GetCurrentValue();
+                    flowNode = flowStep;
+                }
+                objToNewFlowNodeMap[obj] = flowNode;
+            }
+        }
+
+        // Move the object to correct position after drop
+        private void PostDropUpdateViewState(WorkflowViewElement view,
+            ModelItem flownodeMI,
+            AutoConnectDirections autoConnectDirection,
+            Connector connectorToSplit,
+            Point newPoint,
+            Point anchorPoint,
+            bool keepRelativePosition,
+            ShapeOffsetter shapeOffsetter)
+        {
+            Fx.Assert((view != null && flownodeMI != null),
+            "movedItem != null && flownodeMI != null");
+            Point shapeLocationPtr;
+            if (autoConnectDirection != AutoConnectDirections.None)
+            {
+                shapeLocationPtr = this.CalculateDropLocationForAutoConnect(autoConnectDirection, view.DesiredSize);
+            }
+            else
+            {
+                shapeLocationPtr = SnapVisualToGrid(view, newPoint, anchorPoint, keepRelativePosition);
+                if (!keepRelativePosition)
+                {
+                    // To avoid overlaps
+                    shapeLocationPtr = shapeOffsetter.OffsetShapeLocation(shapeLocationPtr);
+                }
+            }
+
+            if (connectorToSplit != null)
+            {
+                shapeLocationPtr = this.CalculateDropLocationForAutoSplit(newPoint, shapeLocationPtr, connectorToSplit, view.DesiredSize);
+            }
+
+            // 
+            if (keepRelativePosition)
+            {
+                this.OffsetDroppedItemToNewPosition(flownodeMI, shapeLocationPtr);
+            }
+            else
+            {
+                this.StoreShapeViewState(flownodeMI, shapeLocationPtr);
+            }
+        }
+
+        private void OffsetDroppedItemToNewPosition(ModelItem flownodeMI, Point newLocationPtr)
+        {
+            object locationOfShape = this.ViewStateService.RetrieveViewState(flownodeMI, shapeLocation);
+            if (locationOfShape == null)
+            {
+                return;
+            }
+            Point oldLocationPoint = (Point)locationOfShape;
+            Vector offset = newLocationPtr - oldLocationPoint;
+            this.OffSetViewState(offset, flownodeMI, true);
+        }
+
+        private void OnFlowchartGridDragEnter(object sender, DragEventArgs e)
+        {
+            OnFlowchartGridDrag(sender, e);
+        }
+
+        private void OnFlowchartGridDragOver(object sender, DragEventArgs e)
+        {
+            OnFlowchartGridDrag(sender, e);
+        }
+
+        private bool IsDropAllowed(DragEventArgs e)
+        {
+            return DragDropHelper.AllowDrop(e.Data, this.Context, typeof(Activity), typeof(FlowNode), typeof(StartNode));
+        }
+
+        private void OnFlowchartGridDrag(object sender, DragEventArgs e)
+        {
+            if (!e.Handled)
+            {
+                if (!this.IsDropAllowed(e))
+                {
+                    e.Effects = DragDropEffects.None;
+                }
+                e.Handled = true;
+            }
+        }
+
+        static bool IsLinkModelItemSelectable(ModelItem linkModelItem)
+        {
+            return linkModelItem != null &&
+                // link from FlowDecision
+                   !typeof(FlowDecision).IsAssignableFrom(linkModelItem.ItemType) &&
+                // link from StartNode
+                   !typeof(Flowchart).IsAssignableFrom(linkModelItem.ItemType);
+        }
+
+        private void OnFlowchartGridKeyDown(object sender, KeyEventArgs e)
+        {
+            if (srcConnectionPoint != null)
+            {
+                // Ignore KeyBoard input when creating connector.
+                e.Handled = true;
+                return;
+            }
+
+            Selection currentSelection = this.Context.Items.GetValue<Selection>();
+            if (e.Key == Key.Delete && this.selectedConnector != null && currentSelection.SelectionCount <= 1)
+            {
+                // process the delete if only the connector is selected
+                ModelItem primarySelection = currentSelection.PrimarySelection;
+                //Delete connector
+                ModelItem linkModelItem = FlowchartDesigner.GetLinkModelItem(this.selectedConnector);
+                if ((primarySelection == null && !IsLinkModelItemSelectable(linkModelItem)) ||
+                    object.Equals(primarySelection, linkModelItem))
+                {
+                    DeleteLink(this.selectedConnector);
+                    this.selectedConnector = null;
+                    e.Handled = true;
+                }
+            }
+            else if ((new List<Key> { Key.Left, Key.Right, Key.Up, Key.Down }).Contains(e.Key)
+                && currentSelection.SelectedObjects.All<ModelItem>((p) => { return this.modelElement.ContainsKey(p); }))
+            {
+                KeyboardMove(e.Key);
+                e.Handled = true;
+            }
+        }
+
+        private void FlowchartDesignerKeyDown(object sender, KeyEventArgs e)
+        {
+            // Ignore KeyBoard input when in resizing mode.
+            e.Handled = IsResizing;
+        }
+
+        private void FlowchartDesignerPreviewKeyDown(object sender, KeyEventArgs e)
+        {
+            // Enter cannot be captured in KeyDown, so handle it in PreviewKeyDown event.
+            e.Handled = IsResizing && e.Key == Key.Enter;
+        }
+
+        void KeyboardMove(Key key)
+        {
+            Vector moveDir = FreeFormPanel.CalculateMovement(key, this.IsRightToLeft);
+
+            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.ItemMove))
+            {
+                bool shouldStoreCurrentSizeViewState = true;
+                foreach (ModelItem selectedModelItem in this.Context.Items.GetValue<Selection>().SelectedObjects)
+                {
+                    UIElement shapeToMove = this.modelElement[selectedModelItem];
+                    Point currentLocation = FreeFormPanel.GetLocation(shapeToMove);
+                    Point newLocation = Point.Add(currentLocation, moveDir);
+
+                    // Make sure the newLocation is positive.
+                    newLocation.X = FreeFormPanel.ZeroIfNegative(newLocation.X);
+                    newLocation.Y = FreeFormPanel.ZeroIfNegative(newLocation.Y);
+
+                    if (newLocation == currentLocation)
+                    {
+                        continue;
+                    }
+
+                    if (shouldStoreCurrentSizeViewState)
+                    {
+                        // Moving may change the size of flowchart; need this to undo the size change.
+                        this.StoreCurrentSizeViewStateWithUndo();
+                        shouldStoreCurrentSizeViewState = false;
+                    }
+                    PerformInternalMove(shapeToMove, newLocation, null, AutoConnectDirections.None, null);
+                }
+                es.Complete();
+            }
+        }
+
+        private void OnFlowchartGridPreviewMouseDown(object sender, MouseButtonEventArgs e)
+        {
+            this.selectedConnector = null;
+        }
+
+        private void OnFlowchartGridPreviewMouseUp(object sender, MouseButtonEventArgs e)
+        {
+            if (this.srcConnectionPoint != null)
+            {
+                UIElement destElement = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(e.OriginalSource as DependencyObject);
+                if (destElement != null && this.panel.Children.Contains(destElement))
+                {
+                    string errorMessage = string.Empty;
+                    Point mouseUpLocation = e.GetPosition(sender as IInputElement);
+
+                    if (!CreateLinkGesture(this.srcConnectionPoint, destElement, mouseUpLocation, out errorMessage, false, null) && !errorMessage.Equals(string.Empty))
+                    {
+                        ErrorReporting.ShowErrorMessage(errorMessage);
+                    }
+                    this.srcConnectionPoint = null;
+                    RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+                    RemoveAdorner(destElement, typeof(FlowchartConnectionPointsAdorner));
+                    // Simulate a MouseEnter to show connection points
+                    ChildElement_MouseEnter(destElement, null);
+                }
+            }
+        }
+
+        enum ConnectorType
+        {
+            Default = 0, ErrorConnector = 1
+        };
+
+        void OnConnectNodesCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            e.CanExecute = false;
+            Selection selection = this.Context.Items.GetValue<Selection>();
+            if (selection.SelectionCount > 1)
+            {
+                e.CanExecute = true;
+                foreach (ModelItem item in selection.SelectedObjects)
+                {
+                    if (!this.modelElement.ContainsKey(item))
+                    {
+                        e.CanExecute = false;
+                        break;
+                    }
+                }
+            }
+            e.Handled = true;
+        }
+
+        void OnConnectNodesCommandExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.FCCreateLink))
+            {
+                List<ModelItem> selectedFlowchartItems = new List<ModelItem>(this.Context.Items.GetValue<Selection>().SelectedObjects);
+                selectedFlowchartItems.Reverse();
+                CreateLinks(selectedFlowchartItems);
+                es.Complete();
+            }
+        }
+
+        void OnShowAllConditionsCommandExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            this.ShowAllConditions = false;
+            this.ShowAllConditions = true;
+        }
+
+        void OnShowAllConditionsCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            e.CanExecute = true;
+            e.Handled = true;
+        }
+
+        void OnHideAllConditionsCommandExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            this.ShowAllConditions = true;
+            this.ShowAllConditions = false;
+        }
+
+        void OnHideAllConditionsCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            e.CanExecute = true;
+            e.Handled = true;
+        }
+
+        internal static void DropActivityBelow(ViewStateService viewStateService, ModelItem modelItem, Activity activity, double interval)
+        {
+            // Extracting information
+            ModelItem flowStep = modelItem.Parent;
+            ModelItemCollection nodes = flowStep.Parent as ModelItemCollection;
+            ModelItem flowchart = nodes.Parent;
+            FlowchartDesigner flowchartDesigner = ((FlowchartDesigner)flowchart.View);
+
+            // Creating FlowStep ModelItem
+            ModelTreeManager modelTreeManager = (modelItem as IModelTreeItem).ModelTreeManager;
+            FlowStep step = new FlowStep() { Action = activity };
+            ModelItem activityModelItem = modelTreeManager.WrapAsModelItem(step);
+
+            // Compute the 'correct' location
+            Point point = (Point)viewStateService.RetrieveViewState(flowStep, shapeLocation);
+            point.Y += (((WorkflowViewElement)modelItem.View).ActualHeight + interval);
+            viewStateService.StoreViewState(activityModelItem, shapeLocation, point);
+            flowchartDesigner.UpdateViewStateToAvoidOverlapOnPaste(new List<ModelItem> { activityModelItem });
+
+            // Add it to the model tree
+            nodes.Add(activityModelItem);
+        }
+
+        void OnAdornerDecoratorLoaded(object sender, RoutedEventArgs e)
+        {
+            this.adornerLayer = ((AdornerDecorator)sender).AdornerLayer;
+            // This might not be the best event to handle, ideally we would like to have the event when the list of adorner changes.
+            this.adornerLayer.LayoutUpdated += new EventHandler(OnAdornerLayerLayoutUpdated);
+        }
+
+        void OnAdornerLayerLayoutUpdated(object sender, EventArgs e)
+        {
+            // Extract the set of all adorners
+            List<Adorner> adornerList = new List<Adorner>();
+            foreach (object logicalChild in LogicalTreeHelper.GetChildren(adornerLayer))
+            {
+                Fx.Assert(logicalChild is Adorner, "What else could an adornerLayer hold?");
+                adornerList.Add((Adorner)logicalChild);
+            }
+            Adorner[] adorners = adornerList.ToArray();
+            if (FlowchartDesigner.Pack(adorners, (adorner => adorner is FlowchartExpressionAdorner)))
+            {
+                foreach (Adorner adorner in adorners)
+                {
+                    adornerLayer.Remove(adorner);
+                }
+                foreach (Adorner adorner in adorners)
+                {
+                    adornerLayer.Add(adorner);
+                }
+            }
+        }
+
+        // do not proprogate up to FlowchartDesigner, because designer will set selection to itself on GotFocus event.
+        private void OnAdornerLayerGotFocus(object sender, RoutedEventArgs e)
+        {
+            e.Handled = true;
+        }
+
+        // Within the connection points with least number of connectors, get the one closest to the midpoint.
+        private static ConnectionPoint GetConnectionPointForAutoConnect(List<ConnectionPoint> availableConnectionPoints)
+        {
+            int minConnectorCount = availableConnectionPoints.Min<ConnectionPoint>((p) =>
+                {
+                    return p.AttachedConnectors.Count;
+                });
+
+            List<ConnectionPoint> connectionPoints = new List<ConnectionPoint>(availableConnectionPoints.Where<ConnectionPoint>((p) =>
+                {
+                    return p.AttachedConnectors.Count == minConnectorCount;
+                }));
+
+            ConnectionPoint midPoint = availableConnectionPoints[availableConnectionPoints.Count / 2];
+            if (connectionPoints.Contains(midPoint))
+            {
+                return midPoint;
+            }
+            double dist;
+            return ConnectionPoint.GetClosestConnectionPoint(connectionPoints, midPoint.Location, out dist);
+        }
+
+        private ConnectionPoint GetSourceConnectionPointForAutoConnect(UIElement designer, EdgeLocation edgeLocation)
+        {
+            List<ConnectionPoint> connectionPoints = FlowchartDesigner.GetAllConnectionPoints(designer);
+            connectionPoints = new List<ConnectionPoint>(connectionPoints.Where<ConnectionPoint>((p) =>
+            {
+                return p != null && p.PointType != ConnectionPointKind.Incoming && p.EdgeLocation == edgeLocation;
+            }));
+            Fx.Assert(connectionPoints.Count > 0, "There should be at least one src connection point available");
+            return FlowchartDesigner.GetConnectionPointForAutoConnect(connectionPoints);
+        }
+
+        internal static ConnectionPoint GetDestinationConnectionPointForAutoConnect(UIElement dest, ConnectionPoint srcConnPoint)
+        {
+            EdgeLocation destEdgeLocation = EdgeLocation.Top;
+            if (!((dest is VirtualizedContainerService.VirtualizingContainer) && ((VirtualizedContainerService.VirtualizingContainer)dest).ModelItem.ItemType == typeof(FlowDecision)))
+            {
+                switch (srcConnPoint.EdgeLocation)
+                {
+                    case EdgeLocation.Top:
+                        destEdgeLocation = EdgeLocation.Bottom;
+                        break;
+                    case EdgeLocation.Bottom:
+                        destEdgeLocation = EdgeLocation.Top;
+                        break;
+                    case EdgeLocation.Left:
+                        destEdgeLocation = EdgeLocation.Right;
+                        break;
+                    case EdgeLocation.Right:
+                        destEdgeLocation = EdgeLocation.Left;
+                        break;
+                }
+            }
+            List<ConnectionPoint> destConnectionPoints = new List<ConnectionPoint>(FlowchartDesigner.GetConnectionPoints(dest).Where<ConnectionPoint>((p) =>
+            {
+                return p.PointType != ConnectionPointKind.Outgoing && p.EdgeLocation == destEdgeLocation;
+            }));
+            Fx.Assert(destConnectionPoints.Count > 0, "There should be at least one dest connection point available");
+            return FlowchartDesigner.GetConnectionPointForAutoConnect(destConnectionPoints);
+        }
+
+        private ModelItem GetSourceModelItemForAutoConnect(UIElement sourceElement)
+        {
+            ModelItem sourceModelItem = null;
+            if (sourceElement is WorkflowViewElement)
+            {
+                sourceModelItem = ((WorkflowViewElement)sourceElement).ModelItem;
+            }
+            else if (sourceElement is VirtualizedContainerService.VirtualizingContainer)
+            {
+                sourceModelItem = ((VirtualizedContainerService.VirtualizingContainer)sourceElement).ModelItem;
+            }
+            if (sourceModelItem != null && IsFlowStepAction(sourceModelItem))
+            {
+                sourceModelItem = this.GetParentFlowStepModelItem(sourceModelItem);
+                Fx.Assert(typeof(FlowStep).IsAssignableFrom(sourceModelItem.ItemType), "The parent should be FlowNode");
+            }
+            return sourceModelItem;
+        }
+
+        private ModelItem GetParentFlowStepModelItem(ModelItem activityModelItem)
+        {
+            foreach (ModelItem flowNodeModelItem in this.ModelItem.Properties["Nodes"].Collection)
+            {
+                if (typeof(FlowStep).IsAssignableFrom(flowNodeModelItem.ItemType))
+                {
+                    if (flowNodeModelItem.Properties["Action"].Value == activityModelItem)
+                    {
+                        return flowNodeModelItem;
+                    }
+                }
+            }
+            return null;
+        }
+
+        public void DoAutoConnect(DragEventArgs e, UIElement targetElement, AutoConnectDirections direction)
+        {
+            UIElement sourceElement = targetElement;
+            bool immediatelyCommit = ModelItemHelper.CanCreateImmediateEditingScope(this.ModelItem);
+
+            using (EditingScope scope = (EditingScope)this.ModelItem.BeginEdit(SR.AutoConnect, immediatelyCommit))
+            {
+                ModelItem droppedModelItem = this.DoFlowchartGridDrop(e, direction, null);
+                bool autoConnected = false;
+                if (droppedModelItem != null)
+                {
+                    ModelItem sourceModelItem = this.GetSourceModelItemForAutoConnect(sourceElement);
+                    if (sourceModelItem != null)
+                    {
+                        if (sourceModelItem.ItemType == typeof(FlowStep))
+                        {
+                            sourceModelItem.Properties["Next"].SetValue(droppedModelItem);
+                            autoConnected = true;
+                        }
+                        else if (sourceModelItem.ItemType == typeof(FlowDecision))
+                        {
+                            if (direction == AutoConnectDirections.Left)
+                            {
+                                sourceModelItem.Properties["True"].SetValue(droppedModelItem);
+                                autoConnected = true;
+                            }
+                            else if (direction == AutoConnectDirections.Right)
+                            {
+                                sourceModelItem.Properties["False"].SetValue(droppedModelItem);
+                                autoConnected = true;
+                            }
+                        }
+                        else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(sourceModelItem.ItemType))
+                        {
+                            string message = string.Empty;
+                            autoConnected = this.CreateFlowSwitchLink(this.srcConnectionPointForAutoConnect, sourceModelItem, droppedModelItem, null, null, ref message);
+                        }
+                        else if (sourceModelItem.ItemType == typeof(StartNode))
+                        {
+                            this.ModelItem.Properties["StartNode"].SetValue(droppedModelItem);
+                            autoConnected = true;
+                        }
+                    }
+                }
+                if (autoConnected)
+                {
+                    this.srcConnectionPointForAutoConnect = this.GetSourceConnectionPointForAutoConnect(sourceElement, AutoConnectHelper.AutoConnectDirection2EdgeLocation(direction));
+                    scope.Complete();
+                }
+                else
+                {
+                    scope.Revert();
+                }
+            }
+        }
+
+        public AutoConnectDirections GetDirectionsAllowed(DragEventArgs e, UIElement targetElement)
+        {
+            List<Type> draggedTypes = DragDropHelper.GetDraggedTypes(e.Data);
+            if (draggedTypes.Count != 1)
+            {
+                return AutoConnectDirections.None;
+            }
+            Type draggedType = draggedTypes[0];
+            if (!typeof(Activity).IsAssignableFrom(draggedType) &&
+                  !typeof(FlowNode).IsAssignableFrom(draggedType) &&
+                  !IsActivityTemplateFactory(draggedType))
+            {
+                return AutoConnectDirections.None;
+            }
+            ModelItem sourceModelItem = this.GetSourceModelItemForAutoConnect(targetElement);
+            if (sourceModelItem != null)
+            {
+                if (sourceModelItem.ItemType == typeof(FlowStep))
+                {
+                    if (sourceModelItem.Properties["Next"].Value != null)
+                    {
+                        return AutoConnectDirections.None;
+                    }
+                }
+                else if (sourceModelItem.ItemType == typeof(FlowDecision))
+                {
+                    AutoConnectDirections directions = AutoConnectDirections.None;
+                    if (sourceModelItem.Properties["True"].Value == null)
+                    {
+                        directions |= AutoConnectDirections.Left;
+                    }
+                    if (sourceModelItem.Properties["False"].Value == null)
+                    {
+                        directions |= AutoConnectDirections.Right;
+                    }
+                    return directions;
+                }
+                else if (sourceModelItem.ItemType == typeof(StartNode))
+                {
+                    if (this.ModelItem.Properties["StartNode"].Value != null)
+                    {
+                        return AutoConnectDirections.None;
+                    }
+                }
+            }
+            return AutoConnectDirections.Top | AutoConnectDirections.Bottom | AutoConnectDirections.Left | AutoConnectDirections.Right;
+        }
+
+        public bool CanAutoSplit(DragEventArgs e)
+        {
+            if (!this.IsDropAllowed(e))
+            {
+                return false;
+            }
+            ModelItem draggedModelItem = e.Data.GetData(DragDropHelper.ModelItemDataFormat) as ModelItem;
+
+            // The start node
+            if (draggedModelItem is FakeModelItemImpl)
+            {
+                return false;
+            }
+
+            if (draggedModelItem != null && this.modelElement.ContainsKey(draggedModelItem))
+            {
+                if (this.GetAttachedConnectors(this.modelElement[draggedModelItem]).Count > 0)
+                {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        internal static int GetConnectionPointIndex(UIElement element, ConnectionPoint pnt)
+        {
+            List<ConnectionPoint> list = FlowchartDesigner.GetAllConnectionPoints(element);
+            return list.IndexOf(pnt);
+        }
+
+        internal static ConnectionPoint GetConnectionPointFromIndex(UIElement element, int index)
+        {
+            List<ConnectionPoint> list = FlowchartDesigner.GetAllConnectionPoints(element);
+            if (index >= 0 && index < list.Count)
+            {
+                return list[index];
+            }
+            return null;
+        }
+
+        internal UIElement GetView(ModelItem item)
+        {
+            if (item == this.ModelItem)
+            {
+                return this.StartSymbol;
+            }
+            return this.modelElement[item];
+        }
+
+        public void DoAutoSplit(DragEventArgs e, Connector connector)
+        {
+            bool immediatelyCommit = ModelItemHelper.CanCreateImmediateEditingScope(this.ModelItem);
+
+            using (EditingScope scope = (EditingScope)this.ModelItem.BeginEdit(SR.AutoSplit, immediatelyCommit))
+            {
+                ModelItem droppedModelItem = this.DoFlowchartGridDrop(e, AutoConnectDirections.None, connector);
+                bool autoSplit = false;
+                ModelItem sourceModelItem = null;
+                ModelItem destinationModelItem = null;
+                if (droppedModelItem != null)
+                {
+                    this.StoreConnectorViewState(connector, true);
+                    IFlowSwitchLink flowSwitchLink = this.DeleteLink(connector, true);
+
+                    bool linkCreated = true;
+                    string message = string.Empty;
+                    UIElement srcDesigner = FreeFormPanel.GetSourceConnectionPoint(connector).ParentDesigner;
+                    UIElement destDesigner = FreeFormPanel.GetDestinationConnectionPoint(connector).ParentDesigner;
+                    if (srcDesigner is StartSymbol)
+                    {
+                        sourceModelItem = this.ModelItem;
+                        this.ModelItem.Properties["StartNode"].SetValue(droppedModelItem);
+                    }
+                    else if (srcDesigner is VirtualizedContainerService.VirtualizingContainer)
+                    {
+                        sourceModelItem = ((VirtualizedContainerService.VirtualizingContainer)srcDesigner).ModelItem;
+                        ModelItem srcFlowNodeModelItem = sourceModelItem;
+                        if (!IsFlowNode(srcFlowNodeModelItem))
+                        {
+                            srcFlowNodeModelItem = this.GetParentFlowStepModelItem(srcFlowNodeModelItem);
+                        }
+                        Fx.Assert(IsFlowNode(srcFlowNodeModelItem), "srcFlowNodeModelItem should be a FlowNode");
+
+                        if (typeof(FlowStep) == srcFlowNodeModelItem.ItemType)
+                        {
+                            srcFlowNodeModelItem.Properties["Next"].SetValue(droppedModelItem);
+                        }
+                        else if (typeof(FlowDecision) == srcFlowNodeModelItem.ItemType && FreeFormPanel.GetSourceConnectionPoint(connector).Equals(GetTrueConnectionPoint(srcDesigner)))
+                        {
+                            srcFlowNodeModelItem.Properties["True"].SetValue(droppedModelItem);
+                        }
+                        else if (typeof(FlowDecision) == srcFlowNodeModelItem.ItemType && FreeFormPanel.GetSourceConnectionPoint(connector).Equals(GetFalseConnectionPoint(srcDesigner)))
+                        {
+                            srcFlowNodeModelItem.Properties["False"].SetValue(droppedModelItem);
+                        }
+                        else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(srcFlowNodeModelItem.ItemType))
+                        {
+                            linkCreated = CreateFlowSwitchLink(FreeFormPanel.GetSourceConnectionPoint(connector), srcFlowNodeModelItem, droppedModelItem, flowSwitchLink, null, ref message);
+                        }
+                    }
+
+                    if (linkCreated && string.IsNullOrEmpty(message))
+                    {
+                        destinationModelItem = ((VirtualizedContainerService.VirtualizingContainer)destDesigner).ModelItem;
+                        ModelItem destFlowNodeModelItem = destinationModelItem;
+                        if (!IsFlowNode(destFlowNodeModelItem))
+                        {
+                            destFlowNodeModelItem = this.GetParentFlowStepModelItem(destFlowNodeModelItem);
+                        }
+
+                        Fx.Assert(IsFlowNode(destFlowNodeModelItem), "destFlowNodeModelItem should be a FlowNode");
+
+                        if (droppedModelItem.ItemType == typeof(FlowStep))
+                        {
+                            droppedModelItem.Properties["Next"].SetValue(destFlowNodeModelItem);
+                            autoSplit = true;
+                        }
+                        else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(droppedModelItem.ItemType))
+                        {
+                            droppedModelItem.Properties["Default"].SetValue(destFlowNodeModelItem);
+                            autoSplit = true;
+                        }
+                        else if (droppedModelItem.ItemType == typeof(FlowDecision))
+                        {
+                            droppedModelItem.Properties["True"].SetValue(destFlowNodeModelItem);
+                            autoSplit = true;
+                        }
+                    }
+                }
+
+                if (autoSplit)
+                {
+                    Fx.Assert(sourceModelItem != null, "sourceModelItem != null");
+                    Fx.Assert(destinationModelItem != null, "destinationModelItem != null");
+
+                    int srcIndex = GetConnectionPointIndex(this.GetView(sourceModelItem), FreeFormPanel.GetSourceConnectionPoint(connector));
+                    int desIndex = GetConnectionPointIndex(this.GetView(destinationModelItem), FreeFormPanel.GetDestinationConnectionPoint(connector));
+
+                    EdgeLocation entryEdgeForAutoSplit;
+                    EdgeLocation exitEdgeForAutoSplit;
+                    AutoSplitHelper.CalculateEntryExitEdges(e.GetPosition(this.panel),
+                        connector, out entryEdgeForAutoSplit, out exitEdgeForAutoSplit);
+
+                    FlowchartDesigner.SetAutoSplitDataWithUndo(
+                        this.ModelItem, sourceModelItem, destinationModelItem, srcIndex, desIndex, entryEdgeForAutoSplit, exitEdgeForAutoSplit);
+
+                    scope.Complete();
+                }
+                else
+                {
+                    scope.Revert();
+                }
+            }
+        }
+
+        private ConnectionPoint GetEmptyEdgeMidConnectionPointNotOfType(UIElement designer, EdgeLocation edgeLocation, ConnectionPointKind invalidType)
+        {
+            List<ConnectionPoint> connectionPoints = FlowchartDesigner.GetAllConnectionPoints(designer);
+            connectionPoints = new List<ConnectionPoint>(connectionPoints.Where<ConnectionPoint>((p) =>
+            {
+                return p != null && p.PointType != invalidType && p.AttachedConnectors.Count == 0 && p.EdgeLocation == edgeLocation;
+            }));
+
+            if (connectionPoints.Count > 0)
+            {
+                return connectionPoints[connectionPoints.Count / 2];
+            }
+
+            return null;
+        }
+
+        private ConnectionPoint GetDestinationConnectionPointForAutoSplit(ConnectionPoint srcConnPoint, UIElement destDesigner)
+        {
+            this.MeasureView(destDesigner);
+            ConnectionPoint point = this.GetEmptyEdgeMidConnectionPointNotOfType(destDesigner, this.entryEdgeForAutoSplit, ConnectionPointKind.Outgoing);
+            if (point == null)
+            {
+                point = this.FindClosestConnectionPointNotOfType(srcConnPoint, new List<ConnectionPoint>(FlowchartDesigner.GetConnectionPoints(destDesigner).Where<ConnectionPoint>(p =>
+                {
+                    return p.AttachedConnectors.Count == 0;
+                })), ConnectionPointKind.Outgoing);
+            }
+
+            return point;
+        }
+
+        private ConnectionPoint GetSourceConnectionPointForAutoSplit(ConnectionPoint destConnPoint, UIElement srcDesigner)
+        {
+            this.MeasureView(srcDesigner);
+            ConnectionPoint point = this.GetEmptyEdgeMidConnectionPointNotOfType(srcDesigner, this.exitEdgeForAutoSplit, ConnectionPointKind.Incoming);
+            if (point == null)
+            {
+                point = this.FindClosestConnectionPointNotOfType(destConnPoint, new List<ConnectionPoint>(FlowchartDesigner.GetConnectionPoints(srcDesigner).Where<ConnectionPoint>(p =>
+                {
+                    return p.AttachedConnectors.Count == 0;
+                })), ConnectionPointKind.Incoming);
+            }
+
+            return point;
+        }
+
+        private void MeasureView(UIElement view)
+        {
+            if (this.panel.Children.Contains(view))
+            {
+                this.panel.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
+            }
+            else if (VisualTreeHelper.GetParent(view) == null)
+            {
+                StackPanel stackPanel = new StackPanel();
+                stackPanel.Children.Add(view);
+                if (view is VirtualizedContainerService.VirtualizingContainer)
+                {
+                    ((VirtualizedContainerService.VirtualizingContainer)view).Populate();
+                }
+                stackPanel.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
+                stackPanel.UpdateLayout();
+                stackPanel.Children.Remove(view);
+                FreeFormPanel.SetChildSize(view, view.DesiredSize);
+            }
+            else
+            {
+                Fx.Assert(false, "The view should either be un-rooted or contained in the FreeFormPanel");
+            }
+        }
+
+        private void StoreCurrentSizeViewStateWithUndo()
+        {
+            this.ViewStateService.StoreViewStateWithUndo(
+                this.ModelItem,
+                FlowchartSizeFeature.WidthPropertyName,
+                this.ViewStateService.RetrieveViewState(this.ModelItem, FlowchartSizeFeature.WidthPropertyName));
+
+            this.ViewStateService.StoreViewStateWithUndo(
+                this.ModelItem,
+                FlowchartSizeFeature.HeightPropertyName,
+                this.ViewStateService.RetrieveViewState(this.ModelItem, FlowchartSizeFeature.HeightPropertyName));
+        }
+
+        static private bool IsFlowStepAction(ModelItem modelItem)
+        {
+            // modelItem.CurrentValue is an Activity which is an Action of a FlowStep
+            return typeof(Activity).IsAssignableFrom(modelItem.ItemType);
+        }
+
+        static private bool IsFlowNode(ModelItem modelItem)
+        {
+            return typeof(FlowNode).IsAssignableFrom(modelItem.ItemType);
+        }
+
+        sealed private class ShapeOffsetter
+        {
+            private Point lastShape;
+            private bool isFirstShape = true;
+
+            public Point OffsetShapeLocation(Point shapeLocation)
+            {
+                if (this.isFirstShape)
+                {
+                    this.lastShape = shapeLocation;
+                    this.isFirstShape = false;
+                    return shapeLocation;
+                }
+
+                // the shapeLocation must be at least at right-down of lastShape
+                Double detX = shapeLocation.X - (lastShape.X + FreeFormPanel.GridSize);
+                Double detY = shapeLocation.Y - (lastShape.Y + FreeFormPanel.GridSize);
+                if (detX < 0 || detY < 0)
+                {
+                    // overlapped
+                    // then offset shapeLocation. 
+                    // offsetX and offsetY must be from Integer * FreeFormPanel.GridSize, because
+                    // shapeLocation is aligned to grid, and we expect after the offset, it is 
+                    // still aligned.
+                    Double offsetX = Math.Ceiling(-detX / FreeFormPanel.GridSize) * FreeFormPanel.GridSize;
+                    Double offsetY = Math.Ceiling(-detY / FreeFormPanel.GridSize) * FreeFormPanel.GridSize;
+                    shapeLocation.Offset(offsetX, offsetY);
+                }
+                this.lastShape = shapeLocation;
+                return this.lastShape;
+            }
+        }
+
+        private static void SetAutoSplitDataWithUndo(
+            ModelItem fcModelItem,
+            ModelItem srcModelItem,
+            ModelItem destModelItem,
+            int srcIndex,
+            int destIndex,
+            EdgeLocation entryEdgeForAutoSplit,
+            EdgeLocation exitEdgeForAutoSplit)
+        {
+            using (EditingScope es = (EditingScope)fcModelItem.BeginEdit(SR.AutoSplit, false))
+            {
+                es.Changes.Add(
+                    new SetAutoSplitConnectionPointChange(
+                        fcModelItem,
+                        srcModelItem,
+                        destModelItem,
+                        srcIndex,
+                        destIndex,
+                        entryEdgeForAutoSplit,
+                        exitEdgeForAutoSplit
+                        ));
+                es.Complete();
+            }
+        }
+
+        private static bool IsActivityTemplateFactory(Type type)
+        {
+            return type.GetInterface(typeof(IActivityTemplateFactory).FullName) != null ||
+                   type.GetInterface(typeof(IActivityTemplateFactory<>).FullName) != null;
+        }
+
+        // In AutoSplit, a mark,this.SrcConnPntAutoSplit & this.DestConnPntAutoSplit,
+        // is set telling the CreateLink, which is called later in Complete(), to use AutoSplit
+        // way to route the connector. 
+        // SetAutoSplitConnectionPointChange makes sure the mark is set during Redo.
+        // This Change does nothing in Undo.
+        private class SetAutoSplitConnectionPointChange : Change
+        {
+            private ModelItem Owner { get; set; }
+            private EdgeLocation EntryEdgeForAutoSplit { get; set; }
+            private EdgeLocation ExitEdgeForAutoSplit { get; set; }
+            private ModelItem SrcModelItem { get; set; }
+            private ModelItem DestModelItem { get; set; }
+            private int SrcConnPntIndex { get; set; }
+            private int DestConnPntIndex { get; set; }
+
+            private bool IsUndo { get; set; }
+
+            public SetAutoSplitConnectionPointChange(
+                ModelItem fcModelItem,
+                ModelItem srcModelItem,
+                ModelItem destModelItem,
+                int srcIndex,
+                int destIndex,
+                EdgeLocation entryEdgeForAutoSplit,
+                EdgeLocation exitEdgeForAutoSplit
+                )
+            {
+                this.Owner = fcModelItem;
+                this.SrcModelItem = srcModelItem;
+                this.DestModelItem = destModelItem;
+                this.SrcConnPntIndex = srcIndex;
+                this.DestConnPntIndex = destIndex;
+                this.EntryEdgeForAutoSplit = entryEdgeForAutoSplit;
+                this.ExitEdgeForAutoSplit = exitEdgeForAutoSplit;
+                this.IsUndo = false;
+            }
+
+            private SetAutoSplitConnectionPointChange()
+            {
+            }
+
+            public override string Description
+            {
+                get { return SR.AutoSplit; }
+            }
+
+            public override bool Apply()
+            {
+                if (this.IsUndo)
+                {
+                    return true;
+                }
+                FlowchartDesigner designer = this.Owner.View as FlowchartDesigner;
+                Fx.Assert(designer != null, "null designer");
+                UIElement srcElem = designer.GetView(this.SrcModelItem);
+                UIElement desElem = designer.GetView(this.DestModelItem);
+                ConnectionPoint srcConnPnt = GetConnectionPointFromIndex(srcElem, this.SrcConnPntIndex);
+                ConnectionPoint desConnPnt = GetConnectionPointFromIndex(desElem, this.DestConnPntIndex);
+                Fx.Assert(srcConnPnt != null, "srcConnPnt");
+                Fx.Assert(desConnPnt != null, "desConnPnt");
+
+                // setting values
+                designer.srcConnectionPointForAutoSplit = srcConnPnt;
+                designer.destConnectionPointForAutoSplit = desConnPnt;
+                designer.entryEdgeForAutoSplit = this.EntryEdgeForAutoSplit;
+                designer.exitEdgeForAutoSplit = this.ExitEdgeForAutoSplit;
+                return true;
+            }
+
+            public override Change GetInverse()
+            {
+                return new SetAutoSplitConnectionPointChange
+                {
+                    Owner = this.Owner,
+                    IsUndo = !this.IsUndo,
+                    EntryEdgeForAutoSplit = this.EntryEdgeForAutoSplit,
+                    ExitEdgeForAutoSplit = this.ExitEdgeForAutoSplit,
+                    SrcModelItem = this.SrcModelItem,
+                    DestModelItem = this.DestModelItem,
+                    SrcConnPntIndex = this.SrcConnPntIndex,
+                    DestConnPntIndex = this.DestConnPntIndex
+                };
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesignerCommands.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesignerCommands.cs
new file mode 100644 (file)
index 0000000..6280b7e
--- /dev/null
@@ -0,0 +1,11 @@
+using System.Windows.Input;
+
+//This class can  be removed if we make FlowchartDesigner public.
+//The purpose of this is so that VS can raise the command defined for the flowchart designer.
+namespace System.Activities.Core.Presentation
+{
+    public static class FlowchartDesignerCommands
+    {
+        public static readonly RoutedCommand ConnectNodesCommand = new RoutedCommand("ConnectNodes", typeof(FlowchartDesignerCommands));
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAdorner.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAdorner.cs
new file mode 100644 (file)
index 0000000..0f0c63a
--- /dev/null
@@ -0,0 +1,90 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Documents;
+    using System.Windows.Media;
+    using System.Windows.Media.Effects;
+
+    class FlowchartExpressionAdorner : Adorner
+    {
+        string expressionString;
+        bool isTextRightToLeft;
+
+        public FlowchartExpressionAdorner(UIElement adornedElement)
+            : base(adornedElement)
+        {
+            expressionString = GetExpressionString();
+            this.isTextRightToLeft = FreeFormPanelUtilities.IsRightToLeft(adornedElement);
+        }
+
+        protected override void OnRender(DrawingContext drawingContext)
+        {
+            Transform transform = isTextRightToLeft ? new MatrixTransform(-1, 0, 0, 1, 0, 0) : Transform.Identity;
+            Border tooltip = new Border
+            {
+                Background = new SolidColorBrush(Colors.White),
+                BorderBrush = new SolidColorBrush(WorkflowDesignerColors.WorkflowViewElementBorderColor),
+                BorderThickness = new Thickness(1),
+                CornerRadius = new CornerRadius(4),
+                Margin = new Thickness(10),
+                Child = new TextBlock
+                {
+                    Margin = new Thickness(4, 0, 4, 0),
+                    MaxHeight = 100,
+                    Text = expressionString,
+                },
+                Effect = new DropShadowEffect
+                {
+                    Color = Colors.Black,
+                    BlurRadius = 4,
+                    Opacity = 0.5
+                },
+                RenderTransform = transform
+            };
+            tooltip.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
+
+            VisualBrush brush = new VisualBrush()
+            {
+                Visual = tooltip
+            };
+
+            Rect adornedElementRect = new Rect(this.AdornedElement.DesiredSize);
+            Rect tooltipRect = new Rect(adornedElementRect.TopLeft + new Vector(adornedElementRect.Width, -tooltip.DesiredSize.Height), tooltip.DesiredSize);
+            Pen renderPen = new Pen();
+            drawingContext.DrawRectangle(brush, renderPen, tooltipRect);
+        }        
+
+        public static string GetExpressionString(UIElement adornedElement)
+        {
+            string expressionPropertyName;
+            ModelItem modelItem;
+            if (adornedElement is FlowDecisionDesigner)
+            {
+                expressionPropertyName = "Condition";
+                modelItem = ((FlowDecisionDesigner)adornedElement).ModelItem;
+            }
+            else
+            {
+                Fx.Assert(adornedElement is FlowSwitchDesigner, "this.AdornedElement is either FlowDecisionDesigner or FlowSwitchDesigner");
+                expressionPropertyName = "Expression";
+                modelItem = ((FlowSwitchDesigner)adornedElement).ModelItem;
+            }
+            Activity expressionActivity = modelItem.Properties[expressionPropertyName].ComputedValue as Activity;
+            return ExpressionHelper.GetExpressionString(expressionActivity, modelItem);
+        }
+
+        string GetExpressionString()
+        {
+            return GetExpressionString(this.AdornedElement);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAutomationPeer.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAutomationPeer.cs
new file mode 100644 (file)
index 0000000..17e4914
--- /dev/null
@@ -0,0 +1,54 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Automation.Peers;
+
+    [Fx.Tag.XamlVisible(false)]
+    class FlowchartExpressionAutomationPeer : UIElementAutomationPeer
+    {
+        const string ExpressionNotShown = "(null)";
+        AutomationPeer wrappedAutomationPeer;
+
+        public FlowchartExpressionAutomationPeer(FrameworkElement owner, AutomationPeer wrappedAutomationPeer)
+            : base(owner)
+        {
+            this.wrappedAutomationPeer = wrappedAutomationPeer;
+        }
+
+        protected override string GetItemStatusCore()
+        {
+            Fx.Assert(this.Owner != null, "FlowchartExpressionAutomationPeer should have this.Owner != null.");
+            bool expressionShown = false;
+            if (this.Owner is FlowDecisionDesigner)
+            {
+                expressionShown = ((FlowDecisionDesigner)this.Owner).ExpressionShown;
+            }
+            else
+            {
+                Fx.Assert(this.Owner is FlowSwitchDesigner, "this.Owner should either be FlowDecisionDesigner or FlowSwitchDesigner.");
+                expressionShown = ((FlowSwitchDesigner)this.Owner).ExpressionShown;
+            }
+            return expressionShown ? FlowchartExpressionAdorner.GetExpressionString(this.Owner) : ExpressionNotShown;
+        }
+
+        protected override string GetClassNameCore()
+        {
+            return this.wrappedAutomationPeer.GetClassName();
+        }
+
+        protected override string GetNameCore()
+        {
+            return this.wrappedAutomationPeer.GetName();
+        }
+
+        protected override string GetAutomationIdCore()
+        {
+            return this.wrappedAutomationPeer.GetAutomationId();
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartFreeFormPanel.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartFreeFormPanel.cs
new file mode 100644 (file)
index 0000000..50e429e
--- /dev/null
@@ -0,0 +1,17 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.FreeFormEditing;
+
+    // This is a workaround. Internal type FreeFromPanel cannot be used in xaml even if System.Activities.Presentation is configured to
+    // be InternalsVisibleTo System.Activities.Core.Presentation
+    internal sealed class FlowchartFreeFormPanel : FreeFormPanel
+    {
+        public FlowchartFreeFormPanel()
+        {
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartResizeGrip.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartResizeGrip.cs
new file mode 100644 (file)
index 0000000..a9ec0a1
--- /dev/null
@@ -0,0 +1,116 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.Activities.Core.Presentation
+{
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Runtime;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation;
+    using System.ComponentModel;
+    using System.Activities.Presentation.FreeFormEditing;
+
+    //This class is visual representation of ResizeGrip like control, which is used in a Grid to allow resizing.
+    class FlowchartResizeGrip : Control
+    {
+        public static readonly DependencyProperty IconProperty =
+            DependencyProperty.Register("Icon", typeof(DrawingBrush), typeof(FlowchartResizeGrip));
+
+        public static readonly DependencyProperty ParentFlowchartDesignerProperty =
+            DependencyProperty.Register("ParentFlowchartDesigner", typeof(FlowchartDesigner), typeof(FlowchartResizeGrip));
+
+        public static readonly DependencyProperty ParentGridProperty =
+            DependencyProperty.Register("ParentGrid", typeof(Grid), typeof(FlowchartResizeGrip));
+
+        public static readonly DependencyProperty DisabledProperty =
+            DependencyProperty.Register("Disabled", typeof(bool), typeof(FlowchartResizeGrip), new UIPropertyMetadata(false));
+
+        Point offset;
+
+        public DrawingBrush Icon
+        {
+            get { return (DrawingBrush)GetValue(IconProperty); }
+            set { SetValue(IconProperty, value); }
+        }
+
+        public FlowchartDesigner ParentFlowchartDesigner
+        {
+            get { return (FlowchartDesigner)GetValue(ParentFlowchartDesignerProperty); }
+            set { SetValue(ParentFlowchartDesignerProperty, value); }
+        }
+
+        public Grid ParentGrid
+        {
+            get { return (Grid)GetValue(ParentGridProperty); }
+            set { SetValue(ParentGridProperty, value); }
+        }
+
+        public bool Disabled
+        {
+            get { return (bool)GetValue(DisabledProperty); }
+            set { SetValue(DisabledProperty, value); }
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+            this.Cursor = Cursors.SizeNWSE;
+        }
+
+        protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
+        {
+            if (!this.Disabled)
+            {
+                this.offset = e.GetPosition(this);
+                this.CaptureMouse();
+                ParentFlowchartDesigner.IsResizing = true;
+                e.Handled = true;
+            }
+            base.OnPreviewMouseLeftButtonDown(e);
+        }
+
+        protected override void OnMouseMove(MouseEventArgs args)
+        {
+            base.OnMouseMove(args);
+            if (!this.Disabled)
+            {
+                if (args.LeftButton == MouseButtonState.Pressed && this.IsMouseCaptured)
+                {
+                    FlowchartDesigner flowchartDesigner = this.ParentFlowchartDesigner;
+                    FreeFormPanel panel = flowchartDesigner.panel;
+                    Grid flowchartGrid = this.ParentGrid;
+                    Point currentPosition = Mouse.GetPosition(flowchartGrid);
+
+                    currentPosition.Offset(this.offset.X, this.offset.Y);
+
+                    flowchartDesigner.FlowchartWidth = Math.Min(Math.Max(panel.RequiredWidth, currentPosition.X), flowchartGrid.MaxWidth);
+                    flowchartDesigner.FlowchartHeight = Math.Min(Math.Max(panel.RequiredHeight, currentPosition.Y), flowchartGrid.MaxHeight);
+                    args.Handled = true;
+                }
+            }
+        }
+
+        protected override void OnPreviewMouseLeftButtonUp(MouseButtonEventArgs e)
+        {
+            if (!this.Disabled)
+            {
+                FlowchartDesigner flowchartDesigner = this.ParentFlowchartDesigner;
+                ModelItem flowchartModelItem = this.ParentFlowchartDesigner.ModelItem;
+                using (ModelEditingScope scope = flowchartModelItem.BeginEdit(SR.FCResizeUndoUnitName))
+                {
+                    TypeDescriptor.GetProperties(flowchartModelItem)[FlowchartSizeFeature.WidthPropertyName].SetValue(flowchartModelItem, flowchartDesigner.FlowchartWidth);
+                    TypeDescriptor.GetProperties(flowchartModelItem)[FlowchartSizeFeature.HeightPropertyName].SetValue(flowchartModelItem, flowchartDesigner.FlowchartHeight);
+                    scope.Complete();
+                }
+                Mouse.OverrideCursor = null;
+                Mouse.Capture(null);
+                ParentFlowchartDesigner.IsResizing = false;
+                e.Handled = true;
+            }
+            base.OnPreviewMouseLeftButtonUp(e);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartSizeFeature.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartSizeFeature.cs
new file mode 100644 (file)
index 0000000..f01c6bb
--- /dev/null
@@ -0,0 +1,28 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Collections.Generic;
+    using System.Windows;
+
+    class FlowchartSizeFeature : ViewStateAttachedPropertyFeature
+    {
+        public const string WidthPropertyName = "Width";
+        public const string HeightPropertyName = "Height";
+        public const double DefaultWidth = 600;
+        public const double DefaultHeight = 600;
+
+        protected override IEnumerable<AttachedPropertyInfo> AttachedProperties
+        {
+            get
+            {
+                yield return new AttachedPropertyInfo<Nullable<double>> { IsBrowsable = false, PropertyName = WidthPropertyName, DefaultValue = DefaultWidth };
+                yield return new AttachedPropertyInfo<Nullable<double>> { IsBrowsable = false, PropertyName = HeightPropertyName, DefaultValue = DefaultHeight };
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ForEachDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ForEachDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..7a18a4a
--- /dev/null
@@ -0,0 +1,60 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities;
+    using System.Activities.Statements;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Diagnostics;
+    using System.Windows;
+    using System.Runtime;
+    using System.Activities.Presentation;
+    using System.Reflection;
+
+    /// <summary>
+    /// Interaction logic for ForEachDesigner.xaml
+    /// </summary>
+    partial class ForEachDesigner
+    {
+        public ForEachDesigner()
+        {
+            InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type[] types = new Type[]
+            {
+                typeof(System.Activities.Statements.ForEach<>),
+                typeof(System.Activities.Statements.ParallelForEach<>)
+            };
+
+            foreach (Type type in types)
+            {
+                builder.AddCustomAttributes(type, new DesignerAttribute(typeof(ForEachDesigner)));
+                builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
+            }
+
+            builder.AddCustomAttributes(typeof(System.Activities.Statements.ForEach<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
+            builder.AddCustomAttributes(typeof(System.Activities.Statements.ParallelForEach<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
+            builder.AddCustomAttributes(typeof(System.Activities.Core.Presentation.Factories.ForEachWithBodyFactory<>), new DefaultTypeArgumentAttribute(typeof(int)));
+            builder.AddCustomAttributes(typeof(System.Activities.Core.Presentation.Factories.ParallelForEachWithBodyFactory<>), new DefaultTypeArgumentAttribute(typeof(int)));
+         
+        }
+
+        void OnValuesBoxLoaded(object sender, RoutedEventArgs e)
+        {
+            ExpressionTextBox etb = sender as ExpressionTextBox;
+            Fx.Assert(null != etb, "sender should not be null!");
+            etb.ExpressionType = typeof(IEnumerable<>).MakeGenericType(this.ModelItem.ItemType.GetGenericArguments());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FreeFormPanelUtilities.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FreeFormPanelUtilities.cs
new file mode 100644 (file)
index 0000000..3f0adae
--- /dev/null
@@ -0,0 +1,26 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.View;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Media;
+
+    internal static class FreeFormPanelUtilities
+    {
+        internal static bool IsRightToLeft(Visual visual)
+        {
+            Fx.Assert(visual != null, "visual != null");
+            Transform trf = ViewUtilities.GetTransformToRoot(visual) as Transform;
+            Matrix matrix = trf != null ? trf.Value : Matrix.Identity;
+            Vector dir = new Vector(1, 0); // Point to right.
+            dir = matrix.Transform(dir);
+            return dir.X < dir.Y;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericFlowSwitchHelper.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericFlowSwitchHelper.cs
new file mode 100644 (file)
index 0000000..764e5fe
--- /dev/null
@@ -0,0 +1,557 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Globalization;
+    using System.Reflection;
+    using System.Runtime;
+
+    internal static class GenericFlowSwitchHelper
+    {
+        static readonly MethodInfo genericCopy = typeof(GenericFlowSwitchHelper).GetMethod("GenericCopy");
+        static readonly MethodInfo genericCreateGenericFlowSwitchLink = typeof(GenericFlowSwitchHelper).GetMethod("CreateGenericFlowSwitchLink");
+        static readonly MethodInfo genericGetCaseName = typeof(GenericFlowSwitchHelper).GetMethod("GenericGetCaseName");
+        static readonly MethodInfo genericRemapFlowSwitch = typeof(GenericFlowSwitchHelper).GetMethod("GenericRemapFlowSwitch");
+        const string flowSwitchCasesKeyIdentifier = "key";
+        const string flowSwitchNullCaseKeyIdentifier = "(null)";
+        const string flowSwitchEmptyCaseKeyIdentifier = "(empty)";
+
+        public static string FlowSwitchCasesKeyIdentifier
+        {
+            get
+            {
+                return flowSwitchCasesKeyIdentifier;
+            }
+        }
+
+        public static string FlowSwitchNullCaseKeyIdentifier
+        {
+            get
+            {
+                return flowSwitchNullCaseKeyIdentifier;
+            }
+        }
+
+        public static string FlowSwitchEmptyCaseKeyIdentifier
+        {
+            get
+            {
+                return flowSwitchEmptyCaseKeyIdentifier;
+            }
+        }
+
+        public static void Copy(Type genericType, FlowNode currentFlowElement, Dictionary<FlowNode, FlowNode> clonedFlowElements)
+        {
+            MethodInfo copy = genericCopy.MakeGenericMethod(new Type[] { genericType });
+            copy.Invoke(null, new object[] { currentFlowElement, clonedFlowElements });
+        }
+
+        public static void GenericCopy<T>(FlowNode currentFlowElement, Dictionary<FlowNode, FlowNode> clonedFlowElements)
+        {
+            FlowSwitch<T> currentFlowSwitch = (FlowSwitch<T>)currentFlowElement;
+            FlowSwitch<T> clonedFlowSwitch = (FlowSwitch<T>)clonedFlowElements[currentFlowElement];
+
+            //Update the default case.
+            FlowNode defaultCase = currentFlowSwitch.Default;
+            if (defaultCase != null && clonedFlowElements.ContainsKey(defaultCase))
+            {
+                clonedFlowSwitch.Default = clonedFlowElements[defaultCase];
+            }
+            else
+            {
+                clonedFlowSwitch.Default = null;
+            }
+
+            //Update the Cases dictionary.
+            foreach (T key in currentFlowSwitch.Cases.Keys)
+            {
+                if (clonedFlowElements.ContainsKey(currentFlowSwitch.Cases[key]))
+                {
+                    clonedFlowSwitch.Cases.Add(key, clonedFlowElements[currentFlowSwitch.Cases[key]]);
+                }
+            }
+        }
+
+        // This is different from GenericCopy because all the reference shuold be set
+        // from property: swtich.Default = SomeValue should be 
+        // switch.Properties["Default"] = SomeValue.
+        public static void ReferenceCopy(Type genericType,
+                FlowNode currentFlowElement,
+                Dictionary<FlowNode, ModelItem> modelItems,
+                Dictionary<FlowNode, FlowNode> clonedFlowElements)
+        {
+            ModelItem modelItem = null;
+            if (modelItems.TryGetValue(currentFlowElement, out modelItem))
+            {
+                MethodInfo copy = genericRemapFlowSwitch.MakeGenericMethod(new Type[] { genericType });
+                copy.Invoke(null, new object[] { currentFlowElement, modelItem, clonedFlowElements });
+            }
+            else
+            {
+                Fx.Assert("should not happen!");
+            }
+        }
+
+        // oldNewFlowNodeMap: <OldFlowNode, NewFlowNode>
+        //    sometimes, OldFlowNode == NewFlowNode, say, FlowNode is a FlowDecesion.
+        //    if FlowNode is FlowStep, OldFlowNode != NewFlowNode
+        public static void GenericRemapFlowSwitch<T>(FlowNode currentFlowElement,
+            ModelItem modelItem, Dictionary<FlowNode, FlowNode> oldNewFlowNodeMap)
+        {
+            FlowSwitch<T> currentFlowSwitch = (FlowSwitch<T>)currentFlowElement;
+
+            //Update the default case.
+            FlowNode defaultCase = currentFlowSwitch.Default;
+            if (defaultCase != null && oldNewFlowNodeMap.ContainsKey(defaultCase))
+            {
+                modelItem.Properties["Default"].SetValue(oldNewFlowNodeMap[defaultCase]);
+            }
+            else
+            {
+                modelItem.Properties["Default"].SetValue(null);
+            }
+
+
+            // collect all the cases that should be update
+            Dictionary<object, object> keyValueMap = new Dictionary<object, object>();
+            foreach (T key in currentFlowSwitch.Cases.Keys)
+            {
+                if (oldNewFlowNodeMap.ContainsKey(currentFlowSwitch.Cases[key]))
+                {
+                    keyValueMap.Add(key, oldNewFlowNodeMap[currentFlowSwitch.Cases[key]]);
+                }
+            }
+            // Update the Cases dictionary.
+            ModelProperty casesProperty = modelItem.Properties["Cases"];
+
+            // remove all key
+            foreach (ModelItem key in GenericFlowSwitchHelper.GetCaseKeys(casesProperty))
+            {
+                GenericFlowSwitchHelper.RemoveCase(casesProperty, key.GetCurrentValue());
+            }
+
+            // add back keys
+            foreach (T key in keyValueMap.Keys)
+            {
+                GenericFlowSwitchHelper.AddCase(casesProperty, key, keyValueMap[key]);
+            }
+        }
+
+        public static bool IsGenericFlowSwitch(Type type)
+        {
+            return type.IsGenericType && type.GetGenericTypeDefinition() == typeof(FlowSwitch<>);
+        }
+
+        public static IFlowSwitchLink CreateFlowSwitchLink(Type flowSwitchType, ModelItem currentMI, object caseValue, bool isDefault)
+        {
+            Type genericType = null;
+            object key = null;
+            genericType = flowSwitchType.GetGenericArguments()[0];
+            if (caseValue is string)
+            {
+                key = GetObject(caseValue as string, genericType);
+            }
+            else
+            {
+                key = caseValue;
+            }
+            MethodInfo method = genericCreateGenericFlowSwitchLink.MakeGenericMethod(genericType);
+            return method.Invoke(null, new object[] { currentMI, key, isDefault }) as IFlowSwitchLink;
+        }
+
+        public static IFlowSwitchLink CreateGenericFlowSwitchLink<T>(ModelItem currentMI, T caseValue, bool isDefault)
+        {
+            if (isDefault)
+            {
+                return new FlowSwitchDefaultLink<T>(currentMI, caseValue, isDefault);
+            }
+            else
+            {
+                return new FlowSwitchCaseLink<T>(currentMI, caseValue, isDefault);
+            }
+        }
+
+        public static string GetCaseName(ModelProperty casesProperties, Type type, out string errorMessage)
+        {
+            object casesDict = casesProperties.Dictionary.GetCurrentValue();
+            ModelItemCollection collection = casesProperties.Value.Properties["ItemsCollection"].Collection;
+            MethodInfo method = genericGetCaseName.MakeGenericMethod(type);
+            object[] parameters = new object[] { collection, null };
+            string result = (string)method.Invoke(null, parameters);
+            errorMessage = (string)parameters[1];
+            return result;
+        }
+
+        public static string GenericGetCaseName<T>(ModelItemCollection collection, out string errorMessage)
+        {
+            int maxName = 100000;
+            Type type = typeof(T);
+            errorMessage = string.Empty;
+            if (typeof(string).IsAssignableFrom(type))
+            {
+                string caseName = "caseN";
+                for (int i = 1; i <= maxName; i++)
+                {
+                    caseName = string.Format(CultureInfo.InvariantCulture, SR.CaseFormat, i);
+                    if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, caseName))
+                    {
+                        break;
+                    }
+                }
+                return caseName;
+            }
+            else if (GenericFlowSwitchHelper.IsIntegralType(type))
+            {
+                if (type == typeof(sbyte))
+                {
+                    sbyte maxCount = (sbyte.MaxValue < maxName) ? sbyte.MaxValue : (sbyte)maxName;
+                    for (sbyte i = 0; i <= maxCount; i++)
+                    {
+                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
+                        {
+                            return GenericFlowSwitchHelper.GetString(i, type);
+                        }
+                    }
+                }
+                else if (type == typeof(byte))
+                {
+                    byte maxCount = (byte.MaxValue < maxName) ? byte.MaxValue : (byte)maxName;
+                    for (byte i = 0; i <= maxCount; i++)
+                    {
+                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
+                        {
+                            return GenericFlowSwitchHelper.GetString(i, type);
+                        }
+                    }
+                }
+                else if (type == typeof(char))
+                {
+                    char maxCount = unchecked((char)maxName);
+                    for (char i = (char)48; i <= maxCount; i++)
+                    {
+                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
+                        {
+                            return GenericFlowSwitchHelper.GetString(i, type);
+                        }
+                    }
+                }
+                else if (type == typeof(short))
+                {
+                    short maxCount = (short)maxName;
+                    for (short i = 0; i <= maxCount; i++)
+                    {
+                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
+                        {
+                            return GenericFlowSwitchHelper.GetString(i, type);
+                        }
+                    }
+                }
+                else if (type == typeof(ushort))
+                {
+                    ushort maxCount = (ushort)maxName;
+                    for (ushort i = 0; i <= maxCount; i++)
+                    {
+                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
+                        {
+                            return GenericFlowSwitchHelper.GetString(i, type);
+                        }
+                    }
+                }
+                else if (type == typeof(int))
+                {
+                    for (int i = 0; i <= maxName; i++)
+                    {
+                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
+                        {
+                            return GenericFlowSwitchHelper.GetString(i, type);
+                        }
+                    }
+                }
+                else if (type == typeof(uint))
+                {
+                    for (uint i = 0; i <= (uint)maxName; i++)
+                    {
+                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
+                        {
+                            return GenericFlowSwitchHelper.GetString(i, type);
+                        }
+                    }
+                }
+                else if (type == typeof(long))
+                {
+                    for (long i = 0; i <= (long)maxName; i++)
+                    {
+                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
+                        {
+                            return GenericFlowSwitchHelper.GetString(i, type);
+                        }
+                    }
+                }
+                else if (type == typeof(ulong))
+                {
+                    for (ulong i = 0; i <= (ulong)maxName; i++)
+                    {
+                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
+                        {
+                            return GenericFlowSwitchHelper.GetString(i, type);
+                        }
+                    }
+                }
+                errorMessage = SR.InvalidFlowSwitchCaseMessage;
+                return string.Empty;
+            }
+            else if (type.IsEnum)
+            {
+                Array array = type.GetEnumValues();
+                foreach (object value in array)
+                {
+                    if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, value))
+                    {
+                        return GenericFlowSwitchHelper.GetString(value, type);
+                    }
+                }
+                errorMessage = SR.InvalidFlowSwitchCaseMessage;
+                return string.Empty;
+            }
+            else if (type == typeof(bool))
+            {
+                if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, true))
+                {
+                    return GenericFlowSwitchHelper.GetString(true, type);
+                }
+                else if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, false))
+                {
+                    return GenericFlowSwitchHelper.GetString(false, type);
+                }
+                errorMessage = SR.InvalidFlowSwitchCaseMessage;
+                return string.Empty;
+            }
+            return string.Empty;
+        }
+
+        public static bool IsIntegralType(Type type)
+        {
+            if (type == typeof(sbyte) || type == typeof(byte) || type == typeof(char) || type == typeof(short) ||
+                type == typeof(ushort) || type == typeof(int) || type == typeof(uint) || type == typeof(long) || type == typeof(ulong))
+            {
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+
+        public static string GetString(object key, Type type)
+        {
+            string result = null;
+            if (key == null)
+            {
+                Fx.Assert(type == null || !type.IsValueType, "Value type should not have null value");
+                result = FlowSwitchNullCaseKeyIdentifier;
+            }
+            else
+            {
+                result = GetRawString(key);
+                if (result == string.Empty && typeof(string).IsAssignableFrom(type))
+                {
+                    result = FlowSwitchEmptyCaseKeyIdentifier;
+                }
+            }
+            return result;
+        }
+
+        //Raw string means the null is not represented as "<null>" and string.Empty is not represented as "<empty>".
+        static string GetRawString(object caseObject)
+        {
+            string result = null;
+
+            if (caseObject == null)
+            {
+                return null;
+            }
+            if (!(caseObject is string))
+            {
+                result = XamlUtilities.GetConverter(caseObject.GetType()).ConvertToString(caseObject);
+            }
+            else
+            {
+                result = (string)caseObject;
+            }
+            return result;
+        }
+
+        public static object GetObject(string caseString, Type genericType)
+        {
+            object result;
+            if (!genericType.IsValueType && caseString == FlowSwitchNullCaseKeyIdentifier)
+            {
+                result = null;
+            }
+            else if (typeof(string).IsAssignableFrom(genericType))
+            {
+                if (caseString == FlowSwitchEmptyCaseKeyIdentifier)
+                {
+                    result = string.Empty;
+                }
+                else
+                {
+                    result = caseString;
+                }
+            }
+            else
+            {
+                //If target type is value type and the caseString is null, we should leave converter to process it.
+                //If target type is reference type, the caseString is a non-null value here.
+                result = XamlUtilities.GetConverter(genericType).ConvertFromString(caseString);
+            }
+            return result;
+        }
+
+        public static bool ContainsCaseKey(ModelProperty casesProp, object key)
+        {
+            ModelItemCollection itemsCollection = casesProp.Value.Properties["ItemsCollection"].Collection;
+            return ContainsCaseKey(itemsCollection, key);
+        }
+
+        static bool ContainsCaseKey(ModelItemCollection itemsCollection, object key)
+        {
+            if (GenericFlowSwitchHelper.FlowSwitchNullCaseKeyIdentifier.Equals(key))
+            {
+                key = null;
+            }
+
+            foreach (ModelItem item in itemsCollection)
+            {
+                object value = item.Properties["Key"].ComputedValue;
+                if (value == key || ((value != null) && item.Properties["Key"].ComputedValue.Equals(key)))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        public static ModelItem GetCaseModelItem(ModelProperty casesProp, object key)
+        {
+            ModelItemCollection itemsCollection = casesProp.Value.Properties["ItemsCollection"].Collection;
+            return GenericFlowSwitchHelper.GetCaseModelItem(itemsCollection, key);
+        }
+
+        static ModelItem GetCaseModelItem(ModelItemCollection itemsCollection, object key)
+        {
+            if (GenericFlowSwitchHelper.FlowSwitchNullCaseKeyIdentifier.Equals(key))
+            {
+                key = null;
+            }
+
+            foreach (ModelItem item in itemsCollection)
+            {
+                object value = item.Properties["Key"].ComputedValue;
+                if (value == key || (value != null && item.Properties["Key"].ComputedValue.Equals(key)))
+                {
+                    return item.Properties["Value"].Value;
+                }
+            }
+            string caseName = GetString(key, itemsCollection.ItemType);
+            throw FxTrace.Exception.AsError(new KeyNotFoundException(caseName));
+        }
+
+        public static object GetCase(ModelItemCollection itemsCollection, object key)
+        {
+            return GenericFlowSwitchHelper.GetCaseModelItem(itemsCollection, key).GetCurrentValue();
+        }
+
+        public static ModelItem[] GetCaseKeys(ModelProperty casesProp)
+        {
+            ModelItemCollection itemsCollection = casesProp.Value.Properties["ItemsCollection"].Collection;
+            ModelItem[] keys = new ModelItem[itemsCollection.Count];
+            for (int i = 0; i < itemsCollection.Count; i++)
+            {
+                keys[i] = (ModelItem) itemsCollection[i].Properties["Key"].Value;
+            }
+            return keys;
+        }
+
+        public static void RemoveCase(ModelProperty casesProp, object key)
+        {
+            ModelItemCollection itemsCollection = casesProp.Value.Properties["ItemsCollection"].Collection;
+            
+            if (GenericFlowSwitchHelper.FlowSwitchNullCaseKeyIdentifier.Equals(key))
+            {
+                key = null;
+            }
+            foreach (ModelItem item in itemsCollection)
+            {
+                object value = item.Properties["Key"].ComputedValue;
+                if (value == key || (value != null && item.Properties["Key"].ComputedValue.Equals(key)))
+                {
+                    itemsCollection.Remove(item);
+                    return;
+                }
+                
+            }
+            string caseName = GetString(key, itemsCollection.ItemType.GetGenericArguments()[0]);
+            throw FxTrace.Exception.AsError(new KeyNotFoundException(caseName));
+        }
+        
+        public static void AddCase(ModelProperty casesPropperties, object newKey, object newCase)
+        {
+            Type propertyType = casesPropperties.PropertyType;
+            Fx.Assert(propertyType.IsGenericType && propertyType.GetGenericTypeDefinition() == typeof(IDictionary<,>), "Property type should be IDictonary<T, FlowNode>");
+            Type keyType = propertyType.GetGenericArguments()[0];
+            ModelItemCollection itemsCollection = casesPropperties.Value.Properties["ItemsCollection"].Collection;
+             
+            Type caseType = typeof(ModelItemKeyValuePair<,>).MakeGenericType(new Type[] { keyType, typeof(FlowNode) });
+            object mutableKVPair = Activator.CreateInstance(caseType, new object[] { newKey, newCase });
+            itemsCollection.Add(mutableKVPair);
+        }
+
+        public static bool CanBeGeneratedUniquely(Type typeArgument)
+        {
+            return typeArgument.IsEnum || typeof(string).IsAssignableFrom(typeArgument)
+                || GenericFlowSwitchHelper.IsIntegralType(typeArgument) || typeof(bool) == typeArgument;
+        }
+
+        public static bool CheckEquality(object value, Type targetType)
+        {
+            if (value == null)
+            {
+                return true;
+            }
+            else
+            {
+                string stringValue = GetString(value, targetType);
+                object newValue = GetObject(stringValue, targetType);
+                return value.GetHashCode() == newValue.GetHashCode() && value.Equals(newValue);
+            }
+        }
+
+        public static bool ValidateCaseKey(object obj, ModelProperty casesProp, Type genericType, out string reason)
+        {
+            reason = string.Empty;
+            string key = GenericFlowSwitchHelper.GetString(obj, genericType);
+            if (GenericFlowSwitchHelper.CheckEquality(obj, genericType))
+            {
+                if (GenericFlowSwitchHelper.ContainsCaseKey(casesProp, obj))
+                {
+                    reason = string.Format(CultureInfo.CurrentCulture, SR.DuplicateCaseKey, key);
+                    return false;
+                }
+                return true;
+            }
+            else
+            {
+                reason = string.Format(CultureInfo.CurrentUICulture, SR.EqualityError, genericType.Name);
+                return false;
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericTypeArgumentConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericTypeArgumentConverter.cs
new file mode 100644 (file)
index 0000000..bf84af9
--- /dev/null
@@ -0,0 +1,27 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Windows.Data;
+    using System.Runtime;
+    using System.Globalization;
+
+    public sealed class GenericTypeArgumentConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            Fx.Assert(targetType == typeof(Type), "GenericTypeArgumentConverter is expected to be a Type to Type converter with an integer parameter");
+            Fx.Assert(value is Type, "GenericTypeArgumentConverter is expected to be a Type to Type converter with an integer parameter");
+            Type source = value as Type;
+            return source.GetGenericArguments()[Int32.Parse(parameter.ToString(), culture)];
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            // It is theoretically impossible to convert from a generic type argument back to its original type.
+            throw FxTrace.Exception.AsError(new NotSupportedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextConverter.cs
new file mode 100644 (file)
index 0000000..c8a0539
--- /dev/null
@@ -0,0 +1,36 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Windows;
+    using System.Windows.Data;
+
+    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
+    internal sealed class HintTextConverter : IMultiValueConverter
+    {
+        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            // values represented in XAML
+            //   values[0] = ModelItem.XXX
+            //   values[1] = ModelItem.XXX.DisplayName
+
+            if (values[0] == null || values[1] == DependencyProperty.UnsetValue)
+            {
+                return SR.AddActivityHintText;
+            }
+            else
+            {
+                return (values[1] as string) ?? string.Empty;
+            }
+        }
+
+        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotImplementedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextMaxWidthConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextMaxWidthConverter.cs
new file mode 100644 (file)
index 0000000..3964862
--- /dev/null
@@ -0,0 +1,32 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Windows;
+    using System.Windows.Data;
+
+    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
+    internal sealed class HintTextMaxWidthConverter : IValueConverter
+    {
+        public object Convert(object o, Type targetType, object parameter, CultureInfo culture)
+        {
+            // If o == null, this means the Activity inside Default/Cases is null.
+            // We need to show SR.ClickToAdd instruction as a whole string without trim.
+            // So we need to set the MaxWidth to double.PositiveInfinity. Otherwise, we
+            // set it according to the parameter and TextBlock will do proper trimming.
+            double maxWidth = double.Parse(parameter as string, CultureInfo.InvariantCulture.NumberFormat);
+            return o != null ? maxWidth : DependencyProperty.UnsetValue;
+        }
+
+        public object ConvertBack(object o, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotImplementedException());
+        }
+
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IFlowSwitch.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IFlowSwitch.cs
new file mode 100644 (file)
index 0000000..9de7397
--- /dev/null
@@ -0,0 +1,53 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.ComponentModel;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Statements;
+    using System.Windows;
+    using System.Windows.Data;
+
+    interface IFlowSwitchLink
+    {
+        [BrowsableAttribute(false)]
+        ModelItem ModelItem
+        { get; set; }
+
+        [BrowsableAttribute(false)]
+        FlowNode ParentFlowSwitch
+        {
+            get;
+            set;
+        }
+
+        bool IsDefaultCase
+        {
+            get;
+            set;
+        }
+
+        string CaseName
+        {
+            get;
+        }
+
+        object CaseObject
+        {
+            get;
+        }
+
+        MultiBinding CreateConnectorLabelTextBinding();
+    }
+
+    interface IFlowSwitchDefaultLink : IFlowSwitchLink
+    {
+        string DefaultCaseDisplayName
+        {
+            get;
+            set;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IfElseDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IfElseDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..acfced6
--- /dev/null
@@ -0,0 +1,65 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Data;
+
+    /// <summary>
+    /// Interaction logic for IfElseDesigner.xaml
+    /// </summary>
+    partial class IfElseDesigner
+    {
+        public IfElseDesigner()
+        {
+            InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(If);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(IfElseDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Then"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Else"), BrowsableAttribute.No);
+
+            builder.AddCustomAttributes(type, type.GetProperty("Condition"), new HidePropertyInOutlineViewAttribute());
+        }
+
+        void OnExpressionEditorLoaded(object sender, RoutedEventArgs e)
+        {
+            ExpressionTextBox expressionTextBox = sender as ExpressionTextBox;
+            Fx.Assert(expressionTextBox != null, "sender should be userControl");
+            //bind ExpressionProperty of Expression textbox to ModelItem.Condition
+            Binding b = new Binding();
+            ArgumentToExpressionConverter argumentToExpressionConverter = new ArgumentToExpressionConverter();
+            b.Converter = argumentToExpressionConverter;
+            b.Mode = BindingMode.TwoWay;
+
+            b.Source = this.ModelItem;
+            b.Path = new PropertyPath("Condition");
+            if (BindingOperations.GetBinding(expressionTextBox, ExpressionTextBox.ExpressionProperty) != null)
+            {
+                BindingOperations.ClearBinding(expressionTextBox, ExpressionTextBox.ExpressionProperty);
+            }
+            expressionTextBox.SetBinding(ExpressionTextBox.ExpressionProperty, b);
+            //bind OwnerActivityProperty of Expression textbox to ModelItem
+            Binding b1 = new Binding();
+            b1.Source = this.ModelItem;
+            if (BindingOperations.GetBinding(expressionTextBox, ExpressionTextBox.OwnerActivityProperty) != null)
+            {
+                BindingOperations.ClearBinding(expressionTextBox, ExpressionTextBox.OwnerActivityProperty);
+            }
+            expressionTextBox.SetBinding(ExpressionTextBox.OwnerActivityProperty, b1);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InteropDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InteropDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..71f0968
--- /dev/null
@@ -0,0 +1,137 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.IO;
+    using System.Runtime;
+    using System.Windows.Threading;
+    
+    partial class InteropDesigner
+    {
+        private static Func<Type, bool> filter; 
+        private static string interopTypeAssemblyQualifiedName = null;
+
+        public InteropDesigner()
+        {
+            this.InitializeComponent();
+        }
+
+        public static Func<Type, bool> Filter
+        {
+            get 
+            {
+                if (InteropDesigner.filter == null)
+                {
+                    // We will build type name for System.Workflow.ComponentModel.Activity
+                    string typeName = typeof(Activity).AssemblyQualifiedName;
+                    typeName = typeName.Replace("System.Activities", "System.Workflow.ComponentModel");
+
+                    Type activityType = GetTypeByQualifiedName(typeName);
+                    if (activityType != null)
+                    {
+                        //Interop.Body has to be a 3.5 Activity
+                        InteropDesigner.filter = (type) => activityType.IsAssignableFrom(type);
+                    }
+                }
+
+                return InteropDesigner.filter; 
+            }
+        }
+
+        public static string InteropTypeAssemblyQualifiedName
+        {
+            get
+            {
+                if (interopTypeAssemblyQualifiedName == null)
+                {
+                    // Construct the type name dynamically to avoid hardcoding the version number and public key token.
+                    // The constructed type name should look like: "System.Activities.Statements.Interop, System.Workflow.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
+                    interopTypeAssemblyQualifiedName = typeof(Parallel).AssemblyQualifiedName.Replace("Parallel", "Interop").Replace("System.Activities,", "System.Workflow.Runtime,");
+                }
+
+                return interopTypeAssemblyQualifiedName;
+            }
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            base.OnModelItemChanged(newItem);
+            this.ModelItem.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(OnModelItemPropertyChanged);
+        }
+
+        private void OnModelItemPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "ActivityType")
+            {
+                //Whenever ActivityType property changes, the activity will generate a new set of 
+                // dynamic properties. the property browser will not pick up the changes till
+                // we select some other modelitem and then select this back.
+                // modelItem.root is theone that will be always available.
+
+                this.Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, (Action)(() =>
+                {
+                    Selection.SelectOnly(this.Context, this.ModelItem.Root);
+                }));
+                this.Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, (Action)(() =>
+                {
+                    Selection.SelectOnly(this.Context, this.ModelItem);
+                }));
+               
+            }
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type activityType = GetTypeByQualifiedName(InteropDesigner.InteropTypeAssemblyQualifiedName);
+
+            //activityType will be null in ClientSKU since System.Workflow.Runtime.dll is not a part of clientSKU.
+            if (activityType != null)
+            {
+                builder.AddCustomAttributes(activityType, new DesignerAttribute(typeof(InteropDesigner)));
+                builder.AddCustomAttributes(
+                            activityType,
+                            "ActivityType",
+                            new EditorOptionAttribute { Name = TypePropertyEditor.BrowseTypeDirectly, Value = true });
+                builder.AddCustomAttributes(
+                            activityType,
+                            "ActivityType",
+                            new EditorOptionAttribute { Name = TypePropertyEditor.Filter, Value = Filter });
+                builder.AddCustomAttributes(
+                            activityType,
+                            "ActivityType",
+                            new RefreshPropertiesAttribute(RefreshProperties.All));
+                builder.AddCustomAttributes(activityType, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+            }
+        }
+
+        // Gets a System.Type object using the type's assembly qualified name.
+        // Non-fatal exceptions are ----ed.
+        private static Type GetTypeByQualifiedName(string assemblyQualifiedName)
+        {
+            Fx.Assert(assemblyQualifiedName != null, "assemblyQualifiedName cannot be null.");
+
+            try
+            {
+                Type type = Type.GetType(assemblyQualifiedName);
+                return type;
+            }
+            catch (Exception e)
+            {
+                if (Fx.IsFatal(e))
+                {
+                    throw;
+                }
+            }
+
+            return null;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..258a912
--- /dev/null
@@ -0,0 +1,169 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Windows;
+
+    internal sealed partial class InvokeDelegateDesigner
+    {
+        private const string DelegatePropertyName = "Delegate";
+        private const string DelegateArgumentsPropertyName = "DelegateArguments";
+        private const string DefaultPropertyName = "Default";
+
+        private bool isSetInternally;
+
+        public InvokeDelegateDesigner()
+        {
+            this.InitializeComponent();
+            this.chooser.Filter = IsActivityDelegate;
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            builder.AddCustomAttributes(typeof(InvokeDelegate), new DesignerAttribute(typeof(InvokeDelegateDesigner)));
+            builder.AddCustomAttributes(typeof(InvokeDelegate), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+            builder.AddCustomAttributes(typeof(InvokeDelegate), new FeatureAttribute(typeof(InvokeDelegateValidationFeature)));
+            builder.AddCustomAttributes(typeof(InvokeDelegate), DelegatePropertyName, BrowsableAttribute.No);
+            builder.AddCustomAttributes(typeof(InvokeDelegate), DelegateArgumentsPropertyName, PropertyValueEditor.CreateEditorAttribute(typeof(DelegateArgumentsValueEditor)), BrowsableAttribute.Yes);
+            builder.AddCustomAttributes(typeof(InvokeDelegate), DefaultPropertyName, BrowsableAttribute.No);
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+
+            this.Loaded += new RoutedEventHandler(this.OnLoaded);
+            this.Unloaded += new RoutedEventHandler(this.OnUnloaded);
+        }
+
+        protected override void OnReadOnlyChanged(bool isReadOnly)
+        {
+            this.chooser.IsEnabled = !isReadOnly;
+        }
+
+        private static bool IsActivityDelegate(DynamicActivityProperty instance)
+        {
+            return instance.Type == typeof(ActivityDelegate) || instance.Type.IsSubclassOf(typeof(ActivityDelegate));
+        }
+
+        private void OnLoaded(object sender, RoutedEventArgs e)
+        {
+            if (ModelItem.Root.ItemType != typeof(ActivityBuilder))
+            {
+                return;
+            }
+
+            this.ModelItem.PropertyReferenceChanged += this.OnPropertyReferenceChanged;
+
+            this.isSetInternally = true;
+            this.chooser.Properties = ModelItem.Root.Properties["Properties"].Collection;
+            this.chooser.SelectedPropertyName = ModelItem.Properties[DelegatePropertyName].Reference;
+            this.isSetInternally = false;
+        }
+
+        private void OnUnloaded(object sender, RoutedEventArgs e)
+        {
+            this.ModelItem.PropertyReferenceChanged -= this.OnPropertyReferenceChanged;
+        }
+
+        private void OnPropertyReferenceChanged(object sender, PropertyReferenceChangedEventArgs e)
+        {
+            if (ModelItem.Root.ItemType != typeof(ActivityBuilder))
+            {
+                return;
+            }
+
+            string propertyName = this.ModelItem.Properties[DelegatePropertyName].Reference;
+
+            this.isSetInternally = true;
+            if (!string.IsNullOrEmpty(propertyName))
+            {
+                this.chooser.SelectedPropertyName = propertyName;
+            }
+            else
+            {
+                this.chooser.SelectedPropertyName = null;
+            }
+
+            this.isSetInternally = false;
+        }
+
+        private void OnSelectedPropertyNameChanged(object sender, SelectedPropertyNameChangedEventArgs e)
+        {
+            if (this.isSetInternally)
+            {
+                return;
+            }
+
+            if (ModelItem.Root.ItemType != typeof(ActivityBuilder))
+            {
+                return;
+            }
+
+            string propertyName = this.chooser.SelectedPropertyName;
+
+            if (propertyName != null && !this.chooser.IsUpdatingDropDownItems)
+            {
+                this.ModelItem.Properties[DelegatePropertyName].SetReference(propertyName);
+
+                this.FillArguments();
+            }
+        }
+
+        private void FillArguments()
+        {
+            string propertyName = PropertyReferenceUtilities.GetPropertyReference(this.ModelItem.GetCurrentValue(), DelegatePropertyName);
+
+            if (string.IsNullOrEmpty(propertyName))
+            {
+                return;
+            }
+
+            ModelTreeManager manager = this.Context.Services.GetService<ModelTreeManager>();
+            DynamicActivityProperty property = DynamicActivityPropertyUtilities.Find(manager.Root.Properties["Properties"].Collection, propertyName);
+
+            if (property == null || !property.Type.IsSubclassOf(typeof(ActivityDelegate)))
+            {
+                return;
+            }
+
+            ActivityDelegateMetadata metadata = ActivityDelegateUtilities.GetMetadata(property.Type);
+
+            ModelItemCollection collection = this.ModelItem.Properties[DelegateArgumentsPropertyName].Value.Properties["ItemsCollection"].Collection;
+
+            Type underlyingArgumentType = this.ModelItem.Properties[DelegateArgumentsPropertyName].Value.GetCurrentValue().GetType().GetGenericArguments()[1];
+            if (!typeof(Argument).IsAssignableFrom(underlyingArgumentType))
+            {
+                return;
+            }
+
+            if (collection.Count == 0)
+            {
+                using (ModelEditingScope change = collection.BeginEdit(SR.FillDelegateArguments))
+                {
+                    Type dictionaryEntryType = typeof(ModelItemKeyValuePair<,>).MakeGenericType(new Type[] { typeof(string), underlyingArgumentType });
+                    foreach (ActivityDelegateArgumentMetadata arg in metadata)
+                    {
+                        Argument argument = Argument.Create(arg.Type, arg.Direction == ActivityDelegateArgumentDirection.In ? ArgumentDirection.In : ArgumentDirection.Out);
+                        object mutableKVPair = Activator.CreateInstance(dictionaryEntryType, new object[] { arg.Name, argument });
+                        ModelItem argumentKVPair = collection.Add(mutableKVPair);
+                    }
+
+                    change.Complete();
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateValidationFeature.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateValidationFeature.cs
new file mode 100644 (file)
index 0000000..3446319
--- /dev/null
@@ -0,0 +1,221 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Expressions;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Statements;
+    using System.Activities.Validation;
+    using System.Collections.Generic;
+    using System.Collections.ObjectModel;
+    using System.Globalization;
+    using System.Reflection;
+    using System.Runtime;
+    using System.Text;
+
+    internal class InvokeDelegateValidationFeature : DesignTimeValidationFeature
+    {
+        private List<Constraint> constraints;
+        private EditingContext editingContext;
+
+        protected override Type ApplyTo
+        {
+            get { return typeof(InvokeDelegate); }
+        }
+
+        protected override IList<Constraint> DesignTimeConstraints
+        {
+            get
+            {
+                if (this.constraints == null)
+                {
+                    this.constraints = new List<Constraint> { this.CreateCheckDelegateRule(this.editingContext) };
+                }
+
+                return this.constraints;
+            }
+        }
+
+        public override void Initialize(EditingContext context, Type modelType)
+        {
+            this.editingContext = context;
+            base.Initialize(context, modelType);
+        }
+
+        private Constraint CreateCheckDelegateRule(EditingContext editingContext)
+        {
+            DelegateInArgument<InvokeDelegate> invokeDelegate = new DelegateInArgument<InvokeDelegate>();
+            DelegateInArgument<ValidationContext> context = new DelegateInArgument<ValidationContext>();
+
+            return new Constraint<InvokeDelegate>
+            {
+                Body = new ActivityAction<InvokeDelegate, ValidationContext>
+                {
+                    Argument1 = invokeDelegate,
+                    Argument2 = context,
+                    Handler = new CheckDelegateRule
+                    {
+                        Activity = invokeDelegate,
+                        EditingContext = editingContext,
+                    }
+                }
+            };
+        }
+
+        private class CheckDelegateRule : NativeActivity
+        {
+            public CheckDelegateRule()
+            {
+                this.WarningMessageVariable = new Variable<string>();
+                this.ErrorMessageVariable = new Variable<string>();
+                this.ShowWarning = new AssertValidation()
+                {
+                    Assertion = false,
+                    IsWarning = true,
+                    Message = new VariableValue<string> { Variable = this.WarningMessageVariable }
+                };
+                this.ShowError = new AssertValidation()
+                {
+                    Assertion = false,
+                    IsWarning = false,
+                    Message = new VariableValue<string> { Variable = this.ErrorMessageVariable }
+                };
+            }
+
+            [RequiredArgument]
+            public InArgument<InvokeDelegate> Activity { get; set; }
+
+            public EditingContext EditingContext { get; set; }
+
+            private Variable<string> WarningMessageVariable { get; set; }
+
+            private Variable<string> ErrorMessageVariable { get; set; }
+
+            private AssertValidation ShowWarning { get; set; }
+
+            private AssertValidation ShowError { get; set; }
+
+            protected override void CacheMetadata(NativeActivityMetadata metadata)
+            {
+                RuntimeArgument activityArgument = new RuntimeArgument("Activity", typeof(InvokeDelegate), ArgumentDirection.In, true);
+                metadata.Bind(this.Activity, activityArgument);
+                metadata.SetArgumentsCollection(new Collection<RuntimeArgument> { activityArgument });
+
+                metadata.AddImplementationChild(this.ShowWarning);
+                metadata.AddImplementationChild(this.ShowError);
+                metadata.AddImplementationVariable(this.WarningMessageVariable);
+                metadata.AddImplementationVariable(this.ErrorMessageVariable);
+            }
+
+            protected override void Execute(NativeActivityContext context)
+            {
+                StringBuilder errorBuilder = new StringBuilder();
+                InvokeDelegate activity = this.Activity.Get(context);
+
+                string reference = PropertyReferenceUtilities.GetPropertyReference(activity, "Delegate");
+
+                if (reference != null)
+                {
+                    DynamicActivityProperty property = null;
+
+                    ModelTreeManager manager = this.EditingContext.Services.GetService<ModelTreeManager>();
+                    if (manager.Root.ItemType == typeof(ActivityBuilder))
+                    {
+                        property = DynamicActivityPropertyUtilities.Find(manager.Root.Properties["Properties"].Collection, reference);
+                    }
+
+                    if (property == null)
+                    {
+                        this.EmitValidationError(context, string.Format(CultureInfo.CurrentUICulture, SR.PropertyReferenceNotResolved, reference));
+                        return;
+                    }
+
+                    if (property.Type == typeof(ActivityDelegate))
+                    {
+                        this.EmitValidationWarning(context, string.Format(CultureInfo.CurrentUICulture, SR.PropertyIsNotAConcreteActivityDelegate, reference));
+                        return;
+                    }
+
+                    if (!property.Type.IsSubclassOf(typeof(ActivityDelegate)))
+                    {
+                        this.EmitValidationError(context, string.Format(CultureInfo.CurrentUICulture, SR.PropertyIsNotAnActivityDelegate, reference));
+                        return;
+                    }
+
+                    if (property.Type.IsAbstract)
+                    {
+                        this.EmitValidationWarning(context, string.Format(CultureInfo.CurrentUICulture, SR.PropertyIsNotAConcreteActivityDelegate, reference));
+                        return;
+                    }
+
+                    ActivityDelegateMetadata metadata = ActivityDelegateUtilities.GetMetadata(property.Type);
+
+                    if (activity.DelegateArguments.Count != metadata.Count)
+                    {
+                        this.EmitValidationWarning(context, SR.WrongNumberOfArgumentsForActivityDelegate);
+                        return;
+                    }
+
+                    foreach (ActivityDelegateArgumentMetadata expectedArgument in metadata)
+                    {
+                        Argument delegateArgument = null;
+
+                        if (activity.DelegateArguments.TryGetValue(expectedArgument.Name, out delegateArgument))
+                        {
+                            if ((expectedArgument.Direction == ActivityDelegateArgumentDirection.In && delegateArgument.Direction != ArgumentDirection.In) ||
+                                (expectedArgument.Direction == ActivityDelegateArgumentDirection.Out && delegateArgument.Direction != ArgumentDirection.Out))
+                            {
+                                errorBuilder.AppendFormat(CultureInfo.CurrentUICulture, SR.DelegateArgumentsDirectionalityMismatch, expectedArgument.Name, delegateArgument.Direction, expectedArgument.Direction);
+                            }
+
+                            if (delegateArgument.ArgumentType != expectedArgument.Type)
+                            {
+                                if (expectedArgument.Direction == ActivityDelegateArgumentDirection.In)
+                                {
+                                    if (!TypeHelper.AreTypesCompatible(delegateArgument.ArgumentType, expectedArgument.Type))
+                                    {
+                                        errorBuilder.AppendFormat(CultureInfo.CurrentUICulture, SR.DelegateInArgumentTypeMismatch, expectedArgument.Name, expectedArgument.Type, delegateArgument.ArgumentType);
+                                    }
+                                }
+                                else
+                                {
+                                    if (!TypeHelper.AreTypesCompatible(expectedArgument.Type, delegateArgument.ArgumentType))
+                                    {
+                                        errorBuilder.AppendFormat(CultureInfo.CurrentUICulture, SR.DelegateOutArgumentTypeMismatch, expectedArgument.Name, expectedArgument.Type, delegateArgument.ArgumentType);
+                                    }
+                                }
+                            }
+                        }
+                        else
+                        {
+                            errorBuilder.AppendFormat(CultureInfo.CurrentUICulture, SR.DelegateArgumentMissing, expectedArgument.Name);
+                        }
+                    }
+
+                    if (errorBuilder.Length > 0)
+                    {
+                        this.EmitValidationWarning(context, errorBuilder.ToString());
+                    }
+                }
+            }
+
+            private void EmitValidationWarning(NativeActivityContext context, string message)
+            {
+                this.WarningMessageVariable.Set(context, message);
+                context.ScheduleActivity(this.ShowWarning);
+            }
+
+            private void EmitValidationError(NativeActivityContext context, string message)
+            {
+                this.ErrorMessageVariable.Set(context, message);
+                context.ScheduleActivity(this.ShowError);
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeMethodDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeMethodDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..1a43c14
--- /dev/null
@@ -0,0 +1,69 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Expressions;
+    using System.Activities.Statements;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Activities.Presentation.View;
+
+    /// <summary>
+    /// Interaction logic for InvokeMethodDesigner.xaml
+    /// </summary>
+    partial class InvokeMethodDesigner
+    {
+        public InvokeMethodDesigner()
+        {
+            InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(InvokeMethod);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(InvokeMethodDesigner)));
+            builder.AddCustomAttributes(
+                        type,
+                        "GenericTypeArguments",
+                        PropertyValueEditor.CreateEditorAttribute(typeof(TypeCollectionPropertyEditor)),
+                        new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.AllowDuplicate, Value = true });
+            builder.AddCustomAttributes(
+                        type,
+                        "Parameters",
+                        PropertyValueEditor.CreateEditorAttribute(typeof(ArgumentCollectionPropertyEditor)));
+            builder.AddCustomAttributes(
+                        type,
+                        "TargetType",
+                        new EditorOptionAttribute { Name = TypePropertyEditor.AllowNull, Value = true },
+                        new EditorOptionAttribute { Name = TypePropertyEditor.BrowseTypeDirectly, Value = false });
+            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+
+            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) => new ArgumentAccessor[]
+            {
+                new ArgumentAccessor
+                {
+                    Getter = (ownerActivity) => ((InvokeMethod)ownerActivity).TargetObject,
+                    Setter = (ownerActivity, arg) =>
+                    {
+                        ((InvokeMethod)ownerActivity).TargetObject = arg as InArgument;
+                    },
+                },
+                new ArgumentAccessor
+                {
+                    Getter = (ownerActivity) => ((InvokeMethod)ownerActivity).Result,
+                    Setter = (ownerActivity, arg) =>
+                    {
+                        ((InvokeMethod)ownerActivity).Result = arg as OutArgument;
+                    },
+                },
+            };
+            ActivityArgumentHelper.RegisterAccessorsGenerator(type, argumentAccessorGenerator);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsLastSelectedItemConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsLastSelectedItemConverter.cs
new file mode 100644 (file)
index 0000000..c764164
--- /dev/null
@@ -0,0 +1,36 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+
+    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Justification = "Used in XAML")]
+    internal class IsLastSelectedItemConverter : IMultiValueConverter
+    {
+        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
+        {
+            int selectedItemIndex = (int)values[0];
+            int itemsCount = (int)values[1];
+         
+            if ((itemsCount - 1) == selectedItemIndex)
+            {
+                return true;
+            }
+  
+            return false;
+        }
+
+        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotImplementedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsStateRootDesignerConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsStateRootDesignerConverter.cs
new file mode 100644 (file)
index 0000000..2e63ebf
--- /dev/null
@@ -0,0 +1,37 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Globalization;
+    using System.Windows.Data;
+
+    // This converter is used to resolve Bug 198561 and 216429.
+    // originally, using "IsRootDesigner" and the binding path directly would cause Bug 201214,
+    // as a workaround, we resolved to use "ShowExpanded" as the binding path, but this cause Bug 216429.
+    // The resolution would require us to go back to "IsRootDesigner" as the binding path. But
+    // we would need to use a converter in between, and thus we made this converter
+    internal sealed class IsStateRootDesignerConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            WorkflowViewElement workflowViewElement = value as WorkflowViewElement;
+
+            if (null != workflowViewElement)
+            {
+                return workflowViewElement.IsRootDesigner;
+            }
+
+            return false;
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotSupportedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/LocationChangedEventArgs.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/LocationChangedEventArgs.cs
new file mode 100644 (file)
index 0000000..ba5a798
--- /dev/null
@@ -0,0 +1,29 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Windows;
+    using System.Runtime;
+
+    [Fx.Tag.XamlVisible(false)]
+    public class LocationChangedEventArgs : EventArgs
+    {
+        Point newLocation;
+               
+        public LocationChangedEventArgs(Point newLocation)
+        {
+            this.newLocation = newLocation;
+        }
+
+        public Point NewLocation
+        {
+            get
+            {
+                return this.newLocation;
+            }
+        }
+    }
+
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MaxValueConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MaxValueConverter.cs
new file mode 100644 (file)
index 0000000..5fcf702
--- /dev/null
@@ -0,0 +1,39 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Globalization;
+    using System.Windows.Data;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Statements;
+
+    //Returns the maximum of input values. Input values should be of type double.
+    class MaxValueConverter : IMultiValueConverter
+    {
+        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
+        {
+            double maxValue = double.MinValue;
+            foreach (object value in values)
+            {
+                double val = (double)value;
+                if (!double.IsNaN(val) && val > maxValue)
+                {
+                    maxValue = val;
+                }
+            }
+            if (maxValue == double.MinValue)
+            {
+                maxValue = double.NaN;
+            }
+            return maxValue;
+        }
+
+        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotSupportedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MorphHelpers.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MorphHelpers.cs
new file mode 100644 (file)
index 0000000..11ae939
--- /dev/null
@@ -0,0 +1,130 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.Hosting;
+    using System.ComponentModel;
+    using Microsoft.VisualBasic.Activities;
+    using System.Runtime;
+    using System.Linq;
+    using System.Activities.Expressions;
+    using System.Activities.Presentation.View;
+    using System.Collections.Generic;
+    using System.Activities.ExpressionParser;
+    using System.Diagnostics;
+    using System.Globalization;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Reflection;
+    using System.IO;
+    using System.Activities.Presentation;
+    using System.Windows;
+
+    static class MorphHelpers
+    {
+
+        public static object ArgumentMorphHelper(ModelItem originalValue, ModelProperty newModelProperty)
+        {
+            Type expressionTypeArgument = newModelProperty.PropertyType.GetGenericArguments()[0];
+
+            return MorphArgument(originalValue, expressionTypeArgument);
+        }
+
+        internal static Argument MorphArgument(ModelItem originalValue, Type targetType)
+        {
+            Argument morphed = null;
+            Argument original = (Argument)originalValue.GetCurrentValue();
+            ActivityWithResult originalExpression = original.Expression;
+            
+            if (originalExpression != null)
+            {
+                Type expressionType = originalExpression.GetType();
+                Type expressionGenericType = expressionType.IsGenericType ? expressionType.GetGenericTypeDefinition() : null;
+
+                if (expressionGenericType != null)
+                {       
+                    bool isLocation = ExpressionHelper.IsGenericLocationExpressionType(originalExpression);
+                    ActivityWithResult morphedExpression;
+                    EditingContext context = originalValue.GetEditingContext();
+                    morphed = Argument.Create(targetType, original.Direction);
+                    if (ExpressionHelper.TryMorphExpression(originalExpression, isLocation, targetType, 
+                        context, out morphedExpression))
+                    {                        
+                        morphed.Expression = morphedExpression;
+                    }
+                    //[....] 
+
+                }
+            }
+            return morphed;
+        }
+
+        public static object ActivityActionMorphHelper(ModelItem originalValue, ModelProperty newModelProperty)
+        {
+            Fx.Assert(newModelProperty.PropertyType.GetGenericArguments().Count() == 1, "This should only be applied for ActivityAction<T>");
+            Type activityActionTypeArgument = newModelProperty.PropertyType.GetGenericArguments()[0];
+            Type activityActionType = typeof(ActivityAction<>).MakeGenericType(activityActionTypeArgument);
+            object activityAction = Activator.CreateInstance(activityActionType);
+            ModelItem morphed = ModelFactory.CreateItem(originalValue.GetEditingContext(), activityAction);
+
+            ModelItem originalActivityActionArgument = originalValue.Properties[PropertyNames.ActionArgument].Value;
+            if (originalActivityActionArgument != null)
+            {
+                Type variableType = typeof(DelegateInArgument<>).MakeGenericType(activityActionTypeArgument);
+                DelegateInArgument iterationDelegateArgument = (DelegateInArgument)Activator.CreateInstance(variableType);
+                iterationDelegateArgument.Name = (string)originalActivityActionArgument.Properties[PropertyNames.NameProperty].Value.GetCurrentValue();
+                morphed.Properties[PropertyNames.ActionArgument].SetValue(iterationDelegateArgument);
+            }
+
+            ModelItem originalActivityActionHandler = originalValue.Properties[PropertyNames.ActionHandler].Value;
+            if (originalActivityActionHandler != null)
+            {
+                morphed.Properties[PropertyNames.ActionHandler].SetValue(originalActivityActionHandler);
+                originalValue.Properties[PropertyNames.ActionHandler].SetValue(null);
+            }
+
+            return morphed;
+        }
+
+        public static object ActivityFuncMorphHelper(ModelItem originalValue, ModelProperty newModelProperty)
+        {
+            Fx.Assert(newModelProperty.PropertyType.GetGenericArguments().Count() == 2, "This should only be applied for ActivityFunc<TArgument, TResult>");
+            Type activityFuncArgumentType = newModelProperty.PropertyType.GetGenericArguments()[0];
+            Type activityFuncResultType = newModelProperty.PropertyType.GetGenericArguments()[1];
+            Type activityFuncType = typeof(ActivityFunc<,>).MakeGenericType(activityFuncArgumentType, activityFuncResultType);
+            object activityFunc = Activator.CreateInstance(activityFuncType);
+            ModelItem morphed = ModelFactory.CreateItem(originalValue.GetEditingContext(), activityFunc);
+
+            ModelItem originalActivityFuncArgument = originalValue.Properties[PropertyNames.ActionArgument].Value;
+            if (originalActivityFuncArgument != null)
+            {
+                Type argumentType = typeof(DelegateInArgument<>).MakeGenericType(activityFuncArgumentType);
+                DelegateInArgument newActivityActionArgument = (DelegateInArgument)Activator.CreateInstance(argumentType);
+                newActivityActionArgument.Name = (string)originalActivityFuncArgument.Properties[PropertyNames.NameProperty].Value.GetCurrentValue();
+                morphed.Properties[PropertyNames.ActionArgument].SetValue(newActivityActionArgument);
+            }
+
+            ModelItem originalActivityFuncResult = originalValue.Properties[PropertyNames.ResultProperty].Value;
+            if (originalActivityFuncResult != null)
+            {
+                Type resultType = typeof(DelegateOutArgument<>).MakeGenericType(activityFuncResultType);
+                DelegateOutArgument newActivityActionResult = (DelegateOutArgument)Activator.CreateInstance(resultType);
+                newActivityActionResult.Name = (string)originalActivityFuncResult.Properties[PropertyNames.NameProperty].Value.GetCurrentValue();
+                morphed.Properties[PropertyNames.ResultProperty].SetValue(newActivityActionResult);
+            }
+
+            ModelItem originalActivityActionHandler = originalValue.Properties[PropertyNames.ActionHandler].Value;
+            if (originalActivityActionHandler != null)
+            {
+                morphed.Properties[PropertyNames.ActionHandler].SetValue(originalActivityActionHandler);
+                originalValue.Properties[PropertyNames.ActionHandler].SetValue(null);
+            }
+
+            return morphed;
+        }
+
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NoPersistScopeDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NoPersistScopeDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..67d5cc7
--- /dev/null
@@ -0,0 +1,28 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+
+    partial class NoPersistScopeDesigner
+    {
+        public const string BodyPropertyName = "Body";
+
+        public NoPersistScopeDesigner()
+        {
+            InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(NoPersistScope);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(NoPersistScopeDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty(NoPersistScopeDesigner.BodyPropertyName), BrowsableAttribute.No);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NotConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NotConverter.cs
new file mode 100644 (file)
index 0000000..daf2262
--- /dev/null
@@ -0,0 +1,54 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    // Code borrowed from System.Activities.Presentation
+
+    using System;
+    using System.ComponentModel;
+    using System.Windows;
+    using System.Windows.Data;
+    using System.Globalization;
+    using System.Reflection;
+    using System.Diagnostics.CodeAnalysis;
+
+    // <summary>
+    // Transform bool value using logical not.
+    // </summary>
+    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
+    internal sealed class NotConverter : IValueConverter
+    {
+        // IValueConverter Members
+
+        public object Convert(object o, Type targetType, object parameter, CultureInfo culture)
+        {
+            return !(bool)o;
+        }
+
+        public object ConvertBack(object o, Type targetType, object parameter, CultureInfo culture)
+        {
+            return !AssureBool(o, false);
+        }
+
+        static bool AssureBool(object value, bool defaultIfNull)
+        {
+            if (value is bool?)
+            {
+                bool? nbValue = (bool?)value;
+
+                if (nbValue.HasValue)
+                {
+                    return nbValue.Value;
+                }
+                else
+                {
+                    return defaultIfNull;
+                }
+            }
+
+            return (bool)value;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..43df03d
--- /dev/null
@@ -0,0 +1,34 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+
+    // <summary>
+    // Paralle Designer
+    // </summary>
+    partial class ParallelDesigner
+    {
+        public ParallelDesigner()
+        {
+            InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(Parallel);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(ParallelDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Branches"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
+
+            builder.AddCustomAttributes(type, type.GetProperty("Branches"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false });
+            builder.AddCustomAttributes(type, type.GetProperty("CompletionCondition"), new HidePropertyInOutlineViewAttribute());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelSeparator.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelSeparator.xaml.cs
new file mode 100644 (file)
index 0000000..c917004
--- /dev/null
@@ -0,0 +1,75 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Hosting;
+    using System.Windows;
+    using System.Windows.Media.Animation;
+
+    partial class ParallelSeparator
+    {
+        public static readonly DependencyProperty AllowedItemTypeProperty =
+            DependencyProperty.Register("AllowedItemType", typeof(Type), typeof(ParallelSeparator), new UIPropertyMetadata(typeof(object)));
+
+        public static readonly DependencyProperty ContextProperty = DependencyProperty.Register(
+            "Context",
+            typeof(EditingContext),
+            typeof(ParallelSeparator));
+
+        public ParallelSeparator()
+        {
+            this.InitializeComponent();
+        }
+
+        public Type AllowedItemType
+        {
+            get { return (Type)GetValue(AllowedItemTypeProperty); }
+            set { SetValue(AllowedItemTypeProperty, value); }
+        }
+
+        public EditingContext Context
+        {
+            get { return (EditingContext)GetValue(ContextProperty); }
+            set { SetValue(ContextProperty, value); }
+        }
+
+        protected override void OnDragEnter(DragEventArgs e)
+        {
+            CheckAnimate(e, "Expand");
+            this.dropTarget.Visibility = Visibility.Visible;
+        }
+
+        protected override void OnDragLeave(DragEventArgs e)
+        {
+            CheckAnimate(e, "Collapse");
+            this.dropTarget.Visibility = Visibility.Collapsed;
+        }
+
+        protected override void OnDrop(DragEventArgs e)
+        {
+            this.dropTarget.Visibility = Visibility.Collapsed;
+            base.OnDrop(e);
+        }
+
+        void CheckAnimate(DragEventArgs e, string storyboardResourceName)
+        {
+            if (!e.Handled)
+            {
+                if (!this.Context.Items.GetValue<ReadOnlyState>().IsReadOnly &&
+                    DragDropHelper.AllowDrop(e.Data, this.Context, this.AllowedItemType))
+                {
+                    BeginStoryboard((Storyboard)this.Resources[storyboardResourceName]);
+                    return;
+                }
+                else
+                {
+                    e.Effects = DragDropEffects.None;
+                }
+                e.Handled = true;
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickBranchDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickBranchDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..3a3ca97
--- /dev/null
@@ -0,0 +1,39 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    
+
+    /// <summary>
+    /// Interaction logic for PickBranchDesigner.xaml
+    /// </summary>
+    partial class PickBranchDesigner
+    {
+        public PickBranchDesigner()
+        {
+            this.InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(PickBranch);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(PickBranchDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Action"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Trigger"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, new ShowInOutlineViewAttribute());
+        }
+
+        protected override string GetAutomationIdMemberName()
+        {
+            return "DisplayName";
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..a5eb93b
--- /dev/null
@@ -0,0 +1,62 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Input;
+
+    partial class PickDesigner
+    {
+        public static readonly RoutedCommand CreateBranchCommand = new RoutedCommand("CreateBranchCommand", typeof(PickDesigner));
+        WorkflowItemsPresenter branchesPresenter;
+
+        public PickDesigner()
+        {
+            this.InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(System.Activities.Statements.Pick);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(PickDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Branches"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Branches"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false });
+            builder.AddCustomAttributes(type, new FeatureAttribute(typeof(PickValidationErrorSourceLocatorFeature)));
+        }
+
+        void OnBranchesPresenterLoaded(object sender, RoutedEventArgs e)
+        {
+            this.branchesPresenter = (WorkflowItemsPresenter)sender;
+        }
+
+        void OnBranchesPresenterUnloaded(object sender, RoutedEventArgs e)
+        {
+            this.branchesPresenter = null;
+        }
+
+        void OnCreateBranchCommandExecute(object sender, ExecutedRoutedEventArgs e)
+        {
+            if (!e.Handled)
+            {
+                // Simulate a PickBranch being drop onto the Branches WIsP.
+                object instance = DragDropHelper.GetDroppedObjectInstance(this.branchesPresenter, this.Context, typeof(PickBranch), null);
+                if (instance != null)
+                {
+                    this.ModelItem.Properties["Branches"].Collection.Add(instance);
+                }
+                e.Handled = true;
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocator.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocator.cs
new file mode 100644 (file)
index 0000000..806d183
--- /dev/null
@@ -0,0 +1,101 @@
+// <copyright>
+//   Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Validation;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+
+    internal class PickValidationErrorSourceLocator : IValidationErrorSourceLocator
+    {
+        public List<object> FindSourceDetailFromActivity(Activity errorSource, object errorSourceDetail)
+        {
+            if (errorSourceDetail == null)
+            {
+                return new List<object> { errorSource };
+            }
+            else
+            {
+                return FindRelativePath((Pick)errorSource, errorSourceDetail);
+            }
+        }
+
+        public void ReplaceParentChainWithSource(Activity parentActivity, List<object> parentChain)
+        {
+            Pick pick = (Pick)parentActivity;
+
+            if (parentChain.Count > 1)
+            {
+                // assume last object in parentChain is PickBranchBody
+
+                // remove PickBranchBody
+                parentChain.RemoveAt(parentChain.Count - 1);
+
+                Activity targetActivity = (Activity)parentChain[parentChain.Count - 1];
+
+                // the targetActivity will be available in the path
+                parentChain.RemoveAt(parentChain.Count - 1);
+
+                List<object> path = FindRelativePath(pick, targetActivity);
+
+                foreach (object pathObject in path)
+                {
+                    parentChain.Add(pathObject);
+                }
+            }
+        }
+
+        private static List<object> FindRelativePath(Pick pickActivity, object descendent)
+        {
+            List<object> path = FindDescendentFromPick(pickActivity, descendent);
+            path.Reverse();
+            return path;
+        }
+
+        private static List<object> FindDescendentFromPick(Pick pickActivity, object descendent)
+        {
+            List<object> path = new List<object>();
+            path.Add(pickActivity);
+            foreach (PickBranch branch in pickActivity.Branches)
+            {
+                if (branch == descendent)
+                {
+                    break;
+                }
+                else if (branch.Trigger == descendent)
+                {
+                    path.Add(branch);
+                    break;
+                }
+                else if (branch.Action == descendent)
+                {
+                    path.Add(branch);
+                    break;
+                }
+                else
+                {
+                    bool isVariableError = false;
+                    foreach (Variable variable in branch.Variables)
+                    {
+                        if (variable.Default == descendent)
+                        {
+                            isVariableError = true;
+                            break;
+                        }
+                    }
+
+                    if (isVariableError)
+                    {
+                        path.Add(branch);
+                        break;
+                    }
+                }
+            }
+
+            path.Add(descendent);
+            return path;
+        }       
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocatorFeature.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocatorFeature.cs
new file mode 100644 (file)
index 0000000..d9ca5d2
--- /dev/null
@@ -0,0 +1,17 @@
+// <copyright>
+//   Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Validation;
+
+    internal class PickValidationErrorSourceLocatorFeature : ValidationErrorSourceLocatorFeature
+    {
+        protected override IValidationErrorSourceLocator ValidationErrorSourceLocator
+        {
+            get { return new PickValidationErrorSourceLocator(); }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PropertyNames.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PropertyNames.cs
new file mode 100644 (file)
index 0000000..4a02db0
--- /dev/null
@@ -0,0 +1,39 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+
+    // This class is holding names of the used property names, so access to model item's 
+    // properties collection is somehow "strongly typed"
+    internal static class PropertyNames
+    {
+        public readonly static string ObjectInitializationAction = "InitializationAction";
+        public readonly static string Action = "Action";
+        public readonly static string ActionArgument = "Argument";
+        public readonly static string ActionArgument1 = "Argument1";
+        public readonly static string ActionArgument2 = "Argument2";
+        public readonly static string ActionHandler = "Handler";
+        public readonly static string AssignSequence = "Activities";
+        public readonly static string VarDataReader = "dbDataReader";
+        public readonly static string VarRecord = "resultObject";
+        public readonly static string NameProperty = "Name";
+        public readonly static string AssignTo = "To";
+        public readonly static string AssignValue = "Value";
+        public readonly static string DisplayName = "DisplayName";
+        public readonly static string Parameters = "Parameters";
+        public readonly static string ArgumentName = "DynamicParameterName";
+        public readonly static string Expression = "Expression";
+        public readonly static string VBExpressionText = "ExpressionText";
+        public readonly static string ConnectionContext = "ConnectionContext";
+        public readonly static string ResultsCollection = "Results";
+        public readonly static string RowsAffected = "RowsAffected";
+        public readonly static string ParameterDirection = "Direction";
+        public readonly static string ArgumentType = "ArgumentType";
+        public readonly static string Body = "Body";
+        public readonly static string ExceptionType = "ExceptionType";
+        public readonly static string ResultProperty = "Result";
+
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/RegisterMetadataDelayedWorker.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/RegisterMetadataDelayedWorker.cs
new file mode 100644 (file)
index 0000000..29a550c
--- /dev/null
@@ -0,0 +1,179 @@
+// <copyright>
+//   Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Metadata;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Reflection;
+    using System.Runtime;
+
+    internal class RegisterMetadataDelayedWorker
+    {
+        private Dictionary<string, List<Action<AttributeTableBuilder>>> delayedWorkItems;
+        private AssemblyLoadEventHandler onAssemblyLoadedEventHandler;
+
+        public Dictionary<string, List<Action<AttributeTableBuilder>>> DelayedWorkItems
+        {
+            get
+            {
+                if (this.delayedWorkItems == null)
+                {
+                    this.delayedWorkItems = new Dictionary<string, List<Action<AttributeTableBuilder>>>();
+                }
+
+                return this.delayedWorkItems;
+            }
+        }
+
+        public void RegisterMetadataDelayed(string assemblyName, Action<AttributeTableBuilder> delayedWork)
+        {
+            Fx.Assert(assemblyName != null, "Checked by caller");
+            Fx.Assert(delayedWork != null, "Checked by caller");
+            if (this.onAssemblyLoadedEventHandler == null)
+            {
+                this.onAssemblyLoadedEventHandler = new AssemblyLoadEventHandler(this.OnAssemblyLoaded);
+                AppDomain.CurrentDomain.AssemblyLoad += this.onAssemblyLoadedEventHandler;
+            }
+
+            List<Action<AttributeTableBuilder>> currentDelayedWorkItems;
+            if (!this.DelayedWorkItems.TryGetValue(assemblyName, out currentDelayedWorkItems))
+            {
+                currentDelayedWorkItems = new List<Action<AttributeTableBuilder>>();
+                this.DelayedWorkItems.Add(assemblyName, currentDelayedWorkItems);
+            }
+
+            currentDelayedWorkItems.Add(delayedWork);
+        }
+
+        public void WorkNowIfApplicable()
+        {
+            foreach (Assembly loadedAssembly in AppDomain.CurrentDomain.GetAssemblies())
+            {
+                this.CheckAndWork(loadedAssembly);
+            }
+        }
+
+        private void OnAssemblyLoaded(object sender, AssemblyLoadEventArgs args)
+        {
+            try
+            {
+                this.CheckAndWork(args.LoadedAssembly);
+            }
+            catch
+            {
+                Fx.AssertAndFailFast("OnAssemblyLoad should not throw exception");
+                throw;
+            }
+        }
+
+        private void CheckAndWork(Assembly loadedAssembly)
+        {
+            List<Action<AttributeTableBuilder>> currentDelayedWorkItems;
+            if (this.DelayedWorkItems.TryGetValue(loadedAssembly.GetName().Name, out currentDelayedWorkItems))
+            {
+                Action delayedRegisterMetadataWork = new DelayedRegisterMetadataWorkContext(currentDelayedWorkItems).Work;
+
+                // Retrieve the top level type descriptor from the stack
+                TypeDescriptionProvider currentTypeDescriptor = TypeDescriptor.GetProvider(typeof(object));
+
+                // Intercept any existing changes.
+                TypeDescriptor.AddProvider(new TypeDescriptionProviderInterceptor(currentTypeDescriptor, delayedRegisterMetadataWork), typeof(object));
+            }
+        }
+
+        private class DelayedRegisterMetadataWorkContext
+        {
+            private List<Action<AttributeTableBuilder>> currentDelayedWorkItems;
+
+            public DelayedRegisterMetadataWorkContext(List<Action<AttributeTableBuilder>> currentDelayedWorkItems)
+            {
+                this.currentDelayedWorkItems = currentDelayedWorkItems;
+            }
+
+            public void Work()
+            {
+                AttributeTableBuilder builder = new AttributeTableBuilder();
+                foreach (Action<AttributeTableBuilder> delayedWork in this.currentDelayedWorkItems)
+                {
+                    delayedWork(builder);
+                }
+
+                MetadataStore.AddSystemAttributeTable(builder.CreateTable());
+            }
+        }
+
+        private class TypeDescriptionProviderInterceptor : TypeDescriptionProvider
+        {
+            private Action interceptingWork;
+
+            public TypeDescriptionProviderInterceptor(TypeDescriptionProvider parent, Action interceptingWork)
+                : base(parent)
+            {
+                this.interceptingWork = interceptingWork;
+            }
+
+            public override object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args)
+            {
+                this.PerformInterceptingWork();
+                return base.CreateInstance(provider, objectType, argTypes, args);
+            }
+
+            public override IDictionary GetCache(object instance)
+            {
+                this.PerformInterceptingWork();
+                return base.GetCache(instance);
+            }
+
+            public override ICustomTypeDescriptor GetExtendedTypeDescriptor(object instance)
+            {
+                this.PerformInterceptingWork();
+                return base.GetExtendedTypeDescriptor(instance);
+            }
+
+            public override string GetFullComponentName(object component)
+            {
+                this.PerformInterceptingWork();
+                return base.GetFullComponentName(component);
+            }
+
+            public override Type GetReflectionType(Type objectType, object instance)
+            {
+                this.PerformInterceptingWork();
+                return base.GetReflectionType(objectType, instance);
+            }
+
+            public override Type GetRuntimeType(Type reflectionType)
+            {
+                this.PerformInterceptingWork();
+                return base.GetRuntimeType(reflectionType);
+            }
+
+            public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
+            {
+                this.PerformInterceptingWork();
+                return base.GetTypeDescriptor(objectType, instance);
+            }
+
+            public override bool IsSupportedType(Type type)
+            {
+                this.PerformInterceptingWork();
+                return base.IsSupportedType(type);
+            }
+
+            private void PerformInterceptingWork()
+            {
+                // Make sure the intercepting work is done only once.
+                TypeDescriptor.RemoveProvider(this, typeof(object));
+                if (this.interceptingWork != null)
+                {
+                    this.interceptingWork();
+                    this.interceptingWork = null;
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ReorderableListEditor.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ReorderableListEditor.xaml.cs
new file mode 100644 (file)
index 0000000..f82f69f
--- /dev/null
@@ -0,0 +1,82 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Internal.PropertyEditing;
+    using System.Collections.ObjectModel;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Input;
+
+    internal partial class ReorderableListEditor : UserControl
+    {
+        public static readonly DependencyProperty ItemTemplateProperty = DependencyProperty.Register("ItemTemplate", typeof(DataTemplate), typeof(ReorderableListEditor), new PropertyMetadata(null));
+        public static readonly DependencyProperty ListProperty = DependencyProperty.Register("List", typeof(ObservableCollection<ExpandableItemWrapper>), typeof(ReorderableListEditor), new PropertyMetadata(null));
+        public static readonly DependencyProperty SelectedListItemProperty = DependencyProperty.Register("SelectedListItem", typeof(ExpandableItemWrapper), typeof(ReorderableListEditor), new PropertyMetadata(null));
+
+        public ReorderableListEditor()
+        {
+            this.InitializeComponent();
+        }
+        
+        public DataTemplate ItemTemplate
+        {
+            get { return (DataTemplate)this.GetValue(ItemTemplateProperty); }
+            set { this.SetValue(ItemTemplateProperty, value); }
+        }
+
+        public ObservableCollection<ExpandableItemWrapper> List
+        {
+            get { return (ObservableCollection<ExpandableItemWrapper>)this.GetValue(ListProperty); }
+            set { this.SetValue(ListProperty, value); }
+        }
+
+        public ExpandableItemWrapper SelectedListItem
+        {
+            get { return (ExpandableItemWrapper)this.GetValue(SelectedListItemProperty); }
+            set { this.SetValue(SelectedListItemProperty, value); }
+        }
+
+        protected override void OnIsKeyboardFocusWithinChanged(DependencyPropertyChangedEventArgs e)
+        {
+            if (!this.listBox.IsKeyboardFocusWithin)
+            {
+                this.listBox.UnselectAll();
+            }
+
+            base.OnIsKeyboardFocusWithinChanged(e);
+        }
+
+        private void OnListBoxPreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
+        {
+            ListBoxItem item = VisualTreeUtils.FindVisualAncestor<ListBoxItem>(e.OriginalSource as DependencyObject);
+
+            if (item != null)
+            {
+                this.SelectedListItem = item.Content as ExpandableItemWrapper;
+            }
+        }
+
+        private void OnUpArrowClicked(object sender, RoutedEventArgs e)
+        {
+            int oldIndex = this.List.IndexOf(this.SelectedListItem);
+            if (oldIndex > 0)
+            {
+                this.List.Move(oldIndex, oldIndex - 1);
+            }
+        }
+
+        private void OnDownArrowClicked(object sender, RoutedEventArgs e)
+        {
+            int oldIndex = this.List.IndexOf(this.SelectedListItem);
+            if (oldIndex < this.List.Count - 1)
+            {
+                this.List.Move(oldIndex, oldIndex + 1);
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SelectedPropertyNameChangedEventArgs.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SelectedPropertyNameChangedEventArgs.cs
new file mode 100644 (file)
index 0000000..c8bde67
--- /dev/null
@@ -0,0 +1,24 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    internal delegate void SelectedPropertyNameChangedEventHandler(object sender, SelectedPropertyNameChangedEventArgs e);
+
+    internal sealed class SelectedPropertyNameChangedEventArgs : EventArgs
+    {
+        public SelectedPropertyNameChangedEventArgs(string propertyName)
+        {
+            this.PropertyName = propertyName;
+        }
+
+        public string PropertyName
+        {
+            get;
+            private set;
+        }
+    }   
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SequenceDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SequenceDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..4eaba3a
--- /dev/null
@@ -0,0 +1,48 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+
+    partial class SequenceDesigner
+    {
+        const string ExpandViewStateKey = "IsExpanded";
+
+        public SequenceDesigner()
+        {
+            this.InitializeComponent();
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            // Make sequence designer always expand by default, but only if the user didnt explicitly specify collapsed or expanded.
+            ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
+            if (viewStateService != null)
+            {
+                bool? isExpanded = (bool?)viewStateService.RetrieveViewState((ModelItem)newItem, ExpandViewStateKey);
+                if (isExpanded == null)
+                {
+                    viewStateService.StoreViewState((ModelItem)newItem, ExpandViewStateKey, true);
+                }
+            }
+            base.OnModelItemChanged(newItem);
+
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(Sequence);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(SequenceDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Activities"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Activities"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false });
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartNode.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartNode.cs
new file mode 100644 (file)
index 0000000..24e7498
--- /dev/null
@@ -0,0 +1,10 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    class StartNode
+    {
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartSymbol.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartSymbol.xaml.cs
new file mode 100644 (file)
index 0000000..8f7f6e1
--- /dev/null
@@ -0,0 +1,70 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Linq;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Input;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.Model;
+
+    partial class StartSymbol
+    {
+
+        public static readonly DependencyProperty TextProperty =
+            DependencyProperty.Register("Text", typeof(string), typeof(StartSymbol));
+
+        public string Text
+        {
+            get { return (string)GetValue(TextProperty); }
+            set { SetValue(TextProperty, value); }
+        }
+
+        public static StartSymbol CreateStartSymbol(EditingContext context)
+        {
+            StartSymbol start = new StartSymbol();
+            FakeRoot fakeRoot = new FakeRoot { StartNode = new StartNode() };
+            ModelTreeManager manager = context.Services.GetService<ModelTreeManager>();
+            start.ModelItem = new FakeModelItemImpl(manager, typeof(FakeRoot), fakeRoot, null).Properties["StartNode"].Value;
+            start.Name = "StartSymbol";
+            start.Focusable = true;
+            start.Context = context;
+            start.DataContext = start;
+            return start;
+        }
+
+        StartSymbol()
+        {
+            InitializeComponent();
+        }
+
+        protected override void OnContextMenuOpening(ContextMenuEventArgs e)
+        {
+            e.Handled = true;
+        }
+
+        protected override void OnPreviewKeyDown(KeyEventArgs e)
+        {
+            if (e.Key == Key.Delete)
+            {
+                Selection selection = this.Context.Items.GetValue<Selection>();
+
+                if (selection.SelectionCount == 1)
+                {
+                    Fx.Assert(selection.PrimarySelection.Parent.ItemType == typeof(FakeRoot), "StartNode should have a fakeroot.");
+                    // Avoid calling the delete command, if only the start node is selected.
+                    e.Handled = true;
+                }
+            }
+
+            base.OnPreviewKeyDown(e);
+        }
+    }
+
+
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateConnectionPointToolTip.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateConnectionPointToolTip.xaml.cs
new file mode 100644 (file)
index 0000000..4e775a5
--- /dev/null
@@ -0,0 +1,33 @@
+//------------------------------------------------------------------------------
+// <copyright file="StateConnectionPointToolTip.cs" company="Microsoft">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//------------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Linq;
+    using System.Text;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Documents;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Windows.Media.Imaging;
+    using System.Windows.Navigation;
+    using System.Windows.Shapes;
+
+    /// <summary>
+    /// Interaction logic for StateConnectionPointToolTip.xaml
+    /// </summary>
+    internal partial class StateConnectionPointToolTip : UserControl
+    {
+        public StateConnectionPointToolTip()
+        {
+            this.InitializeComponent();
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.CompositeView.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.CompositeView.cs
new file mode 100644 (file)
index 0000000..057ece5
--- /dev/null
@@ -0,0 +1,594 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//-----------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.Internal.PropertyEditing;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+    using System.Globalization;
+    using System.IO;
+    using System.Linq;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Windows.Threading;
+    using System.Xaml;
+
+    partial class StateContainerEditor : IMultipleDragEnabledCompositeView
+    {
+        public static readonly DependencyProperty DroppingTypeResolvingOptionsProperty =
+            DependencyProperty.Register("DroppingTypeResolvingOptions", typeof(TypeResolvingOptions), typeof(StateContainerEditor));
+
+        public TypeResolvingOptions DroppingTypeResolvingOptions
+        {
+            get { return (TypeResolvingOptions)GetValue(DroppingTypeResolvingOptionsProperty); }
+            set { SetValue(DroppingTypeResolvingOptionsProperty, value); }
+        }
+
+        public bool IsDefaultContainer
+        {
+            get { return true; }
+        }        
+
+        public void OnItemMoved(ModelItem modelItem)
+        {
+            Fx.Assert(this.modelItemToUIElement.ContainsKey(modelItem), "Moved item does not exist.");
+            this.DoDeleteItems(new List<ModelItem> { modelItem }, false);
+        }
+
+        public object OnItemsCopied(List<ModelItem> itemsToCopy)
+        {
+            itemsToCopy.Remove(this.initialModelItem);
+
+            // If the item copied is Transition, save its destination state guid to find the destination state when pasting.
+            if (itemsToCopy.Count == 1)
+            {
+                ModelItem item = itemsToCopy.First();
+                if (item != null && item.ItemType == typeof(Transition))
+                {
+                    ModelItem destinationState = item.Properties[TransitionDesigner.ToPropertyName].Value;
+
+                    if (!modelItemToGuid.ContainsKey(destinationState))
+                    {
+                        modelItemToGuid.Add(destinationState, Guid.NewGuid().ToString());
+                    }
+
+                    CopiedTransitionDestinationState = destinationState;
+                    return modelItemToGuid[destinationState];
+                }
+            }
+
+            itemsToCopy.RemoveAll(item => item.ItemType == typeof(Transition));
+
+            // Save the locations of copied items relative to the statemachine editor to the metadata.
+            // The metadata will be used to translate the location view states of pasted items to the pasting target.
+            PointCollection metaData = new PointCollection();
+            foreach (ModelItem modelItem in itemsToCopy)
+            {
+                object viewState = this.ViewStateService.RetrieveViewState(modelItem, ShapeLocationViewStateKey);
+                Point location = (Point)viewState;
+                StateContainerEditor parentDesigner = VisualTreeUtils.FindVisualAncestor<StateContainerEditor>(GetStateView(modelItem));
+                location = parentDesigner.panel.GetLocationRelativeToOutmostPanel(location);
+                metaData.Add(location);
+            }
+            
+            CopiedTransitionDestinationState = null;
+            return metaData;
+        }
+
+        public object OnItemsCut(List<ModelItem> itemsToCut)
+        {
+            object metaData = OnItemsCopied(itemsToCut);
+            this.OnItemsDelete(itemsToCut);
+            return metaData;
+        }
+
+        public void OnItemsDelete(List<ModelItem> itemsToDelete)
+        {
+            DoDeleteItems(itemsToDelete, true);
+        }
+
+        void DoDeleteItems(List<ModelItem> itemsToDelete, bool removeIncomingConnectors)
+        {
+            itemsToDelete.Remove(this.initialModelItem);
+
+            if (itemsToDelete.Count == 1 && itemsToDelete.First().ItemType == typeof(Transition))
+            {
+                this.DeleteConnectorModelItem(this.selectedConnector);
+                return;
+            }
+
+            itemsToDelete.RemoveAll(item => item.ItemType == typeof(Transition));
+
+            HashSet<Connector> connectorsToDelete = new HashSet<Connector>();
+            List<ModelItem> allStateModelItemsToDelete = new List<ModelItem>();
+            IEnumerable<ModelItem> selectedStateModelItems = this.Context.Items.GetValue<Selection>().SelectedObjects
+                .Where<ModelItem>((p) => { return p.ItemType == typeof(State); });
+
+            foreach (ModelItem stateModelItem in itemsToDelete)
+            {
+                allStateModelItemsToDelete.Add(stateModelItem);                
+            }
+
+            foreach (ModelItem modelItem in allStateModelItemsToDelete)
+            {
+                // We only need to delete incoming connectors to the states to be deleted; outgoing connectors will be deleted
+                // automatically when the containing state is deleted.
+                List<Connector> incomingConnectors = StateContainerEditor.GetIncomingConnectors(GetStateView(modelItem));
+                foreach (Connector connector in incomingConnectors)
+                {
+                    ModelItem transitionModelItem = StateContainerEditor.GetConnectorModelItem(connector);
+                    // If the transition is contained by the states to delete, we don't bother to delete it separately.
+                    if (!StateContainerEditor.IsTransitionModelItemContainedByStateModelItems(transitionModelItem, selectedStateModelItems))
+                    {
+                        connectorsToDelete.Add(connector);
+                    }
+                }
+            }
+
+            // If we don't need to remove incoming connectors, we still remove the transitions but then add them back later.
+            // This is in order to create an undo unit that contains the change notifications needed to make undo/redo work correctly.
+            foreach (Connector connector in connectorsToDelete)
+            {
+                ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(connector);
+                if (removeIncomingConnectors || connectorModelItem.ItemType == typeof(Transition))
+                {
+                    this.DeleteConnectorModelItem(connector);
+                }
+            }
+            if (!removeIncomingConnectors)
+            {
+                foreach (Connector connector in connectorsToDelete)
+                {
+                    ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(connector);
+                    if (connectorModelItem.ItemType == typeof(Transition))
+                    {
+                        StateContainerEditor.GetParentStateModelItemForTransition(connectorModelItem).Properties[StateDesigner.TransitionsPropertyName].Collection.Add(connectorModelItem);
+                    }
+                }
+            }
+
+            if (null != itemsToDelete)
+            {
+                itemsToDelete.ForEach(p => this.DeleteState(p, removeIncomingConnectors));
+            }
+        }
+
+        public bool CanPasteItems(List<object> itemsToPaste)
+        {
+            if (itemsToPaste != null && itemsToPaste.Count > 0)
+            {
+                if (itemsToPaste.Count == 1 && itemsToPaste.First() is Transition)
+                {
+                    string errorMessage;
+                    IEnumerable<ModelItem> selectedStateModelItems = this.Context.Items.GetValue<Selection>().SelectedObjects;
+                    return selectedStateModelItems.All(item => CanPasteTransition(item, out errorMessage));
+                }
+                else
+                {
+                    return itemsToPaste.All(p =>
+                        {
+                            Type type = (p is Type) ? (Type)p : p.GetType();
+                            return (typeof(State) == type || typeof(FinalState) == type);
+                        }
+                    );
+                }
+            }
+
+            return false;
+        }
+
+        private bool CanPasteTransition(ModelItem sourceStateItem, out string errorMessage)
+        {
+            Fx.Assert(sourceStateItem != null, "sourceStateItem cannot be null");
+
+            if (sourceStateItem.ItemType != typeof(State))
+            {
+                errorMessage = SR.PasteTransitionOnNonStateItem;
+                return false;
+            }
+
+            if (!this.modelItemToUIElement.ContainsKey(sourceStateItem))
+            {
+                errorMessage = SR.PasteTransitionWithoutDestinationState;
+                return false;
+            }
+
+            State sourceState = (State)sourceStateItem.GetCurrentValue();
+
+            if (sourceState.IsFinal)
+            {
+                errorMessage = SR.PasteTransitionOnFinalState;
+                return false;
+            }
+
+            if (GetEmptyConnectionPoints(sourceStateItem.View as UIElement).Count < 1)
+            {
+                errorMessage = string.Format(CultureInfo.CurrentUICulture, SR.PasteTransitionWithoutAvailableConnectionPoints, sourceState.DisplayName);
+                return false;
+            }
+
+            errorMessage = null;
+            return true;
+        }
+
+        internal bool CanPasteTransition(ModelItem destinationStateItem, out string errorMessage, params ModelItem[] sourceStateItems)
+        {
+            bool isDestinationStateSelected = false;
+            foreach (ModelItem sourceStateItem in sourceStateItems)
+            {                
+                if (!CanPasteTransition(sourceStateItem, out errorMessage))
+                {
+                    return false;
+                }
+
+                if (sourceStateItem == destinationStateItem)
+                {
+                    isDestinationStateSelected = true;
+                }
+            }
+
+            int emptyConnectionPointsCountNeeded = isDestinationStateSelected ? sourceStateItems.Count() + 1 : sourceStateItems.Count();
+
+            if (GetEmptyConnectionPoints(destinationStateItem.View as UIElement).Count < emptyConnectionPointsCountNeeded)
+            {
+                errorMessage = string.Format(CultureInfo.CurrentUICulture, SR.PasteTransitionWithoutAvailableConnectionPoints, destinationStateItem.Properties["DisplayName"].Value);
+                return false;
+            }
+
+            errorMessage = null;
+            return true;
+        }
+
+        private ModelItem FindState(string guid)
+        {            
+            foreach (ModelItem item in this.modelItemToUIElement.Keys)
+            {
+                string itemGuid;
+                if (modelItemToGuid.TryGetValue(item, out itemGuid) && guid == itemGuid)
+                {
+                    return item;
+                }
+            }
+
+            return null;
+        }
+
+        public void OnItemsPasted(List<object> itemsToPaste, List<object> metaData, Point pastePoint, WorkflowViewElement pastePointReference)
+        {
+            if (this.ModelItem.ItemType == typeof(State))
+            {
+                WorkflowViewElement view = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(this);
+                if (view != null)
+                {
+                    StateContainerEditor container = (StateContainerEditor)DragDropHelper.GetCompositeView(view);
+                    container.OnItemsPasted(itemsToPaste, metaData, pastePoint, pastePointReference);
+                }
+
+                return;
+            }
+
+            if (itemsToPaste.Count == 1 && itemsToPaste.First() is Transition)
+            {
+                if (metaData == null || metaData.Count != 1 || !(metaData.First() is string))
+                {
+                    ShowMessageBox(SR.PasteTransitionWithoutDestinationState);
+                    return;
+                }
+
+                ModelItem destinationState = FindState(metaData.First() as string);
+
+                if (destinationState == null)
+                {
+                    ShowMessageBox(SR.PasteTransitionWithoutDestinationState);
+                    return;
+                }
+
+                this.PopulateVirtualizingContainer(destinationState);
+
+                ModelItem[] selectedItems = this.Context.Items.GetValue<Selection>().SelectedObjects.ToArray();
+                string errorMessage;
+                if (!CanPasteTransition(destinationState, out errorMessage, selectedItems))
+                {
+                    ShowMessageBox(errorMessage);
+                    return;
+                }
+
+                Transition pastedTransition = itemsToPaste.First() as Transition;
+                Fx.Assert(pastedTransition != null, "Copied Transition should not be null.");
+
+                using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(System.Activities.Presentation.SR.PropertyChangeEditingScopeDescription))
+                {
+                    string displayName = pastedTransition.DisplayName;
+                    bool isFirst = true;
+                    foreach (ModelItem selectedItem in selectedItems)
+                    {
+                        if (!isFirst)
+                        {
+                            StringReader reader = new StringReader(XamlServices.Save(pastedTransition));
+                            pastedTransition = (Transition)XamlServices.Load(reader);
+                        }
+
+                        ModelItem transitionModelItem = this.Context.Services.GetRequiredService<ModelTreeManager>().WrapAsModelItem(pastedTransition);
+                        ModelItem sourceState = selectedItem;
+                        sourceState.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(transitionModelItem);
+                        transitionModelItem.Properties[TransitionDesigner.ToPropertyName].SetValue(destinationState);
+
+                        if (isFirst)
+                        {
+                            this.ViewStateService.RemoveViewState(transitionModelItem, ConnectorLocationViewStateKey);
+                            this.ViewStateService.RemoveViewState(transitionModelItem, SrcConnectionPointIndexStateKey);
+                            this.ViewStateService.RemoveViewState(transitionModelItem, DestConnectionPointIndexStateKey);
+                            isFirst = false;
+                        }
+                    }
+
+                    es.Complete();
+                }
+            }
+            else
+            {
+                List<ModelItem> modelItemsPasted = new List<ModelItem>();
+                List<State> states = new List<State>();
+
+                foreach (object obj in itemsToPaste)
+                {
+                    State state;
+                    if (obj is FinalState)
+                    {
+                        state = new State() { DisplayName = DefaultFinalStateDisplayName, IsFinal = true };
+                    }
+                    else
+                    {
+                        state = (State)obj;
+                        if (state.DisplayName == null)
+                        {
+                            state.DisplayName = DefaultStateDisplayName;
+                        }
+                    }
+                    states.Add(state);
+                }
+
+                RemoveDanglingTransitions(states);
+
+                using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(
+                    System.Activities.Presentation.SR.CollectionAddEditingScopeDescription))
+                {
+                    // Fix 157591 by storing the height and width of the container "before" the new states are added to the
+                    // panel, and group the insertion inside one editing scope - such that Undo will also restore the 
+                    // size of the StateMachineContainer to pre-insert size.
+                    StoreShapeSizeWithUndoRecursively(this.ModelItem);
+
+                    foreach (State state in states)
+                    {
+                        ModelItem stateModelItem =
+                            (this.ModelItem.ItemType == typeof(StateMachine)) ?
+                            this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection.Add(state) :
+                            GetStateMachineModelItem(this.ModelItem).Properties[StateMachineDesigner.StatesPropertyName].Collection.Add(state);
+                        modelItemsPasted.Add(stateModelItem);
+                    }
+
+                    es.Complete();
+                }
+
+                if (modelItemsPasted.Count > 0)
+                {
+                    // translate location view states to be in the coordinate system of the pasting target
+                    Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Only StateMachine contain the StateContainerEditor.");
+
+                    this.UpdateLocationViewStatesByMetaData(modelItemsPasted, metaData, this);
+
+                    if (pastePoint.X > 0 && pastePoint.Y > 0)
+                    {
+                        if (pastePointReference != null)
+                        {
+                            pastePoint = pastePointReference.TranslatePoint(pastePoint, this.panel);
+                            pastePoint.X = pastePoint.X < 0 ? 0 : pastePoint.X;
+                            pastePoint.Y = pastePoint.Y < 0 ? 0 : pastePoint.Y;
+                        }
+                        this.UpdateLocationViewStatesByPoint(modelItemsPasted, pastePoint);
+                    }
+                    // If paste point is not available, paste the items to the top left corner.
+                    else
+                    {
+                        this.UpdateLocationViewStatesToAvoidOverlap(modelItemsPasted);
+                    }
+                }
+
+                this.Dispatcher.BeginInvoke(() =>
+                {
+                    if (modelItemsPasted.Count > 0 && modelItemsPasted[0] != null)
+                    {
+                        Keyboard.Focus(modelItemsPasted[0].View as IInputElement);
+                    }
+                    this.Context.Items.SetValue(new Selection(modelItemsPasted));
+                },
+                DispatcherPriority.ApplicationIdle
+                );
+            }
+        }
+
+
+        public List<ModelItem> SortSelectedItems(List<ModelItem> selectedItems)
+        {
+            if (selectedItems == null)
+            {
+                throw FxTrace.Exception.ArgumentNull("selectedItems");
+            }
+
+            DragDropHelper.ValidateItemsAreOnView(selectedItems, this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection);
+            return selectedItems;
+        }
+
+        public void OnItemsMoved(List<ModelItem> movedItems)
+        {
+            if (movedItems == null)
+            {
+                throw FxTrace.Exception.ArgumentNull("movedItems");
+            }
+
+            DragDropHelper.ValidateItemsAreOnView(movedItems, this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection);
+            this.DoDeleteItems(movedItems, false);
+        }
+
+        void UpdateLocationViewStatesByPoint(List<ModelItem> itemsPasted, Point point)
+        {
+            Point topLeft = new Point(Double.PositiveInfinity, Double.PositiveInfinity);
+            foreach (ModelItem stateModelItem in itemsPasted)
+            {
+                object viewState = this.ViewStateService.RetrieveViewState(stateModelItem, ShapeLocationViewStateKey);
+                if (viewState != null)
+                {
+                    Point location = (Point)viewState;
+                    topLeft.X = topLeft.X > location.X ? location.X : topLeft.X;
+                    topLeft.Y = topLeft.Y > location.Y ? location.Y : topLeft.Y;
+                }
+            }
+            OffsetLocationViewStates(new Vector(point.X - topLeft.X, point.Y - topLeft.Y), itemsPasted, GetTransitionModelItems(itemsPasted), false);
+        }
+
+        void UpdateLocationViewStatesByMetaData(List<ModelItem> itemsPasted, List<object> metaData, StateContainerEditor container)
+        {
+            Fx.Assert(container != null, "The view states must be calculated related to a parent StateContainerEditor.");
+            // If the states are not copied from state machine view (e.g., when the State designer is the breadcrumb root), 
+            // there is no meta data
+            if (metaData != null && metaData.Count > 0)
+            {
+                int ii = 0;
+                foreach (object data in metaData)
+                {
+                    PointCollection points = (PointCollection)data;
+                    foreach (Point point in points)
+                    {
+                        // translate location view states to be in the coordinate system of the pasting target
+                        this.ViewStateService.StoreViewState(itemsPasted[ii], ShapeLocationViewStateKey, container.panel.TranslatePoint(point, container.panel));
+                        ++ii;
+                    }
+                }
+                Fx.Assert(itemsPasted.Count == ii, "itemsCopied does not match the metaData.");
+            }
+        }
+
+        void OffsetLocationViewStates(Vector offsetVector, IEnumerable<ModelItem> stateModelItems, IEnumerable<ModelItem> transitionModelItems, bool enableUndo)
+        {
+            // Offset view state for states
+            if (stateModelItems != null)
+            {
+                foreach (ModelItem modelItem in stateModelItems)
+                {
+                    object viewState = this.ViewStateService.RetrieveViewState(modelItem, ShapeLocationViewStateKey);
+                    if (viewState != null)
+                    {
+                        viewState = Point.Add((Point)viewState, offsetVector);
+                        if (enableUndo)
+                        {
+                            this.ViewStateService.StoreViewStateWithUndo(modelItem, ShapeLocationViewStateKey, viewState);
+                        }
+                        else
+                        {
+                            this.ViewStateService.StoreViewState(modelItem, ShapeLocationViewStateKey, viewState);
+                        }
+                    }
+                }
+            }
+            // Offset view state for transitions
+            if (transitionModelItems != null)
+            {
+                foreach (ModelItem modelItem in transitionModelItems)
+                {
+                    object viewState = this.ViewStateService.RetrieveViewState(modelItem, ConnectorLocationViewStateKey);
+                    if (viewState != null)
+                    {
+                        PointCollection locations = (PointCollection)viewState;
+                        PointCollection newLocations = new PointCollection();
+                        foreach (Point location in locations)
+                        {
+                            Point newLocation = Point.Add(location, offsetVector);
+                            newLocation.X = newLocation.X < 0 ? 0 : newLocation.X;
+                            newLocation.Y = newLocation.Y < 0 ? 0 : newLocation.Y;
+                            newLocations.Add(newLocation);
+                        }
+                        if (enableUndo)
+                        {
+                            this.ViewStateService.StoreViewStateWithUndo(modelItem, ConnectorLocationViewStateKey, newLocations);
+                        }
+                        else
+                        {
+                            this.ViewStateService.StoreViewState(modelItem, ConnectorLocationViewStateKey, newLocations);
+                        }
+                    }
+                }
+            }
+        }
+
+        void UpdateLocationViewStatesToAvoidOverlap(List<ModelItem> itemsPasted)
+        {
+            int offset = 0;
+            if (itemsPasted.Count > 0)
+            {
+                //Check to see if the first element in the input list needs offset. Generalize that information for all ModelItems in the input list.
+                object location = this.ViewStateService.RetrieveViewState(itemsPasted[0], ShapeLocationViewStateKey);
+                HashSet<Point> targetOccupiedLocations = null;
+
+                if (this.ModelItem.ItemType == typeof(StateMachine))
+                {
+                    targetOccupiedLocations = this.shapeLocations;
+                }
+                else
+                {
+                    ModelItem stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.ModelItem);
+                    StateMachineDesigner designer = stateMachineModelItem.View as StateMachineDesigner;
+
+                    if (designer != null)
+                    {
+                        targetOccupiedLocations = designer.StateContainerEditor.shapeLocations;
+                    }
+                }
+
+                if (location != null && targetOccupiedLocations != null)
+                {
+                    Point locationOfShape = (Point)location;
+
+                    bool isOverlapped;
+
+                    do
+                    {
+                        isOverlapped = false;
+                        // need to check for each point on the canvas
+                        foreach (var point in targetOccupiedLocations)
+                        {
+                            // When the pasting occurs, the pasted point may not be exactly the same
+                            // as the copied point (with a slight margin of offset).  Therefore,
+                            // we need to detect if the pasted point is within the boundary of the copied
+                            // object.  If so, offset the pasted position such that the overlap is not observable.
+                            if ((locationOfShape.X < point.X + FreeFormPanel.GridSize &&
+                                 locationOfShape.X > point.X - FreeFormPanel.GridSize) &&
+                                (locationOfShape.Y < point.Y + FreeFormPanel.GridSize &&
+                                 locationOfShape.Y > point.Y - FreeFormPanel.GridSize))
+                            {
+                                offset++;
+                                locationOfShape.Offset(FreeFormPanel.GridSize, FreeFormPanel.GridSize);
+                                isOverlapped = true;
+                                break;
+                            }
+                        }
+                    } while (isOverlapped);
+                }
+            }
+            //Update ViewState according to calculated offset.
+            if (offset > 0)
+            {
+                double offsetValue = FreeFormPanel.GridSize * offset;
+                OffsetLocationViewStates(new Vector(offsetValue, offsetValue), itemsPasted, GetTransitionModelItems(itemsPasted), false);
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChangeReactions.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChangeReactions.cs
new file mode 100644 (file)
index 0000000..3fb93cf
--- /dev/null
@@ -0,0 +1,322 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//-----------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Collections.Generic;
+    using System.Collections.Specialized;
+    using System.ComponentModel;
+    using System.Diagnostics;
+    using System.Windows;
+    using System.Windows.Media;
+    using System.Windows.Threading;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Statements;
+    using System.Runtime;
+    using System.Linq;
+
+    partial class StateContainerEditor
+    {
+        void OnStateCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+        {
+            if (e.Action == NotifyCollectionChangedAction.Remove)
+            {
+                if (e.OldItems != null)
+                {
+                    foreach (ModelItem deleted in e.OldItems)
+                    {
+                        if (deleted != null)
+                        {
+                            ModelItemCollection transitions = deleted.Properties[StateDesigner.TransitionsPropertyName].Collection;
+                            if (this.listenedTransitionCollections.Contains(transitions))
+                            {
+                                transitions.CollectionChanged -=
+                                    new NotifyCollectionChangedEventHandler(this.OnTransitionCollectionChanged);
+                                this.listenedTransitionCollections.Remove(transitions);
+                            }
+
+                            if (this.modelItemToUIElement.ContainsKey(deleted))
+                            {
+                                this.RemoveStateVisual(this.modelItemToUIElement[deleted]);
+                            }
+                        }
+                    }
+                }
+            }
+
+            else if (e.Action == NotifyCollectionChangedAction.Add)
+            {
+                if (e.NewItems != null)
+                {
+                    foreach (ModelItem added in e.NewItems)
+                    {
+                        if (added != null)
+                        {
+                            ModelItemCollection transitions = added.Properties[StateDesigner.TransitionsPropertyName].Collection;
+                            if (!this.listenedTransitionCollections.Contains(transitions))
+                            {
+                                transitions.CollectionChanged +=
+                                    new NotifyCollectionChangedEventHandler(this.OnTransitionCollectionChanged);
+                                this.listenedTransitionCollections.Add(transitions);
+                            }
+                            this.AddStateVisuals(new List<ModelItem> { added });
+                        }
+                    }
+                }
+            }
+        }
+
+        void OnTransitionCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+        {
+            if (e.Action == NotifyCollectionChangedAction.Remove)
+            {
+                if (e.OldItems != null)
+                {
+                    foreach (ModelItem deleted in e.OldItems)
+                    {
+                        if (deleted != null)
+                        {
+                            if (!this.transitionModelItemsRemoved.Contains(deleted))
+                            {
+                                this.transitionModelItemsRemoved.Add(deleted);
+                            }
+                        }
+                    }
+                }
+            }
+
+            else if (e.Action == NotifyCollectionChangedAction.Add)
+            {
+                // We have to postpone updating the visual until the editing scope completes because 
+                // the connector view state is not available at this moment
+                foreach (ModelItem item in e.NewItems)
+                {
+                    if (!this.transitionModelItemsAdded.Contains(item))
+                    {
+                        this.transitionModelItemsAdded.Add(item);
+                    }
+                }
+            }
+        }
+
+        void OnModelPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == StateMachineDesigner.InitialStatePropertyName)
+            {
+                Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Only StateMachine should have initial state");
+                this.initialStateChanged = true;
+            }
+        }
+
+        static bool ShouldSuppressAddingConnectorsWhenAddingStateVisuals(EditingScope scope)
+        {
+            return scope.Changes.Any<Change>((p) =>
+            {
+                return p != null && p.GetType() == typeof(SuppressAddingConnectorWhenAddingStateVisual);
+            });
+        }
+
+        static bool IsTransitionReordering(EditingScope scope)
+        {
+            return scope.Changes.Any<Change>((p) =>
+            {
+                return p != null && p.GetType() == typeof(TransitionReorderChange);
+            });
+        }
+
+        // All the connectors are directly contained by the statemachine editor. This is because connectors can go across states.
+        void OnEditingScopeCompleted(object sender, EditingScopeEventArgs e)
+        {
+            foreach (ModelItem item in e.EditingScope.ItemsRemoved)
+            {
+                modelItemToGuid.Remove(item);
+            }
+
+            if (ShouldSuppressAddingConnectorsWhenAddingStateVisuals(e.EditingScope))
+            {
+                this.suppressAddingConnectorsWhenAddingStateVisuals = true;
+            }
+            else
+            {
+                this.suppressAddingConnectorsWhenAddingStateVisuals = false;
+            }
+
+            foreach (Change change in e.EditingScope.Changes)
+            {
+                if (change is PropertyChange)
+                {
+                    PropertyChange propertyChange = change as PropertyChange;
+                    if (propertyChange.Owner.ItemType == typeof(Transition)
+                        && propertyChange.PropertyName == TransitionDesigner.ToPropertyName
+                        && propertyChange.NewValue != propertyChange.OldValue
+                        && !this.transitionModelItemsRemoved.Contains(propertyChange.Owner)
+                        && !this.transitionModelItemsAdded.Contains(propertyChange.Owner)
+                        && this.modelItemToUIElement.ContainsKey(propertyChange.NewValue))
+                    {
+                        if (propertyChange.OldValue != null)
+                        {
+                            Connector connector = this.GetConnectorInStateMachine(propertyChange.Owner);
+                            if (connector != null)
+                            {
+                                this.Remove(connector);
+                            }
+                        }
+
+                        if (propertyChange.NewValue != null)
+                        {
+                            this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
+                            {
+                                if (this.populated)
+                                {
+                                    this.AddTransitionVisual(propertyChange.Owner);
+                                }
+                            }));
+                        }
+                    }
+                }
+            }
+
+            if (!IsTransitionReordering(e.EditingScope))
+            {
+                if (this.transitionModelItemsAdded.Count > 0)
+                {
+                    // We need to wait until after the state visuals are updated
+                    this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
+                    {
+                        if (this.populated)
+                        {
+                            foreach (ModelItem transition in this.transitionModelItemsAdded)
+                            {
+                                if (transition.Properties[TransitionDesigner.ToPropertyName].Value != null)
+                                {
+                                    this.AddTransitionVisual(transition);
+                                }
+                            }
+                        }
+                        this.transitionModelItemsAdded.Clear();
+                    }));
+                }
+
+                if (this.transitionModelItemsRemoved.Count > 0)
+                {
+                    foreach (ModelItem transition in this.transitionModelItemsRemoved)
+                    {
+                        Connector connector = this.GetConnectorInStateMachine(transition);
+                        if (connector != null)
+                        {
+                            this.Remove(connector);
+                        }
+                    }
+                    this.transitionModelItemsRemoved.Clear();
+                }
+            }
+
+            if (this.initialStateChanged)
+            {
+                Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Only StateMachine should have initial state");
+                Fx.Assert(this.initialNode != null, "Initial node should not be null");
+
+                // Remove the old link
+                if (GetAttachedConnectors(this.initialNode).Count > 0)
+                {
+                    this.Remove(GetAttachedConnectors(this.initialNode)[0]);
+                }
+                // Add the new link if the new initial state is not null
+                ModelItem initialStateModelItem = this.ModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].Value;
+                if (initialStateModelItem != null)
+                {
+                    // We need to wait until after the state visuals are updated
+                    this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
+                    {
+                        if (this.populated)
+                        {
+                            this.AddInitialNodeConnector(GetStateView(initialStateModelItem));
+                        }
+                    }));
+                }
+                this.initialStateChanged = false;
+            }
+        }
+
+        void OnViewStateChanged(object sender, ViewStateChangedEventArgs e)
+        {
+            Fx.Assert(e.ParentModelItem != null, "ViewState should be associated with some modelItem");
+
+            if (!this.internalViewStateChange)
+            {
+                if (e.ParentModelItem == this.ModelItem)
+                {
+                    if (string.Equals(e.Key, StateContainerWidthViewStateKey, StringComparison.Ordinal))
+                    {
+                        double defaultWidth = ((this.ModelItem.ItemType == typeof(State)) ? DefaultWidthForState : DefaultWidthForStateMachine);
+                        object widthViewState = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerWidthViewStateKey);
+                        this.StateContainerWidth = (widthViewState != null) ? (double)widthViewState : defaultWidth;
+                    }
+                    else if (string.Equals(e.Key, StateContainerHeightViewStateKey, StringComparison.Ordinal))
+                    {
+                        double defaultHeight = ((this.ModelItem.ItemType == typeof(State)) ? DefaultHeightForState : DefaultHeightForStateMachine);
+                        object heightViewState = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerHeightViewStateKey);
+                        this.StateContainerHeight = (heightViewState != null) ? (double)heightViewState : defaultHeight;
+                    }
+                }
+
+                if ((e.ParentModelItem.ItemType == typeof(State) || (e.ParentModelItem.ItemType == typeof(StateMachine) && e.ParentModelItem == this.ModelItem)) &&
+                    e.Key.Equals(ShapeLocationViewStateKey))
+                {
+                    ModelItem modelItem = e.ParentModelItem;
+                    if (modelItem.ItemType == typeof(StateMachine))
+                    {
+                        modelItem = this.initialModelItem;
+                    }
+                    if (this.modelItemToUIElement.ContainsKey(modelItem))
+                    {
+                        if (e.NewValue != null)
+                        {
+                            FreeFormPanel.SetLocation(this.modelItemToUIElement[modelItem], (Point)e.NewValue);
+                            this.panel.InvalidateMeasure();
+                            if (e.OldValue != null)
+                            {
+                                this.shapeLocations.Remove((Point)e.OldValue);
+                            }
+                            this.shapeLocations.Add((Point)e.NewValue);
+                            // To reroute the links
+                            this.InvalidateMeasureForStateMachinePanel();
+                        }
+                    }
+                }
+
+                else if (e.ParentModelItem.ItemType == typeof(State) && e.Key.Equals(ShapeSizeViewStateKey))
+                {
+                    // To reroute the links
+                    this.InvalidateMeasureForStateMachinePanel();
+                }
+
+                // Only the statemachine editor should respond to connector changes because all connectors are
+                // only added to the outmost editor
+                else if (e.Key.Equals(ConnectorLocationViewStateKey) && !this.GetStateMachineContainerEditor().internalViewStateChange)
+                {
+                    Connector changedConnector = this.GetConnectorInStateMachine(e.ParentModelItem);
+                    if (changedConnector != null)
+                    {
+                        if (e.NewValue != null)
+                        {
+                            Fx.Assert(e.NewValue is PointCollection, "e.NewValue is not PointCollection");
+                            changedConnector.Points = e.NewValue as PointCollection;
+                            this.GetStateMachineContainerEditor().panel.RemoveConnectorEditor();
+                            this.InvalidateMeasureForStateMachinePanel();
+                            if (IsConnectorFromInitialNode(changedConnector))
+                            {
+                                this.initialStateChanged = true;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChanges.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChanges.cs
new file mode 100644 (file)
index 0000000..1d5e6c0
--- /dev/null
@@ -0,0 +1,332 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//-----------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.Diagnostics;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Input;
+    using System.Windows.Media;
+
+    partial class StateContainerEditor
+    {
+        internal int DeleteConnectorModelItem(Connector connector, bool rerouting = false)
+        {
+            ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(connector);
+
+            if (!rerouting)
+            {
+                if (connector is ConnectorWithStartDot)
+                {
+                    connector.StartDot.MouseDown -= new MouseButtonEventHandler(OnConnectorStartDotMouseDown);
+                    connector.StartDot.MouseUp -= new MouseButtonEventHandler(OnConnectorStartDotMouseUp);
+                }
+
+                connector.GotKeyboardFocus -= new KeyboardFocusChangedEventHandler(OnConnectorGotKeyboardFocus);
+                connector.RequestBringIntoView -= new RequestBringIntoViewEventHandler(OnConnectorRequestBringIntoView);
+                connector.GotFocus -= new RoutedEventHandler(OnConnectorGotFocus);
+                connector.MouseDoubleClick -= new MouseButtonEventHandler(OnConnectorMouseDoubleClick);
+                connector.MouseDown -= new MouseButtonEventHandler(OnConnectorMouseDown);
+                connector.KeyDown -= new KeyEventHandler(OnConnectorKeyDown);
+                connector.ContextMenuOpening -= new ContextMenuEventHandler(OnConnectorContextMenuOpening);
+                connector.Unloaded -= new RoutedEventHandler(OnConnectorUnloaded);
+            }
+
+            int removedIndex = InvalidIndex;
+            if (connectorModelItem.ItemType == typeof(Transition))
+            {
+                ModelItemCollection transitions = StateContainerEditor.GetParentStateModelItemForTransition(connectorModelItem).Properties[StateDesigner.TransitionsPropertyName].Collection;
+                removedIndex = transitions.IndexOf(connectorModelItem);
+                Fx.Assert(removedIndex >= 0, "can't find the connector ModelItem in collection");
+                transitions.Remove(connectorModelItem);
+            }
+            // Connector from initial node
+            else if (connectorModelItem.ItemType == typeof(StateMachine))
+            {
+                using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.ClearInitialState))
+                {
+                    connectorModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].SetValue(null);
+                    if (!rerouting)
+                    {
+                        this.ViewStateService.StoreViewStateWithUndo(connectorModelItem, ConnectorLocationViewStateKey, null);
+                    }
+                    es.Complete();
+                }
+            }
+            return removedIndex;
+        }
+
+        void DeleteState(ModelItem stateModelItem, bool clearInitialState)
+        {
+            Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Should only delete states with StateMachine.");
+
+            this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection.Remove(stateModelItem);
+            if (clearInitialState &&
+                this.ModelItem.ItemType == typeof(StateMachine) &&
+                stateModelItem == this.ModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].Value)
+            {
+                this.ModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].SetValue(null);
+                this.ViewStateService.StoreViewStateWithUndo(this.ModelItem, ConnectorLocationViewStateKey, null);
+            }
+        }
+
+        // referenceTransitionModelItem is used when a connector is re-linked.
+        void CreateTransition(ConnectionPoint sourceConnPoint, ConnectionPoint destConnPoint, ModelItem referenceTransitionModelItem, bool isSourceMoved)
+        {
+            VirtualizedContainerService.VirtualizingContainer srcDesigner = sourceConnPoint.ParentDesigner as VirtualizedContainerService.VirtualizingContainer;
+            Fx.Assert(srcDesigner != null, "srcDesigner should not be null.");
+            VirtualizedContainerService.VirtualizingContainer destDesigner = destConnPoint.ParentDesigner as VirtualizedContainerService.VirtualizingContainer;
+            Fx.Assert(destDesigner != null, "destDesigner should not be null.");
+
+            ModelItem srcModelItem = srcDesigner.ModelItem;
+            ModelItem destModelItem = destDesigner.ModelItem;
+            ModelItem transitionModelItem = null;
+
+            // We are moving the connector.
+            if (referenceTransitionModelItem != null && referenceTransitionModelItem.ItemType == typeof(Transition))
+            {
+                transitionModelItem = referenceTransitionModelItem;
+                // We are moving the start of the connector. We only preserve the trigger if it is not shared.
+                if (isSourceMoved)
+                {
+                    Transition referenceTransition = referenceTransitionModelItem.GetCurrentValue() as Transition;
+                    ModelItem stateModelItem = GetParentStateModelItemForTransition(referenceTransitionModelItem);
+                    State state = stateModelItem.GetCurrentValue() as State;
+                    bool isTriggerShared = false;
+                    foreach (Transition transition in state.Transitions)
+                    {
+                        if (transition != referenceTransition && transition.Trigger == referenceTransition.Trigger)
+                        {
+                            isTriggerShared = true;
+                            break;
+                        }
+                    }
+                    if (isTriggerShared)
+                    {
+                        transitionModelItem.Properties[TransitionDesigner.TriggerPropertyName].SetValue(null);
+                    }
+                }
+                transitionModelItem.Properties[TransitionDesigner.ToPropertyName].SetValue(destModelItem);
+                srcModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(transitionModelItem);
+            }
+            // We are creating a new connector. 
+            else
+            {
+                ModelItem stateMachineModelItem = GetStateMachineModelItem(srcModelItem);
+                Transition newTransition = new Transition() { DisplayName = StateContainerEditor.GenerateTransitionName(stateMachineModelItem) };
+                newTransition.To = destModelItem.GetCurrentValue() as State;
+                // Assign the shared trigger.
+                if (sourceConnPoint.AttachedConnectors.Count > 0)
+                {
+                    Connector connector = sourceConnPoint.AttachedConnectors[0];
+                    Transition existingTransition = StateContainerEditor.GetConnectorModelItem(connector).GetCurrentValue() as Transition;
+                    newTransition.Trigger = existingTransition.Trigger;
+                }
+                transitionModelItem = srcModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(newTransition);
+            }
+            if (transitionModelItem != null)
+            {
+                // if the transition connection is re-routed, the SrcConnPointIndex needs to be updated.
+                PointCollection connectorViewState = new PointCollection(ConnectorRouter.Route(this.panel, sourceConnPoint, destConnPoint));
+                int srcConnectionPointIndex = StateContainerEditor.GetConnectionPoints(sourceConnPoint.ParentDesigner).IndexOf(sourceConnPoint);
+                int destConnectionPointIndex = StateContainerEditor.GetConnectionPoints(destConnPoint.ParentDesigner).IndexOf(destConnPoint);
+                this.StoreConnectorLocationViewState(transitionModelItem, connectorViewState, true);
+                this.ViewStateService.StoreViewStateWithUndo(transitionModelItem, SrcConnectionPointIndexStateKey, srcConnectionPointIndex);
+                this.ViewStateService.StoreViewStateWithUndo(transitionModelItem, DestConnectionPointIndexStateKey, destConnectionPointIndex);
+            }
+        }
+
+        // referenceConnector is used when we are re-linking the connector.
+        internal ConnectorCreationResult CreateConnectorGesture(ConnectionPoint sourceConnectionPoint, ConnectionPoint destConnectionPoint, Connector referenceConnector, bool isConnectorStartMoved)
+        {
+            Fx.Assert(sourceConnectionPoint != null, "sourceConnectionPoint is null.");
+            Fx.Assert(destConnectionPoint != null, "destConnectionPoint is null.");
+            ConnectorCreationResult result = ConnectorCreationResult.OtherFailure;
+            if (destConnectionPoint.PointType != ConnectionPointKind.Outgoing && sourceConnectionPoint.PointType != ConnectionPointKind.Incoming)
+            {
+                if (sourceConnectionPoint.ParentDesigner is VirtualizedContainerService.VirtualizingContainer)
+                {
+                    //bool sameDestination = false;
+                    ModelItem refTransitionModelItem = null;
+                    if (referenceConnector != null)
+                    {
+                        refTransitionModelItem = StateContainerEditor.GetConnectorModelItem(referenceConnector);
+                    }
+
+                    using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.CreateTransition))
+                    {
+                        if (refTransitionModelItem != null)
+                        {
+                            this.CreateTransition(sourceConnectionPoint, destConnectionPoint, refTransitionModelItem, isConnectorStartMoved);
+                        }
+                        else
+                        {
+                            this.CreateTransition(sourceConnectionPoint, destConnectionPoint, null, false);
+                        }
+                        result = ConnectorCreationResult.Success;
+                        es.Complete();
+                    }
+                }
+                else if (sourceConnectionPoint.ParentDesigner is StartSymbol)
+                {
+                    ModelItem stateModelItem = ((VirtualizedContainerService.VirtualizingContainer)destConnectionPoint.ParentDesigner).ModelItem;
+
+                    if (IsFinalState(stateModelItem))
+                    {
+                        result = ConnectorCreationResult.CannotSetFinalStateAsInitialState;
+                    }
+                    else
+                    {
+                        using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.SetInitialState))
+                        {
+                            this.StateMachineModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].SetValue(stateModelItem);
+                            PointCollection connectorViewState = new PointCollection(ConnectorRouter.Route(this.panel, sourceConnectionPoint, destConnectionPoint));
+                            this.StoreConnectorLocationViewState(this.StateMachineModelItem, connectorViewState, true);
+                            result = ConnectorCreationResult.Success;
+                            es.Complete();
+                        }
+                    }
+                }
+            }
+            return result;
+        }
+
+        internal ConnectorCreationResult CreateConnectorGesture(ConnectionPoint sourceConnectionPoint, UIElement dest, Connector referenceConnector, bool isConnectorStartMoved)
+        {
+            ConnectionPoint destConnectionPoint = null;
+            if (this.activeConnectionPoint != null)
+            {
+                destConnectionPoint = this.activeConnectionPoint;
+            }
+            else
+            {
+                destConnectionPoint = GetClosestDestConnectionPoint(sourceConnectionPoint, dest);
+            }
+            
+            if (destConnectionPoint != null)
+            {
+                return CreateConnectorGesture(sourceConnectionPoint, destConnectionPoint, referenceConnector, isConnectorStartMoved);
+            }
+            return ConnectorCreationResult.OtherFailure;
+        }
+
+        internal ConnectorCreationResult CreateConnectorGesture(UIElement source, ConnectionPoint destConnectionPoint, Connector referenceConnector, bool isConnectorStartMoved)
+        {
+            ConnectionPoint sourceConnectionPoint = null;
+            if (this.activeConnectionPoint != null)
+            {
+                sourceConnectionPoint = this.activeConnectionPoint;
+            }
+            else
+            {
+                sourceConnectionPoint = GetClosestSrcConnectionPoint(source, destConnectionPoint);
+            }
+
+            if (sourceConnectionPoint != null)
+            {
+                return CreateConnectorGesture(sourceConnectionPoint, destConnectionPoint, referenceConnector, isConnectorStartMoved);
+            }
+            return ConnectorCreationResult.OtherFailure;
+        }
+
+        void StoreShapeLocationViewState(UIElement view, Point newLocation)
+        {
+            ModelItem storageModelItem = null;
+            if (view is StartSymbol)
+            {
+                storageModelItem = this.ModelItem;
+            }
+            else if (view is VirtualizedContainerService.VirtualizingContainer)
+            {
+                storageModelItem = ((VirtualizedContainerService.VirtualizingContainer)view).ModelItem;
+            }
+            StoreShapeLocationViewState(storageModelItem, newLocation);
+        }
+
+        void StoreShapeLocationViewState(ModelItem storageModelItem, Point newLocation)
+        {
+            if (this.ViewStateService.RetrieveViewState(storageModelItem, ShapeLocationViewStateKey) != null)
+            {
+                this.ViewStateService.StoreViewStateWithUndo(storageModelItem, ShapeLocationViewStateKey, newLocation);
+            }
+            else
+            {
+                this.ViewStateService.StoreViewState(storageModelItem, ShapeLocationViewStateKey, newLocation);
+            }
+        }
+        
+        void StoreConnectorLocationViewState(ModelItem connectorModelItem, PointCollection viewState, bool isUndoableViewState)
+        {
+            if (isUndoableViewState)
+            {
+                this.ViewStateService.StoreViewStateWithUndo(connectorModelItem, ConnectorLocationViewStateKey, viewState);
+            }
+            else
+            {
+                this.ViewStateService.StoreViewState(connectorModelItem, ConnectorLocationViewStateKey, viewState);
+            }
+        }
+
+        void StoreConnectorLocationViewState(Connector connector, bool isUndoableViewState)
+        {
+            //This method will be called whenever the FreeFormPanel raises a location changed event on a connector.
+            //Such location changed events are a result of changes already committed in the UI. Hence we do not want to react to such view state changes.
+            //Using internalViewStateChange flag for that purpose.
+            this.internalViewStateChange = true;
+            this.StoreConnectorLocationViewState(StateContainerEditor.GetConnectorModelItem(connector), connector.Points, isUndoableViewState);
+            this.internalViewStateChange = false;
+        }
+
+        // While adding an new StateContainer inside an outer StateContainer, the outter StateContainer size might change.  
+        // InsertState would recursively stores the outer containers before the insertion happens, and capture the size within a single EditingScope to facilitate Undo.
+        ModelItem InsertState(Object droppedObject)
+        {
+            ModelItem droppedModelItem = null;
+            Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Should only drop state with StateMachine.");
+            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(System.Activities.Presentation.SR.CollectionAddEditingScopeDescription))
+            {
+                StoreShapeSizeWithUndoRecursively(this.ModelItem);
+                droppedModelItem = this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection.Add(droppedObject);
+                es.Complete();
+            }
+            return droppedModelItem;
+        }
+
+        // Recursively store the current StateContainerHeight and StateContainerWidth of the target StateContainer and its ancestors to the current editing scope, 
+        // up to the StateMachine instance.
+        internal void StoreShapeSizeWithUndoRecursively(ModelItem modelItem)
+        {
+            if (modelItem.ItemType == typeof(State))
+            {
+                ModelItem parent = GetStateMachineModelItem(modelItem);
+                if (null != parent)
+                {
+                    // State can be dropped to a non-StateMachine container (Bug 220966)
+                    // so a null check is needed.
+                    StoreShapeSizeWithUndoRecursively(parent);
+                }
+            }
+
+            if (modelItem.ItemType == typeof(State) || modelItem.ItemType == typeof(StateMachine))
+            {
+                this.ViewStateService.StoreViewStateWithUndo(
+                    modelItem,
+                    StateContainerWidthViewStateKey,
+                    this.ViewStateService.RetrieveViewState(modelItem, StateContainerWidthViewStateKey));
+
+                this.ViewStateService.StoreViewStateWithUndo(
+                    modelItem,
+                    StateContainerHeightViewStateKey,
+                    this.ViewStateService.RetrieveViewState(modelItem, StateContainerHeightViewStateKey));
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.Utilities.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.Utilities.cs
new file mode 100644 (file)
index 0000000..4d36b9a
--- /dev/null
@@ -0,0 +1,544 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//-----------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.Internal.PropertyEditing;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+    using System.Globalization;
+    using System.Linq;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Documents;
+    using System.Windows.Media;
+
+    partial class StateContainerEditor
+    {
+        internal static ModelItem GetConnectorModelItem(DependencyObject obj)
+        {
+            return (ModelItem)obj.GetValue(StateContainerEditor.ConnectorModelItemProperty);
+        }
+
+        static void SetConnectorModelItem(DependencyObject obj, ModelItem modelItem)
+        {
+            obj.SetValue(StateContainerEditor.ConnectorModelItemProperty, modelItem);
+        }
+
+        internal static List<ConnectionPoint> GetConnectionPoints(DependencyObject obj)
+        {
+            if (obj is StartSymbol)
+            {
+                return (List<ConnectionPoint>)obj.GetValue(StateContainerEditor.ConnectionPointsProperty);
+            }
+            if (!(obj is VirtualizedContainerService.VirtualizingContainer))
+            {
+                obj = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(obj);
+            }
+            return (List<ConnectionPoint>)obj.GetValue(StateContainerEditor.ConnectionPointsProperty);
+        }
+
+        static void SetConnectionPoints(DependencyObject obj, List<ConnectionPoint> connectionPoints)
+        {
+            obj.SetValue(StateContainerEditor.ConnectionPointsProperty, connectionPoints);
+        }
+
+        static void SetConnectorSrcDestConnectionPoints(Connector connector, ConnectionPoint srcConnectionPoint, ConnectionPoint destConnectionPoint)
+        {
+            FreeFormPanel.SetSourceConnectionPoint(connector, srcConnectionPoint);
+            FreeFormPanel.SetDestinationConnectionPoint(connector, destConnectionPoint);
+            srcConnectionPoint.AttachedConnectors.Add(connector);
+            destConnectionPoint.AttachedConnectors.Add(connector);
+        }
+
+        static void SetConnectorLabel(Connector connector, ModelItem connectorModelItem)
+        {
+
+            connector.SetBinding(Connector.LabelTextProperty,  new Binding()
+            {
+                Source = connectorModelItem,
+                Path = new PropertyPath("DisplayName")
+            });
+
+            TextBlock toolTip = new TextBlock();
+            toolTip.SetBinding(TextBlock.TextProperty, new Binding()
+            {
+                Source = connectorModelItem,
+                Path = new PropertyPath("DisplayName"),
+                StringFormat = TransitionNameToolTip + Environment.NewLine + SR.EditTransitionTooltip + Environment.NewLine + SR.CopyTransitionToolTip
+            });
+
+            connector.SetLabelToolTip(toolTip);
+        }
+
+        static void SetConnectorStartDotToolTip(FrameworkElement startDot, ModelItem connectorModelItem)
+        {
+            ModelItem triggerModelItem = connectorModelItem.Properties[TransitionDesigner.TriggerPropertyName].Value as ModelItem;
+            string triggerName = null;
+            if (triggerModelItem == null)
+            {
+                triggerName = "(null)";
+            }
+            else
+            {
+                ModelItem displayNameModelItem = triggerModelItem.Properties["DisplayName"].Value;
+                if (displayNameModelItem != null)
+                {
+                    triggerName = displayNameModelItem.GetCurrentValue() as string;
+                }
+            }
+            startDot.ToolTip = string.Format(CultureInfo.InvariantCulture, TriggerNameToolTip, triggerName) + Environment.NewLine + SR.SharedTriggerToolTip;
+        }
+
+
+        // Returns true if visual is on the visual tree for point p relative to the reference.
+        static bool IsVisualHit(UIElement visual, UIElement reference, Point point)
+        {
+            bool visualIsHit = false;
+            HitTestResult result = VisualTreeHelper.HitTest(reference, point);
+            if (result != null)
+            {
+                DependencyObject obj = result.VisualHit;
+                while (obj != null)
+                {
+                    if (visual.Equals(obj))
+                    {
+                        visualIsHit = true;
+                        break;
+                    }
+                    obj = VisualTreeHelper.GetParent(obj);
+                }
+            }
+            return visualIsHit;
+        }
+
+        //This snaps the center of the element to grid.
+        //Wherever shapeAnchorPoint is valid, it is made co-incident with the drop location.
+        static Point SnapVisualToGrid(UIElement element, Point location, Point shapeAnchorPoint, bool isAnchorPointValid)
+        {
+            Fx.Assert(element != null, "Input UIElement is null");
+            element.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
+            Point oldCenter = location;
+            if (!isAnchorPointValid)
+            {
+                //shapeAnchorPoint is invalid in case where it does not make sense (eg. toolbox drop).
+                location.X -= InitialNodeWidth / 2;
+                location.Y -= InitialNodeHeight / 2;
+            }
+            else
+            {
+                location.X -= shapeAnchorPoint.X;
+                location.Y -= shapeAnchorPoint.Y;
+                oldCenter = new Point(location.X + element.DesiredSize.Width / 2, location.Y + element.DesiredSize.Height / 2);
+            }
+
+            Point newCenter = SnapPointToGrid(oldCenter);
+
+            location.Offset(newCenter.X - oldCenter.X, newCenter.Y - oldCenter.Y);
+
+            if (location.X < 0)
+            {
+                double correction = FreeFormPanel.GridSize - ((location.X * (-1)) % FreeFormPanel.GridSize);
+                location.X = (correction == FreeFormPanel.GridSize) ? 0 : correction;
+            }
+            if (location.Y < 0)
+            {
+                double correction = FreeFormPanel.GridSize - ((location.Y * (-1)) % FreeFormPanel.GridSize);
+                location.Y = (correction == FreeFormPanel.GridSize) ? 0 : correction;
+            }
+            return location;
+        }
+
+        static Point SnapPointToGrid(Point pt)
+        {
+            pt.X -= pt.X % FreeFormPanel.GridSize;
+            pt.Y -= pt.Y % FreeFormPanel.GridSize;
+            pt.X = pt.X < 0 ? 0 : pt.X;
+            pt.Y = pt.Y < 0 ? 0 : pt.Y;
+            return pt;
+        }
+
+        static IEnumerable<Adorner> RemoveAdorner(UIElement adornedElement, Type adornerType)
+        {
+            Fx.Assert(adornedElement != null, "Invalid argument");
+            Fx.Assert(typeof(Adorner).IsAssignableFrom(adornerType), "Invalid argument");
+            List<Adorner> adornersRemoved = new List<Adorner>();
+            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(adornedElement);
+            if (adornerLayer != null)
+            {
+                Adorner[] adorners = adornerLayer.GetAdorners(adornedElement);
+                if (adorners != null)
+                {
+                    foreach (Adorner adorner in adorners)
+                    {
+                        if (adornerType.IsAssignableFrom(adorner.GetType()))
+                        {
+                            adornerLayer.Remove(adorner);
+                            adornersRemoved.Add(adorner);
+                        }
+                    }
+                }
+            }
+            return adornersRemoved;
+        }
+
+        internal static List<Connector> GetAttachedConnectors(UIElement shape)
+        {
+            HashSet<Connector> attachedConnectors = new HashSet<Connector>();
+            List<ConnectionPoint> allConnectionPoints = GetConnectionPoints(shape);
+            if (allConnectionPoints != null)
+            {
+                foreach (ConnectionPoint connPoint in allConnectionPoints)
+                {
+                    if (connPoint != null)
+                    {
+                        foreach (Connector connector in connPoint.AttachedConnectors)
+                        {
+                            attachedConnectors.Add(connector);
+                        }
+                    }
+                }
+            }
+            return attachedConnectors.ToList<Connector>();
+        }
+
+        static List<Connector> GetOutgoingConnectors(UIElement shape)
+        {
+            List<Connector> outgoingConnectors = new List<Connector>();
+            List<ConnectionPoint> allConnectionPoints = GetConnectionPoints(shape);
+            foreach (ConnectionPoint connPoint in allConnectionPoints)
+            {
+                if (connPoint != null)
+                {
+                    outgoingConnectors.AddRange(connPoint.AttachedConnectors.Where(p => FreeFormPanel.GetSourceConnectionPoint(p).Equals(connPoint)));
+                }
+            }
+            return outgoingConnectors;
+        }
+
+        static List<Connector> GetIncomingConnectors(UIElement shape)
+        {
+            List<Connector> incomingConnectors = new List<Connector>();
+            List<ConnectionPoint> allConnectionPoints = GetConnectionPoints(shape);
+            foreach (ConnectionPoint connPoint in allConnectionPoints)
+            {
+                if (connPoint != null)
+                {
+                    incomingConnectors.AddRange(connPoint.AttachedConnectors.Where(p => FreeFormPanel.GetDestinationConnectionPoint(p).Equals(connPoint)));
+                }
+            }
+            return incomingConnectors;
+        }
+
+        static ConnectionPoint ConnectionPointHitTest(UIElement element, Point hitPoint)
+        {
+            FreeFormPanel panel = VisualTreeUtils.FindVisualAncestor<FreeFormPanel>(element);
+            List<ConnectionPoint> connectionPoints = StateContainerEditor.GetConnectionPoints(element);
+            return FreeFormPanel.ConnectionPointHitTest(hitPoint, connectionPoints, panel);
+        }
+
+        static ConnectionPoint GetConnectionPoint(UIElement element, Point location)
+        {
+            List<ConnectionPoint> connectionPoints = StateContainerEditor.GetConnectionPoints(element);
+            foreach (ConnectionPoint connectionPoint in connectionPoints)
+            {
+                if (DesignerGeometryHelper.ManhattanDistanceBetweenPoints(location, connectionPoint.Location) <= ConnectorRouter.EndPointTolerance)
+                {
+                    return connectionPoint;
+                }
+            }
+            return null;
+        }
+
+        internal static ModelItem GetStateMachineModelItem(ModelItem modelItem)
+        {
+            ModelItem currentModelItem = modelItem;
+            while (currentModelItem != null && currentModelItem.ItemType != typeof(StateMachine))
+            {
+                currentModelItem = currentModelItem.Parent;
+            }
+            return currentModelItem;
+        }
+
+        static bool AreInSameStateMachine(ModelItem modelItem1, ModelItem modelItem2)
+        {
+            return GetStateMachineModelItem(modelItem1) == GetStateMachineModelItem(modelItem2);
+        }
+
+        internal static ModelItem GetParentStateModelItemForTransition(ModelItem transitionModelItem)
+        {
+            ModelItem parent = transitionModelItem;
+            while (parent != null && parent.ItemType != typeof(State))
+            {
+                parent = parent.Parent;
+            }
+            return parent;
+        }
+
+        internal static UIElement GetStateView(ModelItem stateModelItem)
+        {
+            ModelItem parent = GetStateMachineModelItem(stateModelItem);
+            if (parent.View is StateMachineDesigner)
+            {
+                return ((StateMachineDesigner)parent.View).StateContainerEditor.modelItemToUIElement[stateModelItem];
+            }
+            return null;
+        }
+
+        static ModelItem GetModelItemFromView(UIElement element)
+        {
+            ModelItem modelItem = null;
+            if (element is StartSymbol)
+            {
+                modelItem = ((StartSymbol)element).ModelItem;
+            }
+            else
+            {
+                modelItem = ((VirtualizedContainerService.VirtualizingContainer)element).ModelItem;
+            }
+            return modelItem;
+        }
+
+        static internal ConnectionPoint GetClosestConnectionPoint(ConnectionPoint srcConnPoint, List<ConnectionPoint> destConnPoints, out double minDist)
+        {
+            minDist = double.PositiveInfinity;
+            double dist = 0;
+            ConnectionPoint closestPoint = null;
+            Point srcPoint = FreeFormPanel.GetLocationRelativeToOutmostPanel(srcConnPoint);
+            foreach (ConnectionPoint destConnPoint in destConnPoints)
+            {
+                if (srcConnPoint != destConnPoint)
+                {
+                    dist = DesignerGeometryHelper.ManhattanDistanceBetweenPoints(srcPoint, FreeFormPanel.GetLocationRelativeToOutmostPanel(destConnPoint));
+                    if (dist < minDist)
+                    {
+                        minDist = dist;
+                        closestPoint = destConnPoint;
+                    }
+                }
+            }
+
+            return closestPoint;
+        }
+
+        static ConnectionPoint GetClosestConnectionPointNotOfType(ConnectionPoint srcConnectionPoint, List<ConnectionPoint> targetConnectionPoints, ConnectionPointKind illegalConnectionPointKind)
+        {
+            double minDist;
+            List<ConnectionPoint> filteredConnectionPoints = new List<ConnectionPoint>();
+            foreach (ConnectionPoint connPoint in targetConnectionPoints)
+            {
+                if (connPoint.PointType != illegalConnectionPointKind && !connPoint.Equals(srcConnectionPoint) && connPoint.AttachedConnectors.Count == 0)
+                {
+                    filteredConnectionPoints.Add(connPoint);
+                }
+            }
+            return GetClosestConnectionPoint(srcConnectionPoint, filteredConnectionPoints, out minDist);
+        }
+
+        static void GetClosestConnectionPointPair(List<ConnectionPoint> srcConnPoints, List<ConnectionPoint> destConnPoints, out ConnectionPoint srcConnPoint, out ConnectionPoint destConnPoint)
+        {
+            double minDist = double.PositiveInfinity;
+            double dist;
+            ConnectionPoint tempConnPoint;
+            srcConnPoint = null;
+            destConnPoint = null;
+            foreach (ConnectionPoint connPoint in srcConnPoints)
+            {
+                tempConnPoint = GetClosestConnectionPoint(connPoint, destConnPoints, out dist);
+                if (dist < minDist)
+                {
+                    minDist = dist;
+                    srcConnPoint = connPoint;
+                    destConnPoint = tempConnPoint;
+                }
+            }
+            Fx.Assert(srcConnPoint != null, "No ConnectionPoint found");
+            Fx.Assert(destConnPoint != null, "No ConnectionPoint found");
+        }
+
+        static void GetEmptySrcDestConnectionPoints(UIElement source, UIElement dest, out ConnectionPoint srcConnPoint, out ConnectionPoint destConnPoint)
+        {
+            srcConnPoint = null;
+            destConnPoint = null;
+            List<ConnectionPoint> srcConnectionPoints = GetEmptyConnectionPoints(source);
+            List<ConnectionPoint> destConnectionPoints = GetEmptyConnectionPoints(dest);
+            if (srcConnectionPoints.Count > 0 && destConnectionPoints.Count > 0)
+            {
+                GetClosestConnectionPointPair(srcConnectionPoints, destConnectionPoints, out srcConnPoint, out destConnPoint);
+            }
+        }
+
+        internal static List<ConnectionPoint> GetEmptyConnectionPoints(UIElement designer)
+        {
+            List<ConnectionPoint> connectionPoints = StateContainerEditor.GetConnectionPoints(designer);
+            if (connectionPoints != null)
+            {
+                return new List<ConnectionPoint>(connectionPoints.Where<ConnectionPoint>(
+                    (p) => { return p.AttachedConnectors == null || p.AttachedConnectors.Count == 0; }));
+            }
+            return new List<ConnectionPoint>();
+        }
+
+        //This returns the closest non-incoming connectionPoint on source. Return value will be different than destConnectionPoint.
+        static ConnectionPoint GetClosestSrcConnectionPoint(UIElement src, ConnectionPoint destConnectionPoint)
+        {
+            ConnectionPoint srcConnectionPoint = null;
+            if (destConnectionPoint.PointType != ConnectionPointKind.Outgoing)
+            {
+                srcConnectionPoint = GetClosestConnectionPointNotOfType(destConnectionPoint, StateContainerEditor.GetConnectionPoints(src), ConnectionPointKind.Incoming);
+            }
+            return srcConnectionPoint;
+        }
+
+        //This returns the closest non-outgoing connectionPoint on dest. Return value will be different than sourceConnectionPoint.
+        static ConnectionPoint GetClosestDestConnectionPoint(ConnectionPoint sourceConnectionPoint, UIElement dest)
+        {
+            ConnectionPoint destConnectionPoint = null;
+            if (sourceConnectionPoint.PointType != ConnectionPointKind.Incoming)
+            {
+                destConnectionPoint = GetClosestConnectionPointNotOfType(sourceConnectionPoint, StateContainerEditor.GetConnectionPoints(dest), ConnectionPointKind.Outgoing);
+            }
+            return destConnectionPoint;
+        }
+
+        static ConnectionPoint GetSrcConnectionPointForSharedTrigger(UIElement sourceDesigner, ModelItem connectorModelItem)
+        {
+            ConnectionPoint sourceConnectionPoint = null;
+            List<Connector> connectors = StateContainerEditor.GetOutgoingConnectors(sourceDesigner);
+            foreach (Connector connector in connectors)
+            {
+                ModelItem modelItem = StateContainerEditor.GetConnectorModelItem(connector);
+                if (modelItem != null && modelItem.ItemType == typeof(Transition))
+                {
+                    if (modelItem.Properties[TransitionDesigner.TriggerPropertyName].Value == connectorModelItem.Properties[TransitionDesigner.TriggerPropertyName].Value)
+                    {
+                        sourceConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
+                    }
+                }
+            }
+            return sourceConnectionPoint;
+        }
+
+        // Test if the transition is contained by any of the states or their descendants
+        static bool IsTransitionModelItemContainedByStateModelItems(ModelItem transitionModelItem, IEnumerable<ModelItem> stateModelItems)
+        {
+            foreach (ModelItem stateModelItem in stateModelItems)
+            {
+                if (stateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Contains(transitionModelItem))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        static bool IsTransitionDestinationWithinStates(Transition transition, IEnumerable<State> states)
+        {
+            foreach (State state in states)
+            {
+                if (transition.To == state)
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        // Remove dangling transitions that are not pointing to any of the input states or their descendants
+        static void RemoveDanglingTransitions(IEnumerable<State> states)
+        {
+            Queue<State> statesToProcess = new Queue<State>(states);
+            while (statesToProcess.Count > 0)
+            {
+                State state = statesToProcess.Dequeue();
+
+                IEnumerable<Transition> toRemove = state.Transitions.Where<Transition>((p) =>
+                    { return !IsTransitionDestinationWithinStates(p, states); }).Reverse();
+                foreach (Transition transition in toRemove)
+                {
+                    state.Transitions.Remove(transition);
+                }
+
+            }
+        }
+
+        static List<ModelItem> GetTransitionModelItems(IEnumerable<ModelItem> stateModelItems)
+        {
+            List<ModelItem> transitionModelItems = new List<ModelItem>();
+            foreach (ModelItem stateModelItem in stateModelItems)
+            {
+                transitionModelItems.AddRange(stateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection);
+                //transitionModelItems.AddRange(GetTransitionModelItems(stateModelItem.Properties[ChildStatesPropertyName].Collection));
+            }
+            return transitionModelItems;
+        }
+
+        internal static bool IsFinalState(ModelItem modelItem)
+        {
+            return modelItem.ItemType == typeof(State) && (bool)modelItem.Properties[StateDesigner.IsFinalPropertyName].Value.GetCurrentValue();
+        }
+
+        static void ShowMessageBox(string message)
+        {
+            MessageBox.Show(message, SR.ErrorMessageBoxTitle, MessageBoxButton.OK, MessageBoxImage.Error);
+        }
+
+        static void ReportConnectorCreationError(ConnectorCreationResult result)
+        {
+            switch (result)
+            {
+                case ConnectorCreationResult.CannotCreateTransitionToCompositeState:
+                    ShowMessageBox(SR.CannotCreateTransitionToCompositeState);
+                    break;
+                case ConnectorCreationResult.CannotCreateTransitionFromAncestorToDescendant:
+                    ShowMessageBox(SR.CannotCreateTransitionFromAncestorToDescendant);
+                    break;
+                case ConnectorCreationResult.CannotSetCompositeStateAsInitialState:
+                    ShowMessageBox(SR.CannotSetCompositeStateAsInitialState);
+                    break;
+                case ConnectorCreationResult.CannotSetFinalStateAsInitialState:
+                    ShowMessageBox(SR.CannotSetFinalStateAsInitialState);
+                    break;
+                case ConnectorCreationResult.OtherFailure:
+                    ShowMessageBox(SR.CannotCreateLink);
+                    break;
+            }
+        }
+
+        static bool IsConnectorFromInitialNode(Connector connector)
+        {
+            return GetConnectorModelItem(connector).ItemType == typeof(StateMachine);
+        }
+
+        internal static string GenerateTransitionName(ModelItem stateMachineModelItem)
+        {
+            Fx.Assert(stateMachineModelItem.ItemType == typeof(StateMachine), "ModelItem param should be a statemachine.");
+            HashSet<String> existingTransitionNames = new HashSet<string>();
+
+            foreach (ModelItem stateModelItem in stateMachineModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
+            {
+                foreach (ModelItem transitionModelItem in stateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection)
+                {
+                    existingTransitionNames.Add(((Transition)transitionModelItem.GetCurrentValue()).DisplayName);
+                }
+            }
+
+            int suffix = 0;
+            string name;
+
+            do
+            {
+                name = string.Format(CultureInfo.InvariantCulture, "T{0}", ++suffix);
+            } while (existingTransitionNames.Contains<string>(name));
+
+            return name;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.xaml.cs
new file mode 100644 (file)
index 0000000..7c8a70f
--- /dev/null
@@ -0,0 +1,2696 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.Services;
+    using System.Activities.Presentation.View;
+    using System.Collections.Generic;
+    using System.Collections.Specialized;
+    using System.ComponentModel;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Windows;
+    using System.Windows.Automation;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Documents;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Windows.Threading;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Statements;
+    using System.Runtime;
+    using System.Activities.Presentation.Internal.PropertyEditing;
+    using System.Globalization;
+
+    // The StateContainerEditor contains a FreeFormPanel that implements free form editing behaviors
+    // for States and Transitions among them. An instance of StateMachineDesigner and an instance of
+    // StateDesigner each contains an instance of StateContainerEditor to edit its child States and
+    // Transitions.
+    partial class StateContainerEditor : IAutoConnectContainer, IAutoSplitContainer
+    {
+        // Used to find the destination state when pasting transition.
+        private static Dictionary<ModelItem, string> modelItemToGuid = new Dictionary<ModelItem, string>();
+        internal static ModelItem CopiedTransitionDestinationState { get; set; }
+
+        // Flag to indicate whether the editor has been populated
+        bool populated = false;
+
+        // To keep track of all child state designer
+        Dictionary<ModelItem, UIElement> modelItemToUIElement;
+
+        // shapeLocations is useful to avoid pasting on existing shapes.
+        HashSet<Point> shapeLocations = null;
+
+        // To keep track of transition collections that the outmost editor listens to the CollectionChanged events.
+        HashSet<ModelItem> listenedTransitionCollections;
+
+        // Flag whether the view state change has already been committed in the UI.
+        bool internalViewStateChange = false;
+
+        // activeSrcConnectionPoint is required for connector creation gesture to store the source of the link.
+        ConnectionPoint activeSrcConnectionPoint;
+
+        ConnectionPoint activeDestConnectionPointForAutoSplit;
+
+        ConnectionPoint activeSrcConnectionPointForAutoSplit;
+
+        EdgeLocation entryEdgeForAutoSplit;
+
+        EdgeLocation exitEdgeForAutoSplit;
+
+        // selectedConnector is a placeholder for the last connector selected.
+        Connector selectedConnector = null;
+
+        bool updatingSelectedConnector;
+
+        // Used for connector creation
+        UIElement lastConnectionPointMouseUpElement = null;
+
+        // Only used by the outmost editor to keep track of transitions added/removed when editing scope completes
+        List<ModelItem> transitionModelItemsAdded;
+        List<ModelItem> transitionModelItemsRemoved;
+
+        // The outmost editor when the designer is populated.
+        // This is used to find the outmost editor when this editor has been removed from the visual tree.
+        StateContainerEditor stateMachineContainerEditor = null;
+
+        // To keep track of whether the initial state is changed during an EditingScope
+        bool initialStateChanged = false;
+
+        // The initial node symbol
+        UIElement initialNode = null;
+
+        // The ModelItem for the initial node
+        ModelItem initialModelItem = null;
+
+        // To register / unregister the editor as the default composite view on its parent
+        ICompositeViewEvents compositeViewEvents = null;
+
+        Size requiredSize = new Size(0, 0);
+
+        bool suppressAddingConnectorsWhenAddingStateVisuals = false;
+
+        ConnectionPointsAdorner activeConnectionPointsAdorner = null;
+        ConnectionPoint activeConnectionPoint = null;
+
+        SubscribeContextCallback<Selection> onSelectionChangedCallback = null;
+
+        bool? isRightToLeft;
+
+        // Constants
+        const double startSymbolTopMargin = 10.0;
+        // Default size of the state container editor when it is inside of the state designer
+        const double DefaultWidthForState = 100;
+        const double DefaultHeightForState = 25;
+        // Default size of the state container editor when it is inside of the state machine designer
+        const double DefaultWidthForStateMachine = 600;
+        const double DefaultHeightForStateMachine = 600;
+        // Default size of the state designer
+        const double DefaultStateDesignerWidth = 114;
+        const double DefaultStateDesignerHeight = 61;
+        // Default size of the initial / final node
+        const double InitialNodeWidth = 60;
+        const double InitialNodeHeight = 75;
+        const double ConnectionPointMargin = 15;
+        const string ShapeLocationViewStateKey = "ShapeLocation";
+        const string ShapeSizeViewStateKey = "ShapeSize";
+        internal const string ConnectorLocationViewStateKey = "ConnectorLocation";
+        internal const string SrcConnectionPointIndexStateKey = "SrcConnectionPointIndex";
+        internal const string DestConnectionPointIndexStateKey = "DestConnectionPointIndex";
+        internal const string StateContainerWidthViewStateKey = "StateContainerWidth";
+        internal const string StateContainerHeightViewStateKey = "StateContainerHeight";
+        internal const string DefaultStateDisplayName = "State";
+        internal const string DefaultFinalStateDisplayName = "FinalState";
+        internal const int ConnectionPointNum = 19;
+        private const string TriggerNameToolTip = "Trigger: {0}";
+        private const string TransitionNameToolTip = "Transition: {0}";
+
+        public static readonly DependencyProperty StateContainerWidthProperty = DependencyProperty.Register(
+            "StateContainerWidth",
+            typeof(double),
+            typeof(StateContainerEditor),
+            new FrameworkPropertyMetadata(DefaultWidthForState));
+
+        public static readonly DependencyProperty StateContainerHeightProperty = DependencyProperty.Register(
+            "StateContainerHeight",
+            typeof(double),
+            typeof(StateContainerEditor),
+            new FrameworkPropertyMetadata(DefaultHeightForState));
+
+        public static readonly DependencyProperty PanelMinWidthProperty = DependencyProperty.Register(
+            "PanelMinWidth",
+            typeof(double),
+            typeof(StateContainerEditor),
+            new FrameworkPropertyMetadata());
+
+        public static readonly DependencyProperty PanelMinHeightProperty = DependencyProperty.Register(
+            "PanelMinHeight",
+            typeof(double),
+            typeof(StateContainerEditor),
+            new FrameworkPropertyMetadata());
+
+        public static readonly DependencyProperty ConnectorModelItemProperty = DependencyProperty.RegisterAttached(
+            "ConnectorModelItem",
+            typeof(ModelItem),
+            typeof(StateContainerEditor),
+            new FrameworkPropertyMetadata());
+
+        public static readonly DependencyProperty ConnectionPointsProperty = DependencyProperty.RegisterAttached(
+            "ConnectionPoints",
+            typeof(List<ConnectionPoint>),
+            typeof(StateContainerEditor),
+            new FrameworkPropertyMetadata());
+
+        public static readonly DependencyProperty ModelItemProperty = DependencyProperty.Register(
+            "ModelItem",
+            typeof(ModelItem),
+            typeof(StateContainerEditor),
+            new FrameworkPropertyMetadata());
+
+        public static readonly DependencyProperty IsReadOnlyProperty = DependencyProperty.Register(
+            "IsReadOnly",
+            typeof(bool), typeof(StateContainerEditor),
+            new FrameworkPropertyMetadata(false));
+
+        public static readonly DependencyProperty IsStateMachineContainerProperty = DependencyProperty.Register(
+           "IsStateMachineContainer",
+           typeof(bool), typeof(StateContainerEditor),
+           new FrameworkPropertyMetadata(false));
+
+        public StateContainerEditor()
+        {
+            InitializeComponent();
+            this.modelItemToUIElement = new Dictionary<ModelItem, UIElement>();
+            this.shapeLocations = new HashSet<Point>();
+            this.listenedTransitionCollections = new HashSet<ModelItem>();
+            this.transitionModelItemsAdded = new List<ModelItem>();
+            this.transitionModelItemsRemoved = new List<ModelItem>();
+
+            Binding readOnlyBinding = new Binding();
+            readOnlyBinding.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(DesignerView), 1);
+            readOnlyBinding.Path = new PropertyPath(DesignerView.IsReadOnlyProperty);
+            readOnlyBinding.Mode = BindingMode.OneWay;
+            this.SetBinding(IsReadOnlyProperty, readOnlyBinding);
+
+            this.Loaded += (s, e) =>
+            {
+                if (this.ShouldInitialize())
+                {
+                    WorkflowViewElement parent = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(this);
+                    this.ModelItem = parent.ModelItem;
+                    this.StateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.ModelItem);
+                    this.Context = parent.Context;
+                    this.compositeViewEvents = parent;
+                    if (this.compositeViewEvents != null)
+                    {
+                        this.compositeViewEvents.RegisterDefaultCompositeView(this);
+                    }
+                    if (!this.populated)
+                    {
+                        this.Populate();
+                        Selection.Subscribe(this.Context, this.OnSelectionChangedCallback);
+                        this.populated = true;
+                    }
+                }
+            };
+
+            this.Unloaded += (s, e) =>
+            {
+                if (this.compositeViewEvents != null)
+                {
+                    (compositeViewEvents).UnregisterDefaultCompositeView(this);
+                    this.compositeViewEvents = null;
+                }
+                if (this.populated)
+                {
+                    this.Cleanup();
+                    Selection.Unsubscribe(this.Context, this.OnSelectionChangedCallback);
+                    this.populated = false;
+                }
+
+                this.StateMachineModelItem = null;
+
+                this.activeSrcConnectionPoint = null;
+                this.activeDestConnectionPointForAutoSplit = null;
+                this.activeSrcConnectionPointForAutoSplit = null;
+
+                // selectedConnector is a placeholder for the last connector selected.
+                this.selectedConnector = null;
+
+                // Used for connector creation
+                this.lastConnectionPointMouseUpElement = null;
+                this.activeConnectionPointsAdorner = null;
+                this.activeConnectionPoint = null;
+                this.initialNode = null;
+                // The ModelItem for the initial node
+                this.initialModelItem = null;
+
+                BindingOperations.ClearBinding(this, IsReadOnlyProperty);
+            };
+        }
+
+        internal FreeFormPanel Panel
+        {
+            get
+            {
+                return this.panel;
+            }
+        }
+
+        ViewStateService ViewStateService
+        {
+            get
+            {
+                ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
+                return viewStateService;
+            }
+        }
+
+        DesignerView DesignerView
+        {
+            get
+            {
+                return this.Context.Services.GetService<DesignerView>();
+            }
+        }
+
+        SubscribeContextCallback<Selection> OnSelectionChangedCallback
+        {
+            get
+            {
+                if (this.onSelectionChangedCallback == null)
+                {
+                    this.onSelectionChangedCallback = new SubscribeContextCallback<Selection>(this.OnSelectionChanged);
+                }
+
+                return this.onSelectionChangedCallback;
+            }
+        }
+
+        public double StateContainerWidth
+        {
+            get { return (double)this.GetValue(StateContainerEditor.StateContainerWidthProperty); }
+            set { this.SetValue(StateContainerEditor.StateContainerWidthProperty, value); }
+        }
+
+        public double StateContainerHeight
+        {
+            get { return (double)this.GetValue(StateContainerEditor.StateContainerHeightProperty); }
+            set { this.SetValue(StateContainerEditor.StateContainerHeightProperty, value); }
+        }
+
+        public double PanelMinWidth
+        {
+            get { return (double)this.GetValue(StateContainerEditor.PanelMinWidthProperty); }
+            set { this.SetValue(StateContainerEditor.PanelMinWidthProperty, value); }
+        }
+
+        public double PanelMinHeight
+        {
+            get { return (double)this.GetValue(StateContainerEditor.PanelMinHeightProperty); }
+            set { this.SetValue(StateContainerEditor.PanelMinHeightProperty, value); }
+        }
+
+        public ModelItem ModelItem
+        {
+            get { return (ModelItem)GetValue(ModelItemProperty); }
+            set { SetValue(ModelItemProperty, value); }
+        }
+
+        protected bool IsReadOnly
+        {
+            get { return (bool)GetValue(IsReadOnlyProperty); }
+            private set { SetValue(IsReadOnlyProperty, value); }
+        }
+
+        protected bool IsStateMachineContainer
+        {
+            get { return (bool)GetValue(IsStateMachineContainerProperty); }
+            private set { SetValue(IsStateMachineContainerProperty, value); }
+        }
+
+
+        public EditingContext Context
+        {
+            get;
+            set;
+        }
+
+        ModelItem StateMachineModelItem
+        {
+            get;
+            set;
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+            this.DataContext = this;
+        }
+
+        #region PopulateCleanup
+
+        void Populate()
+        {
+            // Keep track of the outmost editor, which may not be accessible by traversing the visual tree when the designer is deleted.
+            this.stateMachineContainerEditor = this.GetStateMachineContainerEditor();
+
+            this.panel.LocationChanged += new LocationChangedEventHandler(OnFreeFormPanelLocationChanged);
+            this.panel.ConnectorMoved += new ConnectorMovedEventHandler(OnFreeFormPanelConnectorMoved);
+            this.panel.LayoutUpdated += new EventHandler(OnFreeFormPanelLayoutUpdated);
+            this.panel.RequiredSizeChanged += new RequiredSizeChangedEventHandler(OnFreeFormPanelRequiredSizeChanged);
+
+            this.ViewStateService.ViewStateChanged += new ViewStateChangedEventHandler(OnViewStateChanged);
+
+            if (this.ModelItem.ItemType == typeof(StateMachine))
+            {
+                // Only StateMachine supports "States" collection
+                IsStateMachineContainer = true;
+                this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection.CollectionChanged += new NotifyCollectionChangedEventHandler(OnStateCollectionChanged);
+                this.ModelItem.PropertyChanged += new PropertyChangedEventHandler(this.OnModelPropertyChanged);
+                ModelTreeManager modelTreeManager = this.Context.Services.GetService<ModelTreeManager>();
+                modelTreeManager.EditingScopeCompleted += new EventHandler<EditingScopeEventArgs>(this.OnEditingScopeCompleted);
+
+                foreach (ModelItem modelItem in this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
+                {
+                    if (modelItem.ItemType == typeof(State))
+                    {
+                        ModelItemCollection transitions = modelItem.Properties[StateDesigner.TransitionsPropertyName].Collection;
+                        if (!this.listenedTransitionCollections.Contains(transitions))
+                        {
+                            transitions.CollectionChanged += new NotifyCollectionChangedEventHandler(this.OnTransitionCollectionChanged);
+                            this.listenedTransitionCollections.Add(transitions);
+                        }
+                    }
+                }
+            }
+
+
+            object widthViewState = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerWidthViewStateKey);
+            if (widthViewState != null)
+            {
+                this.StateContainerWidth = (double)widthViewState;
+            }
+
+            object heightViewState = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerHeightViewStateKey);
+            if (heightViewState != null)
+            {
+                this.StateContainerHeight = (double)heightViewState;
+            }
+
+            this.panel.Children.Clear();
+            this.modelItemToUIElement.Clear();
+            this.shapeLocations.Clear();
+
+            if (this.ModelItem.ItemType == typeof(StateMachine))
+            {
+                this.AddInitialNode();
+                this.AddStateVisuals(this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection);
+            }
+        }
+
+        void Cleanup()
+        {
+            this.panel.Children.Clear();
+            // Cleaning up the designers as they might be re-used.
+            foreach (UIElement element in this.modelItemToUIElement.Values)
+            {
+                element.MouseEnter -= new MouseEventHandler(OnChildElementMouseEnter);
+                element.MouseLeave -= new MouseEventHandler(OnChildElementMouseLeave);
+                ((FrameworkElement)element).SizeChanged -= new SizeChangedEventHandler(OnChildElementSizeChanged);
+            }
+            this.modelItemToUIElement.Clear();
+            this.panel.LocationChanged -= new LocationChangedEventHandler(OnFreeFormPanelLocationChanged);
+            this.panel.ConnectorMoved -= new ConnectorMovedEventHandler(OnFreeFormPanelConnectorMoved);
+            this.panel.LayoutUpdated -= new EventHandler(OnFreeFormPanelLayoutUpdated);
+            this.panel.RequiredSizeChanged -= new RequiredSizeChangedEventHandler(OnFreeFormPanelRequiredSizeChanged);
+            this.ViewStateService.ViewStateChanged -= new ViewStateChangedEventHandler(OnViewStateChanged);
+
+            if (this.ModelItem.ItemType == typeof(StateMachine))
+            {
+                // Only StateMachine supports "States" collection
+                this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection.CollectionChanged -= new NotifyCollectionChangedEventHandler(OnStateCollectionChanged);
+                this.ModelItem.PropertyChanged -= new PropertyChangedEventHandler(this.OnModelPropertyChanged);
+                ModelTreeManager modelTreeManager = this.Context.Services.GetService<ModelTreeManager>();
+                modelTreeManager.EditingScopeCompleted -= new EventHandler<EditingScopeEventArgs>(this.OnEditingScopeCompleted);
+
+                foreach (ModelItem modelItem in this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
+                {
+                    if (modelItem.ItemType == typeof(State))
+                    {
+                        ModelItemCollection transitions = modelItem.Properties[StateDesigner.TransitionsPropertyName].Collection;
+                        if (this.listenedTransitionCollections.Contains(transitions))
+                        {
+                            transitions.CollectionChanged -= new NotifyCollectionChangedEventHandler(this.OnTransitionCollectionChanged);
+                            this.listenedTransitionCollections.Remove(transitions);
+                        }
+                    }
+                }
+            }
+
+            // stateMachineContainerEditor will be null when dropping a State into a WorkflowItemPresenter.
+            if (this.ModelItem.ItemType == typeof(State) && this.stateMachineContainerEditor != null)
+            {
+                this.stateMachineContainerEditor = null;
+            }
+        }
+
+        #endregion
+
+        #region InitialNode
+
+        void AddInitialNode()
+        {
+            // Instantiate the initial node
+            StartSymbol initialNode = StartSymbol.CreateStartSymbol(this.Context);
+            initialNode.Text = "Start";
+            this.initialModelItem = initialNode.ModelItem;
+            this.modelItemToUIElement.Add(this.initialModelItem, initialNode);
+            DragDropHelper.SetCompositeView(initialNode, this);
+            this.initialNode = initialNode;
+            this.PopulateConnectionPoints(this.initialNode);
+            this.initialNode.MouseEnter += new MouseEventHandler(OnChildElementMouseEnter);
+            this.initialNode.MouseLeave += new MouseEventHandler(OnChildElementMouseLeave);
+            this.panel.Children.Add(this.initialNode);
+            this.initialNode.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
+            double startHeight = this.initialNode.DesiredSize.Height;
+            double startWidth = this.initialNode.DesiredSize.Width;
+            object locationOfShape = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerEditor.ShapeLocationViewStateKey);
+            if (locationOfShape != null)
+            {
+                Point locationPt = (Point)locationOfShape;
+                FreeFormPanel.SetLocation(this.initialNode, locationPt);
+            }
+            // If the view state is missing, place the initial node in the top middle.
+            else
+            {
+                Point startPoint = new Point(this.panel.MinWidth / 2, startSymbolTopMargin + startHeight / 2);
+                Point startLocation = SnapVisualToGrid(this.initialNode, startPoint, new Point(-1, -1), false);
+                FreeFormPanel.SetLocation(this.initialNode, startLocation);
+                this.internalViewStateChange = true;
+                this.StoreShapeLocationViewState(this.ModelItem, startLocation);
+                this.internalViewStateChange = false;
+            }
+            FreeFormPanel.SetChildSize(this.initialNode, new Size(startWidth, startHeight));
+        }
+
+        void AddInitialNodeConnector(UIElement initialStateView)
+        {
+            Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Only StateMachine should have initial state.");
+            List<Connector> attachedConnectors = StateContainerEditor.GetAttachedConnectors(this.initialNode);
+            if (attachedConnectors.Count == 0)
+            {
+                ConnectionPoint sourceConnectionPoint = StateContainerEditor.GetConnectionPointClosestToEdgeMidPoint(
+                    this.initialNode,
+                    StateContainerEditor.GetEmptyConnectionPoints(this.initialNode),
+                    EdgeLocation.Bottom);
+
+                Point srcLocation = FreeFormPanel.GetLocation(this.initialNode);
+                Size srcSize = FreeFormPanel.GetChildSize(this.initialNode);
+
+                Point destLocation = FreeFormPanel.GetLocation(initialStateView);
+                Size destSize = FreeFormPanel.GetChildSize(initialStateView);
+
+                // by default, the connector would connect to the top of the initial state
+                EdgeLocation destConnectorEdge = EdgeLocation.Top;
+
+                if (srcLocation.X > destLocation.X + destSize.Width)
+                {
+                    // if the state is located at the west of the start node, should connect to the right side of initial state.
+                    destConnectorEdge = EdgeLocation.Right;
+                }
+                else if (srcLocation.X + srcSize.Width < destLocation.X)
+                {
+                    // if the state is located at the east of the start node, should connect to the left side of initial state.
+                    destConnectorEdge = EdgeLocation.Left;
+                }
+
+                ConnectionPoint destinationConnectionPoint = StateContainerEditor.GetConnectionPointClosestToEdgeMidPoint(
+                    initialStateView,
+                    StateContainerEditor.GetEmptyConnectionPoints(initialStateView),
+                    destConnectorEdge);
+
+                this.AddConnector(this.initialNode,
+                    initialStateView,
+                    this.ModelItem,
+                    sourceConnectionPoint,
+                    destinationConnectionPoint);
+            }
+        }
+
+        #endregion
+
+        #region StateVisuals
+
+        UIElement ProcessAndGetModelView(ModelItem model)
+        {
+            UIElement element;
+            if (!this.modelItemToUIElement.TryGetValue(model, out element))
+            {
+                element = this.Context.Services.GetService<VirtualizedContainerService>().GetContainer(model, this);
+                if (element is VirtualizedContainerService.VirtualizingContainer)
+                {
+                    // Fix bug 183698 - if the container does not contain other states, the minwidth should
+                    // be re-set to the default and let the FreeFormPanel to calculate its actual size.
+                    // If a child state was previously expanded, the container's min size would be set
+                    // to its expanded size via ContainerService.GetHintSize in GetContainer() method.
+                    // But if the item is a simple state, its min size should be reset to the default minimum.
+                    ((VirtualizedContainerService.VirtualizingContainer)element).MinWidth = DefaultStateDesignerWidth;
+                    ((VirtualizedContainerService.VirtualizingContainer)element).MinHeight = DefaultStateDesignerHeight;
+                }
+                else
+                {
+                    Fx.Assert(false, "We expect GetContainer always returns a VirtualizingContainer.");
+                }
+
+
+                element.MouseEnter += new MouseEventHandler(OnChildElementMouseEnter);
+                element.MouseLeave += new MouseEventHandler(OnChildElementMouseLeave);
+                ((FrameworkElement)element).SizeChanged += new SizeChangedEventHandler(OnChildElementSizeChanged);
+                this.modelItemToUIElement.Add(model, element);
+                this.PopulateConnectionPoints(element);
+
+                object locationOfShape = this.ViewStateService.RetrieveViewState(model, ShapeLocationViewStateKey);
+                object sizeOfShape = this.ViewStateService.RetrieveViewState(model, ShapeSizeViewStateKey);
+                if (locationOfShape != null)
+                {
+                    Point locationPt = (Point)locationOfShape;
+                    FreeFormPanel.SetLocation(element, locationPt);
+                    this.shapeLocations.Add(locationPt);
+                }
+                if (sizeOfShape != null)
+                {
+                    Size size = (Size)sizeOfShape;
+                    FreeFormPanel.SetChildSize(element, size);
+                    VirtualizedContainerService.VirtualizingContainer virtualizingContainer = element as VirtualizedContainerService.VirtualizingContainer;
+                    if (virtualizingContainer != null)
+                    {
+                        virtualizingContainer.MinWidth = size.Width;
+                        virtualizingContainer.MinHeight = size.Height;
+                    }
+                }
+            }
+            return element;
+        }
+
+        void AddStateVisuals(IList<ModelItem> modelItemCollection)
+        {
+            List<UIElement> viewsAdded = new List<UIElement>();
+            foreach (ModelItem modelItem in modelItemCollection)
+            {
+                if (!this.modelItemToUIElement.ContainsKey(modelItem))
+                {
+                    viewsAdded.Add(ProcessAndGetModelView(modelItem));
+                }
+                else if (!this.panel.Children.Contains(this.modelItemToUIElement[modelItem]))
+                {
+                    viewsAdded.Add(this.modelItemToUIElement[modelItem]);
+                }
+            }
+            foreach (UIElement view in viewsAdded)
+            {
+                this.panel.Children.Add(view);
+            }
+
+            // We need to wait until after the state visuals are added and displayed.
+            this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
+            {
+                if (!suppressAddingConnectorsWhenAddingStateVisuals && this.populated)
+                {
+                    ModelItem stateMachineModelItem = null;
+                    foreach (UIElement view in viewsAdded)
+                    {
+                        ModelItem stateModelItem = StateContainerEditor.GetModelItemFromView(view);
+                        this.AddChildTransitionVisualsToStateMachineEditor(stateModelItem);
+                        if (stateMachineModelItem == null)
+                        {
+                            stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(stateModelItem);
+                        }
+                        if (stateMachineModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].Value == stateModelItem)
+                        {
+                            this.AddInitialNodeConnector(view);
+                        }
+                    }
+                }
+            }));
+
+        }
+
+        void RemoveStateVisual(UIElement removedStateDesigner)
+        {
+            HashSet<Connector> connectorsToDelete = new HashSet<Connector>();
+            ModelService modelService = this.Context.Services.GetService<ModelService>();
+            List<UIElement> removedStateDesigners = new List<UIElement>();
+            removedStateDesigners.Add(removedStateDesigner);
+
+            StateContainerEditor stateMachineEditor = this.GetStateMachineContainerEditor();
+            foreach (UIElement designer in removedStateDesigners)
+            {
+                if (stateMachineEditor.activeSrcConnectionPoint != null)
+                {
+                    List<ConnectionPoint> connectionPoints = GetConnectionPoints(designer);
+                    if (connectionPoints.Contains(stateMachineEditor.activeSrcConnectionPoint))
+                    {
+                        stateMachineEditor.activeSrcConnectionPoint = null;
+                        RemoveAdorner(stateMachineEditor.panel, typeof(ConnectorCreationAdorner));
+                    }
+                }
+                if (stateMachineEditor.lastConnectionPointMouseUpElement == designer)
+                {
+                    stateMachineEditor.lastConnectionPointMouseUpElement = null;
+                }
+                connectorsToDelete.UnionWith(GetAttachedConnectors(designer));
+            }
+
+            // Remove any connector visuals attached to this shape. This is required for the scenarios as follows:
+            // Copy and paste two connected States into StateMachine and undo the paste.
+            // The Transition is not removed as a model change. Hence the connector visual will remain dangling on the designer.
+            foreach (Connector connector in connectorsToDelete)
+            {
+                this.Remove(connector);
+            }
+
+            ModelItem modelItem = ((VirtualizedContainerService.VirtualizingContainer)removedStateDesigner).ModelItem;
+            this.modelItemToUIElement.Remove(modelItem);
+            removedStateDesigner.MouseEnter -= new MouseEventHandler(OnChildElementMouseEnter);
+            removedStateDesigner.MouseLeave -= new MouseEventHandler(OnChildElementMouseLeave);
+            ((FrameworkElement)removedStateDesigner).SizeChanged -= new SizeChangedEventHandler(OnChildElementSizeChanged);
+
+            this.panel.Children.Remove(removedStateDesigner);
+
+            // deselect removed item
+            if (this.Context != null)
+            {
+                HashSet<ModelItem> selectedItems = new HashSet<ModelItem>(this.Context.Items.GetValue<Selection>().SelectedObjects);
+                if (selectedItems.Contains(modelItem))
+                {
+                    Selection.Toggle(this.Context, modelItem);
+                }
+            }
+
+            object locationOfShape = this.ViewStateService.RetrieveViewState(modelItem, StateContainerEditor.ShapeLocationViewStateKey);
+            if (locationOfShape != null)
+            {
+                this.shapeLocations.Remove((Point)locationOfShape);
+            }
+        }
+
+        #endregion
+
+        #region TransitionVisualsAndConnector
+
+        void AddTransitionVisual(ModelItem transitionModelItem)
+        {
+            ModelItem sourceState = StateContainerEditor.GetParentStateModelItemForTransition(transitionModelItem);
+            ModelItem destinationState = transitionModelItem.Properties[TransitionDesigner.ToPropertyName].Value;
+            UIElement sourceDesigner = this.modelItemToUIElement[sourceState];
+            UIElement destinationDesigner = this.modelItemToUIElement[destinationState];
+            if (sourceDesigner.IsDescendantOf(this) && destinationDesigner.IsDescendantOf(this))
+            {
+                this.AddConnector(sourceDesigner, destinationDesigner, transitionModelItem);
+            }
+        }
+
+        void AddTransitionVisuals(IList<ModelItem> transitionModelItemCollection)
+        {
+            foreach (ModelItem transitionModelItem in transitionModelItemCollection)
+            {
+                this.AddTransitionVisual(transitionModelItem);
+            }
+        }
+
+        void AddChildTransitionVisualsToStateMachineEditor(ModelItem stateModelItem)
+        {
+            Fx.Assert(stateModelItem.ItemType == typeof(State), "The ModelItem should be a State.");
+            List<ModelItem> transitions = new List<ModelItem>();
+            transitions.AddRange(stateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection);
+            this.GetStateMachineContainerEditor().AddTransitionVisuals(transitions);
+        }
+
+        Connector CreateConnector(ConnectionPoint srcConnPoint, ConnectionPoint destConnPoint, PointCollection points, ModelItem connectorModelItem)
+        {
+            bool isTransition = connectorModelItem != null && connectorModelItem.ItemType == typeof(Transition);
+            Connector connector;
+            if (isTransition)
+            {
+                connector = new ConnectorWithStartDot();
+            }
+            else
+            {
+                connector = new ConnectorWithoutStartDot();
+            }
+
+            connector.FocusVisualStyle = null;
+            connector.Focusable = true;
+            DesignerView.SetCommandMenuMode(connector, CommandMenuMode.NoCommandMenu);
+            if (isTransition)
+            {
+                SetConnectorLabel(connector, connectorModelItem);
+                SetConnectorStartDotToolTip(connector.StartDot, connectorModelItem);
+                connector.HighlightOnHover = true;
+                connector.ToolTip = new StateConnectionPointToolTip();
+                connector.StartDot.MouseDown += new MouseButtonEventHandler(OnConnectorStartDotMouseDown);
+                connector.StartDot.MouseUp += new MouseButtonEventHandler(OnConnectorStartDotMouseUp);
+            }
+            AutomationProperties.SetName(connector, SR.ConnectionAutomationPropertiesName);
+            connector.GotKeyboardFocus += new KeyboardFocusChangedEventHandler(OnConnectorGotKeyboardFocus);
+            connector.RequestBringIntoView += new RequestBringIntoViewEventHandler(OnConnectorRequestBringIntoView);
+            connector.GotFocus += new RoutedEventHandler(OnConnectorGotFocus);
+            connector.MouseDoubleClick += new MouseButtonEventHandler(OnConnectorMouseDoubleClick);
+            connector.MouseDown += new MouseButtonEventHandler(OnConnectorMouseDown);
+            connector.KeyDown += new KeyEventHandler(OnConnectorKeyDown);
+            connector.ContextMenuOpening += new ContextMenuEventHandler(OnConnectorContextMenuOpening);
+            SetConnectorSrcDestConnectionPoints(connector, srcConnPoint, destConnPoint);
+            StateContainerEditor.SetConnectorModelItem(connector, connectorModelItem);
+            connector.Unloaded += new RoutedEventHandler(OnConnectorUnloaded);
+            connector.Points = points;
+            connector.AutoSplitContainer = this;
+
+            if (connectorModelItem.ItemType == typeof(Transition))
+            {
+                int srcConnectionPointIndex = StateContainerEditor.GetConnectionPoints(srcConnPoint.ParentDesigner).IndexOf(srcConnPoint);
+                int destConnectionPointIndex = StateContainerEditor.GetConnectionPoints(destConnPoint.ParentDesigner).IndexOf(destConnPoint);
+                this.ViewStateService.StoreViewState(connectorModelItem, SrcConnectionPointIndexStateKey, srcConnectionPointIndex);
+                this.ViewStateService.StoreViewState(connectorModelItem, DestConnectionPointIndexStateKey, destConnectionPointIndex);
+            }
+
+            return connector;
+        }
+
+        private void PopulateVirtualizingContainer(ModelItem item)
+        {
+            // For a VirtualizedContainer ModelItem, if it is newly created, its View is null.
+            // Otherwise its View is still the old view which does not belong to the current stateContainerEditor.
+            if (item != null && (item.View == null || DragDropHelper.GetCompositeView((WorkflowViewElement)item.View) != (UIElement)this))
+            {
+                UIElement element;
+                if (modelItemToUIElement.TryGetValue(item, out element) && element is VirtualizedContainerService.VirtualizingContainer)
+                {
+                    VirtualizedContainerService.VirtualizingContainer container = element as VirtualizedContainerService.VirtualizingContainer;
+                    container.Populate();
+                }
+            }
+        }
+
+        private bool IsRightToLeft
+        {
+            get
+            {
+                if (!this.isRightToLeft.HasValue)
+                {
+                    this.isRightToLeft = FreeFormPanelUtilities.IsRightToLeft(this.stateContainerGrid);
+                }
+
+                return this.isRightToLeft.Value;
+            }
+        }
+
+        static bool IsViewStateValid(PointCollection locationPts)
+        {
+            return locationPts.All<Point>((p) => { return p.X.IsNoLessThan(0) && p.Y.IsNoLessThan(0); });
+        }
+
+        // Create a connector from the view state of the connector model item
+        Connector CreateConnectorByConnectorModelItemViewState(
+            UIElement source,
+            UIElement dest,
+            ModelItem connectorModelItem)
+        {
+            Connector connector = null;
+            object connectorLocation = this.ViewStateService.RetrieveViewState(connectorModelItem, ConnectorLocationViewStateKey);
+            PointCollection locationPts = connectorLocation as PointCollection;
+            if (locationPts != null)
+            {
+                ConnectionPoint srcConnPoint = null, destConnPoint = null;
+                if (connectorModelItem.ItemType == typeof(Transition))
+                {
+                    object srcConnPointIndex = this.ViewStateService.RetrieveViewState(connectorModelItem, SrcConnectionPointIndexStateKey);
+                    object destConnPointIndex = this.ViewStateService.RetrieveViewState(connectorModelItem, DestConnectionPointIndexStateKey);
+
+                    if (srcConnPointIndex != null)
+                    {
+                        List<ConnectionPoint> srcConnPoints = GetConnectionPoints(source);
+                        ConnectionPoint viewStateSrcConnPoint = srcConnPoints.ElementAt((int)srcConnPointIndex);
+
+                        if (viewStateSrcConnPoint != null)
+                        {
+                            srcConnPoint = viewStateSrcConnPoint;
+                        }
+                    }
+                    else if (connectorModelItem.Properties[TransitionDesigner.TriggerPropertyName].Value != null)
+                    {
+                        srcConnPoint = StateContainerEditor.GetSrcConnectionPointForSharedTrigger(source, connectorModelItem);
+                    }
+
+                    if (destConnPointIndex != null)
+                    {
+                        List<ConnectionPoint> destConnPoints = GetConnectionPoints(dest);
+                        ConnectionPoint viewStateDestConnPoint = destConnPoints.ElementAt((int)destConnPointIndex);
+
+                        if (viewStateDestConnPoint != null && GetEmptyConnectionPoints(dest).Contains(viewStateDestConnPoint))
+                        {
+                            destConnPoint = viewStateDestConnPoint;
+                        }
+                    }
+                }
+                if (srcConnPoint == null)
+                {
+                    srcConnPoint = GetConnectionPoint(source, locationPts[0]);
+                }
+
+                if (destConnPoint == null)
+                {
+                    destConnPoint = GetConnectionPoint(dest, locationPts[locationPts.Count - 1]);
+                }
+
+                bool shouldReroute = false;
+                if (srcConnPoint == null && destConnPoint == null)
+                {
+                    StateContainerEditor.GetEmptySrcDestConnectionPoints(source, dest, out srcConnPoint, out destConnPoint);
+                    shouldReroute = true;
+                }
+                else if (srcConnPoint == null && destConnPoint != null)
+                {
+                    List<ConnectionPoint> srcConnectionPoints = GetEmptyConnectionPoints(source);
+                    if (srcConnectionPoints.Count > 0)
+                    {
+                        srcConnPoint = StateContainerEditor.GetClosestConnectionPointNotOfType(destConnPoint, srcConnectionPoints, ConnectionPointKind.Incoming);
+                    }
+                    shouldReroute = true;
+                }
+                else if (destConnPoint == null && srcConnPoint != null)
+                {
+                    List<ConnectionPoint> destConnectionPoints = GetEmptyConnectionPoints(dest);
+                    if (destConnectionPoints.Count > 0)
+                    {
+                        destConnPoint = StateContainerEditor.GetClosestConnectionPointNotOfType(srcConnPoint, destConnectionPoints, ConnectionPointKind.Outgoing);
+                    }
+                    shouldReroute = true;
+                }
+                if (srcConnPoint != null && destConnPoint != null)
+                {
+                    if (shouldReroute || !IsViewStateValid(locationPts))
+                    {
+                        PointCollection connectorPoints = new PointCollection(ConnectorRouter.Route(this.panel, srcConnPoint, destConnPoint));
+                        this.ViewStateService.StoreViewState(connectorModelItem, ConnectorLocationViewStateKey, connectorPoints);
+                        connector = CreateConnector(srcConnPoint, destConnPoint, connectorPoints, connectorModelItem);
+                    }
+                    else
+                    {
+                        connector = this.CreateConnector(srcConnPoint, destConnPoint, locationPts, connectorModelItem);
+                    }
+
+                }
+            }
+            return connector;
+        }
+
+        PointCollection CreatePointCollectionForAutoConnectOrAutoSplit(UIElement sourceDesigner,
+            UIElement destinationDesigner,
+            ModelItem connectorModelItem,
+            ref ConnectionPoint sourceConnectionPoint,
+            ref ConnectionPoint destinationConnectionPoint)
+        {
+            PointCollection points = null;
+            if (this.activeSrcConnectionPointForAutoSplit != null && this.activeSrcConnectionPointForAutoSplit.ParentDesigner == sourceDesigner)
+            {
+                sourceConnectionPoint = this.activeSrcConnectionPointForAutoSplit;
+                this.activeSrcConnectionPointForAutoSplit = null;
+                destinationConnectionPoint = StateContainerEditor.GetConnectionPointClosestToEdgeMidPoint(destinationDesigner, StateContainerEditor.GetEmptyConnectionPoints(destinationDesigner), this.entryEdgeForAutoSplit);
+            }
+            else if (this.activeSrcConnectionPoint != null && this.activeSrcConnectionPoint.ParentDesigner == sourceDesigner)
+            {
+                sourceConnectionPoint = this.activeSrcConnectionPoint;
+                this.activeSrcConnectionPoint = null;
+            }
+            else
+            {
+                if (connectorModelItem.ItemType == typeof(Transition) && connectorModelItem.Properties[TransitionDesigner.TriggerPropertyName].Value != null)
+                {
+                    sourceConnectionPoint = StateContainerEditor.GetSrcConnectionPointForSharedTrigger(sourceDesigner, connectorModelItem);
+                }
+            }
+
+            if (this.activeDestConnectionPointForAutoSplit != null && this.activeDestConnectionPointForAutoSplit.ParentDesigner == destinationDesigner)
+            {
+                destinationConnectionPoint = this.activeDestConnectionPointForAutoSplit;
+                this.activeDestConnectionPointForAutoSplit = null;
+                sourceConnectionPoint = StateContainerEditor.GetConnectionPointClosestToEdgeMidPoint(sourceDesigner, StateContainerEditor.GetEmptyConnectionPoints(sourceDesigner), this.exitEdgeForAutoSplit);
+            }
+
+            if (sourceConnectionPoint != null && destinationConnectionPoint == null)
+            {
+                destinationConnectionPoint = StateContainerEditor.GetClosestDestConnectionPoint(sourceConnectionPoint, destinationDesigner);
+            }
+            else if (sourceConnectionPoint == null && destinationConnectionPoint != null)
+            {
+                sourceConnectionPoint = StateContainerEditor.GetClosestSrcConnectionPoint(sourceDesigner, destinationConnectionPoint);
+            }
+            else if (sourceConnectionPoint == null && destinationConnectionPoint == null)
+            {
+                StateContainerEditor.GetEmptySrcDestConnectionPoints(sourceDesigner, destinationDesigner, out sourceConnectionPoint, out destinationConnectionPoint);
+            }
+
+            if (sourceConnectionPoint != null && destinationConnectionPoint != null)
+            {
+                points = new PointCollection(ConnectorRouter.Route(this.panel, sourceConnectionPoint, destinationConnectionPoint));
+            }
+            return points;
+        }
+
+        // Create a connector by view state of the connector model item, and if failed, just create a connector using the connection points
+        // of the source and destination designers. Then add the connector created to the free form panel.
+        void AddConnector(
+            UIElement sourceDesigner,
+            UIElement destinationDesigner,
+            ModelItem connectorModelItem,
+            ConnectionPoint sourceConnectionPoint = null,
+            ConnectionPoint destinationConnectionPoint = null)
+        {
+            // Check whether connector already exists.
+            // If users programmatically add state with transition to the stateMachine, AddConnector will be called twice for one connectorModelItem.
+            if (GetConnectorInStateMachine(connectorModelItem) != null)
+            {
+                return;
+            }
+
+            Connector connector = CreateConnectorByConnectorModelItemViewState(sourceDesigner, destinationDesigner, connectorModelItem);
+            if (connector == null)
+            {
+                PointCollection connectorPoints = this.CreatePointCollectionForAutoConnectOrAutoSplit(sourceDesigner, destinationDesigner, connectorModelItem, ref sourceConnectionPoint, ref destinationConnectionPoint);
+                if (connectorPoints != null)
+                {
+                    connector = CreateConnector(sourceConnectionPoint, destinationConnectionPoint, connectorPoints, connectorModelItem);
+                    this.ViewStateService.StoreViewState(connectorModelItem, ConnectorLocationViewStateKey, connectorPoints);
+                }
+            }
+            if (connector != null)
+            {
+                this.panel.Children.Add(connector);
+            }
+        }
+
+        void Remove(Connector connector)
+        {
+            ConnectionPoint srcConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
+            ConnectionPoint destConnectionPoint = FreeFormPanel.GetDestinationConnectionPoint(connector);
+            // Update ConnectionPoints
+            srcConnectionPoint.AttachedConnectors.Remove(connector);
+            destConnectionPoint.AttachedConnectors.Remove(connector);
+
+            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
+            stateMachineContainer.panel.Children.Remove(connector);
+            if (stateMachineContainer.selectedConnector == connector)
+            {
+                stateMachineContainer.ClearSelectedConnector();
+            }
+
+            if (connector is ConnectorWithStartDot)
+            {
+                connector.StartDot.MouseDown -= new MouseButtonEventHandler(OnConnectorStartDotMouseDown);
+                connector.StartDot.MouseUp -= new MouseButtonEventHandler(OnConnectorStartDotMouseUp);
+            }
+
+            connector.GotKeyboardFocus -= new KeyboardFocusChangedEventHandler(OnConnectorGotKeyboardFocus);
+            connector.RequestBringIntoView -= new RequestBringIntoViewEventHandler(OnConnectorRequestBringIntoView);
+            connector.GotFocus -= new RoutedEventHandler(OnConnectorGotFocus);
+            connector.MouseDoubleClick -= new MouseButtonEventHandler(OnConnectorMouseDoubleClick);
+            connector.MouseDown -= new MouseButtonEventHandler(OnConnectorMouseDown);
+            connector.KeyDown -= new KeyEventHandler(OnConnectorKeyDown);
+            connector.ContextMenuOpening -= new ContextMenuEventHandler(OnConnectorContextMenuOpening);
+            connector.Unloaded -= new RoutedEventHandler(OnConnectorUnloaded);
+        }
+
+        #endregion
+
+        #region ConnectionPoint
+
+        MultiBinding GetConnectionPointBinding(FrameworkElement element, double widthFraction, double heightFraction)
+        {
+            Fx.Assert(element != null, "FrameworkElement is null.");
+            MultiBinding bindings = new MultiBinding();
+            Binding sizeBinding = new Binding();
+            sizeBinding.Source = element;
+            sizeBinding.Path = new PropertyPath(FreeFormPanel.ChildSizeProperty);
+            Binding locationBinding = new Binding();
+            locationBinding.Source = element;
+            locationBinding.Path = new PropertyPath(FreeFormPanel.LocationProperty);
+            bindings.Bindings.Add(sizeBinding);
+            bindings.Bindings.Add(locationBinding);
+            bindings.Converter = new ConnectionPointConverter();
+            bindings.ConverterParameter = new List<Object> { widthFraction, heightFraction, element.Margin };
+            return bindings;
+        }
+
+        //widthFraction and heightFraction determine the location of the ConnectionPoint on the UIElement.
+        ConnectionPoint CreateConnectionPoint(UIElement element, double widthFraction, double heightFraction, EdgeLocation location, ConnectionPointKind type)
+        {
+            ConnectionPoint connectionPoint = new ConnectionPoint();
+            connectionPoint.EdgeLocation = location;
+            connectionPoint.PointType = type;
+            connectionPoint.ParentDesigner = element;
+            connectionPoint.IsEnabled = false;
+            BindingOperations.SetBinding(connectionPoint, ConnectionPoint.LocationProperty, GetConnectionPointBinding(element as FrameworkElement, widthFraction, heightFraction));
+            return connectionPoint;
+        }
+
+        void PopulateConnectionPoints(UIElement view)
+        {
+            view.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
+            List<ConnectionPoint> connectionPoints = new List<ConnectionPoint>();
+
+            const double connectionPointRatio = 0.05;
+            ConnectionPointKind connectionPointType = ConnectionPointKind.Default;
+            if (view is VirtualizedContainerService.VirtualizingContainer && IsFinalState(((VirtualizedContainerService.VirtualizingContainer)view).ModelItem))
+            {
+                connectionPointType = ConnectionPointKind.Incoming;
+            }
+            else if (view is StartSymbol)
+            {
+                connectionPointType = ConnectionPointKind.Outgoing;
+            }
+
+            for (int ii = 1; ii <= ConnectionPointNum; ii++)
+            {
+                connectionPoints.Add(CreateConnectionPoint(view, 1, ii * connectionPointRatio, EdgeLocation.Right, connectionPointType));
+                connectionPoints.Add(CreateConnectionPoint(view, 0, ii * connectionPointRatio, EdgeLocation.Left, connectionPointType));
+                connectionPoints.Add(CreateConnectionPoint(view, ii * connectionPointRatio, 0, EdgeLocation.Top, connectionPointType));
+                connectionPoints.Add(CreateConnectionPoint(view, ii * connectionPointRatio, 1, EdgeLocation.Bottom, connectionPointType));
+            }
+
+            StateContainerEditor.SetConnectionPoints(view, connectionPoints);
+        }
+
+        List<ConnectionPoint> ConnectionPointsToShow(UIElement element)
+        {
+            bool isCreatingConnector = this.IsCreatingConnector();
+            List<ConnectionPoint> connectionPointsToShow = new List<ConnectionPoint>();
+            if (element is StartSymbol)
+            {
+                // Don't allow moving the start of a transition to the initial node.
+                if (isCreatingConnector || this.IsMovingStartOfConnectorForTransition())
+                {
+                    return connectionPointsToShow;
+                }
+                // Don't allow creating more than one connectors from the initial node.
+                if ((StateContainerEditor.GetOutgoingConnectors(element).Count > 0) && !this.IsMovingStartOfConnectorFromInitialNode())
+                {
+                    return connectionPointsToShow;
+                }
+            }
+            else if (element is VirtualizedContainerService.VirtualizingContainer)
+            {
+                VirtualizedContainerService.VirtualizingContainer container = (VirtualizedContainerService.VirtualizingContainer)element;
+
+                // Don't allow setting final state as the initial state
+                if (IsFinalState(container.ModelItem) && this.IsCreatingConnectorFromInitialNode())
+                {
+                    return connectionPointsToShow;
+                }
+                // Don't allow moving the start of the initial node connector to a state
+                if (this.IsMovingStartOfConnectorFromInitialNode())
+                {
+                    return connectionPointsToShow;
+                }
+            }
+
+            List<ConnectionPoint> connectionPoints = StateContainerEditor.GetConnectionPoints(element);
+            if (isCreatingConnector)
+            {
+                connectionPointsToShow.AddRange(connectionPoints.Where<ConnectionPoint>(
+                    (p) => { return p.PointType != ConnectionPointKind.Outgoing && p.AttachedConnectors.Count == 0; }));
+            }
+            else
+            {
+                connectionPointsToShow.AddRange(connectionPoints.Where<ConnectionPoint>(
+                    (p) => { return p.PointType != ConnectionPointKind.Incoming && p.AttachedConnectors.Count == 0; }));
+            }
+
+            return connectionPointsToShow;
+        }
+
+        private void RemoveConnectionPointsAdorner(UIElement adornedElement)
+        {
+            IEnumerable<Adorner> adornersRemoved = RemoveAdorner(adornedElement, typeof(ConnectionPointsAdorner));
+            Fx.Assert(adornersRemoved.Count() <= 1, "There should be at most one ConnectionPointsAdorner");
+            if (adornersRemoved.Count() == 1)
+            {
+                ConnectionPointsAdorner adorner = (ConnectionPointsAdorner)adornersRemoved.First();
+                Fx.Assert(object.Equals(this.activeConnectionPointsAdorner, adorner), "The adorner removed should be the same as the active adorner.");
+                this.activeConnectionPointsAdorner = null;
+                foreach (ConnectionPoint connectionPoint in adorner.ConnectionPoints)
+                {
+                    connectionPoint.IsEnabled = false;
+                    if (object.Equals(this.activeConnectionPoint, connectionPoint))
+                    {
+                        this.activeConnectionPoint = null;
+                    }
+                }
+            }
+        }
+
+        private List<ConnectionPoint> GetAvailableConnectionPoint(UIElement designer)
+        {
+            List<ConnectionPoint> connectionPoints = new List<ConnectionPoint>(StateContainerEditor.GetConnectionPoints(designer));
+            List<ConnectionPoint> usedConnectionPoints = new List<ConnectionPoint>();
+            foreach (ConnectionPoint connectionPoint in connectionPoints.Reverse<ConnectionPoint>())
+            {
+                if (connectionPoint.AttachedConnectors.Count > 0)
+                {
+                    usedConnectionPoints.Add(connectionPoint);
+                    connectionPoints.Remove(connectionPoint);
+                }
+            }
+
+            // The active connection point may haven't had connector yet
+            if (connectionPoints.Contains(this.activeSrcConnectionPoint))
+            {
+                connectionPoints.Remove(this.activeSrcConnectionPoint);
+                usedConnectionPoints.Add(this.activeSrcConnectionPoint);
+            }
+
+            foreach (ConnectionPoint connectionPoint in connectionPoints.Reverse<ConnectionPoint>())
+            {
+                foreach (ConnectionPoint usedConnectionPoint in usedConnectionPoints)
+                {
+                    if (DesignerGeometryHelper.ManhattanDistanceBetweenPoints(usedConnectionPoint.Location, connectionPoint.Location) < ConnectionPointMargin)
+                    {
+                        connectionPoints.Remove(connectionPoint);
+                        break;
+                    }
+                }
+            }
+            return connectionPoints;
+        }
+
+
+        private void UpdateActiveConnectionPoint(MouseEventArgs e)
+        {
+            List<ConnectionPoint> connectionPoints = GetAvailableConnectionPoint(this.activeConnectionPointsAdorner.AdornedElement);
+            Point mousePosition = e.GetPosition(this.GetStateMachineContainerEditor());
+            double minDist;
+            ConnectionPoint closestConnectionPoint = ConnectionPoint.GetClosestConnectionPoint(connectionPoints, mousePosition, out minDist);
+            if (closestConnectionPoint == null)
+            {
+                return;
+            }
+
+            foreach (ConnectionPoint connectionPoint in this.activeConnectionPointsAdorner.ConnectionPoints)
+            {
+                if (object.Equals(connectionPoint, closestConnectionPoint))
+                {
+                    connectionPoint.IsEnabled = true;
+                    this.activeConnectionPoint = connectionPoint;
+                }
+                else
+                {
+                    connectionPoint.IsEnabled = false;
+                    if (object.Equals(connectionPoint, this.activeConnectionPoint))
+                    {
+                        this.activeConnectionPoint = null;
+                    }
+                }
+            }
+
+            this.activeConnectionPointsAdorner.InvalidateVisual();
+        }
+
+        #endregion
+
+        #region ChildElementEventHandlers
+
+        void OnChildElementMouseEnter(object sender, MouseEventArgs e)
+        {
+            UIElement senderElement = sender as UIElement;
+            if (senderElement != null && !this.IsReadOnly)
+            {
+                if (senderElement is VirtualizedContainerService.VirtualizingContainer)
+                {
+                    VirtualizedContainerService.VirtualizingContainer stateDesigner =
+                        VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(Mouse.DirectlyOver as DependencyObject);
+                    // We don't want to show the connection points if the mouse is not directly over this state
+                    if (stateDesigner != senderElement)
+                    {
+                        return;
+                    }
+                }
+
+                AddConnectionPointsAdorner(senderElement);
+
+                // Remove the adorner on the state designer when entering its child
+                if (this.ModelItem.ItemType == typeof(State))
+                {
+                    VirtualizedContainerService.VirtualizingContainer parent =
+                        VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(this);
+                    this.RemoveConnectionPointsAdorner(parent);
+                }
+            }
+        }
+
+        void AddConnectionPointsAdorner(UIElement element)
+        {
+            bool isSelected = false;
+            if (element is VirtualizedContainerService.VirtualizingContainer)
+            {
+                isSelected = (((Selection)this.Context.Items.GetValue<Selection>()).SelectedObjects as ICollection<ModelItem>).Contains(((VirtualizedContainerService.VirtualizingContainer)element).ModelItem);
+            }
+            ConnectionPointsAdorner connectionPointsAdorner = new StateMachineConnectionPointsAdorner(element, ConnectionPointsToShow(element), isSelected);
+            if ((element is VirtualizedContainerService.VirtualizingContainer) && ((VirtualizedContainerService.VirtualizingContainer)element).ModelItem.ItemType == typeof(State))
+            {
+                connectionPointsAdorner.ToolTip = SR.TransitionConnectionPointTooltip;
+            }
+            else if (element is StartSymbol)
+            {
+                connectionPointsAdorner.ToolTip = SR.InitialStateConnectionPointTooltip;
+            }
+
+            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(element);
+            Fx.Assert(adornerLayer != null, "Cannot get AdornerLayer.");
+            adornerLayer.Add(connectionPointsAdorner);
+            // The outmostEditor should handle all the connection point related events for all its descendants
+            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
+            connectionPointsAdorner.MouseDown += new MouseButtonEventHandler(stateMachineContainer.OnConnectionPointMouseDown);
+            connectionPointsAdorner.MouseUp += new MouseButtonEventHandler(stateMachineContainer.OnConnectionPointMouseUp);
+            connectionPointsAdorner.MouseLeave += new MouseEventHandler(stateMachineContainer.OnConnectionPointMouseLeave);
+
+            this.activeConnectionPointsAdorner = connectionPointsAdorner;
+        }
+
+        void OnChildElementMouseLeave(object sender, MouseEventArgs e)
+        {
+            bool removeConnectionPointsAdorner = true;
+            if (Mouse.DirectlyOver != null)
+            {
+                removeConnectionPointsAdorner = !typeof(ConnectionPointsAdorner).IsAssignableFrom(Mouse.DirectlyOver.GetType());
+            }
+            if (removeConnectionPointsAdorner)
+            {
+                this.RemoveConnectionPointsAdorner(sender as UIElement);
+
+                // Add connection points adorner to its containing state
+                VirtualizedContainerService.VirtualizingContainer stateDesigner = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(this);
+                StateContainerEditor parentContainer = VisualTreeUtils.FindVisualAncestor<StateContainerEditor>(stateDesigner);
+                if (stateDesigner != null && parentContainer != null && !parentContainer.IsReadOnly)
+                {
+                    this.AddConnectionPointsAdorner(stateDesigner);
+                }
+            }
+        }
+
+        void OnChildElementSizeChanged(object sender, SizeChangedEventArgs e)
+        {
+            VirtualizedContainerService.VirtualizingContainer view = sender as VirtualizedContainerService.VirtualizingContainer;
+
+            if (view != null)
+            {
+                // Such size changed events are a result of changes already committed in the UI. Hence we do not want to react to such view state changes.
+                // Using internalViewStateChange flag for that purpose.
+                this.internalViewStateChange = true;
+                ModelItem storageModelItem = view.ModelItem;
+                this.ViewStateService.StoreViewState(storageModelItem, ShapeSizeViewStateKey, ((UIElement)sender).DesiredSize);
+                this.internalViewStateChange = false;
+            }
+        }
+
+        #endregion
+
+        #region ConnectorEventHandlers
+
+        void OnConnectorStartDotMouseUp(object sender, MouseButtonEventArgs e)
+        {
+            this.activeSrcConnectionPoint = null;
+            RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+        }
+
+        void OnConnectorStartDotMouseDown(object sender, MouseButtonEventArgs e)
+        {
+            DependencyObject startDot = (DependencyObject)sender;
+            Connector connector = VisualTreeUtils.FindVisualAncestor<Connector>(startDot);
+            this.activeSrcConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
+            e.Handled = true;
+        }
+
+
+        void OnConnectorMouseDown(object sender, MouseButtonEventArgs e)
+        {
+            Connector connector = (Connector)sender;
+            if (this.panel.Children.Contains(connector))
+            {
+                this.selectedConnector = connector;
+            }
+
+            // In order to not let WorkflowViewElement handle the event, which would cause the
+            // ConnectorEditor to be removed.
+            e.Handled = true;
+        }
+
+
+        void OnConnectorUnloaded(object sender, RoutedEventArgs e)
+        {
+            ModelItem primarySelection = this.Context.Items.GetValue<Selection>().PrimarySelection;
+            if (object.Equals(primarySelection, StateContainerEditor.GetConnectorModelItem(sender as DependencyObject)))
+            {
+                if (primarySelection != null)
+                {
+                    Selection.Toggle(this.Context, primarySelection);
+                }
+            }
+        }
+
+        // Marking e.Handled = true to avoid scrolling in large workflows to bring the
+        // area of a connector in the center of the view region.
+        void OnConnectorRequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
+        {
+            e.Handled = true;
+        }
+
+        // Marking e.Handled true for the case where a connector is clicked.
+        // This is to prevent WorkflowViewElement class from making StateMachine as the current selection.
+        void OnConnectorGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
+        {
+            e.Handled = true;
+        }
+
+        void OnConnectorGotFocus(object sender, RoutedEventArgs e)
+        {
+            Connector connector = e.Source as Connector;
+
+            if (this.panel.connectorEditor == null || !connector.Equals(this.panel.connectorEditor.Connector))
+            {
+                this.panel.RemoveConnectorEditor();
+                this.panel.connectorEditor = new ConnectorEditor(this.panel, connector);
+            }
+
+            if (this.panel.Children.Contains(connector))
+            {
+                this.updatingSelectedConnector = true;
+                ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(connector);
+                Selection newSelection = new Selection();
+                if (connectorModelItem != null && connectorModelItem.ItemType == typeof(Transition))
+                {
+                    newSelection = new Selection(connectorModelItem);
+                }
+                this.Context.Items.SetValue(newSelection);
+                this.selectedConnector = connector;
+                this.updatingSelectedConnector = false;
+
+                if (connectorModelItem.ItemType == typeof(Transition))
+                {
+                    // Populate the source and destination States's View if it is still in Virtualized mode.
+                    ModelItem destinationState = connectorModelItem.Properties[TransitionDesigner.ToPropertyName].Value;
+                    PopulateVirtualizingContainer(destinationState);
+                    ModelItem sourceState = StateContainerEditor.GetParentStateModelItemForTransition(connectorModelItem);
+                    PopulateVirtualizingContainer(sourceState);
+
+                    // Assign its destination State's View on the connector model item for copy/paste function.
+                    ((IModelTreeItem)connectorModelItem).SetCurrentView(destinationState.View);
+                }
+
+                e.Handled = true;
+            }
+        }
+
+        private void OnSelectionChanged(Selection selection)
+        {
+            // If selection changed, remove ConnectorEditor if existed.
+            // Only if the selection changed is caused by adding ConnectorEditor when OnConnectorGotFocus.
+            if (!this.updatingSelectedConnector && this.panel != null && this.panel.connectorEditor != null)
+            {
+                this.panel.RemoveConnectorEditor();
+            }
+        }
+
+        void OnConnectorKeyDown(object sender, KeyEventArgs e)
+        {
+            if (e.Key == Key.Enter || e.Key == Key.Return)
+            {
+                this.DesignerView.MakeRootDesigner(StateContainerEditor.GetConnectorModelItem(sender as DependencyObject));
+                e.Handled = true;
+            }
+        }
+
+        void OnConnectorMouseDoubleClick(object sender, MouseButtonEventArgs e)
+        {
+            if (e.ChangedButton == MouseButton.Left)
+            {
+                ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(sender as DependencyObject);
+                if (connectorModelItem != null && connectorModelItem.ItemType == typeof(Transition))
+                {
+                    this.DesignerView.MakeRootDesigner(connectorModelItem);
+                    e.Handled = true;
+                }
+            }
+        }
+
+        void OnConnectorContextMenuOpening(object sender, ContextMenuEventArgs e)
+        {
+            // Disable context menu
+            e.Handled = true;
+        }
+
+        #endregion
+
+        #region ConnectionPointEventHandlers
+
+        void OnConnectionPointMouseDown(object sender, MouseButtonEventArgs e)
+        {
+            UIElement srcElement = ((Adorner)sender).AdornedElement as UIElement;
+            this.activeSrcConnectionPoint = ConnectionPointHitTest(srcElement, e.GetPosition(this.panel));
+
+            if (this.activeSrcConnectionPoint != null &&
+                !this.activeSrcConnectionPoint.ParentDesigner.IsKeyboardFocusWithin)
+            {
+                // If a floating annotation is visible, it needs to lose the keyboard focus
+                // to hide itself again (bug 200739). Therefore, selecting the src connection
+                // point would give the keyboard focus back to its source parent state.
+                Keyboard.Focus(VirtualizedContainerService.TryGetVirtualizedElement(this.activeSrcConnectionPoint.ParentDesigner));
+            }
+
+            e.Handled = true;
+        }
+
+        void OnConnectionPointMouseLeave(object sender, MouseEventArgs e)
+        {
+            UIElement adornedElement = ((Adorner)sender).AdornedElement as UIElement;
+            this.RemoveConnectionPointsAdorner(adornedElement);
+        }
+
+        void OnConnectionPointMouseUp(object sender, MouseButtonEventArgs e)
+        {
+            UIElement dest = ((Adorner)sender).AdornedElement as UIElement;
+            if (this.activeSrcConnectionPoint != null)
+            {
+                ConnectionPoint destConnectionPoint = ConnectionPointHitTest(dest, e.GetPosition(this.panel));
+                if (destConnectionPoint != null && !this.activeSrcConnectionPoint.Equals(destConnectionPoint))
+                {
+                    ConnectorCreationResult result = CreateConnectorGesture(this.activeSrcConnectionPoint, destConnectionPoint, null, false);
+                    if (result != ConnectorCreationResult.Success)
+                    {
+                        StateContainerEditor.ReportConnectorCreationError(result);
+                    }
+                }
+                this.activeSrcConnectionPoint = null;
+                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+            }
+            else
+            {
+                //This will cause the FreeFormPanel to handle the event and is useful while moving a connector end point.
+                this.lastConnectionPointMouseUpElement = dest;
+                dest.RaiseEvent(e);
+            }
+            this.RemoveConnectionPointsAdorner(dest);
+        }
+
+        #endregion
+
+        #region FreeFormPanelEventHandlers
+
+        void OnFreeFormPanelLocationChanged(object sender, System.Activities.Presentation.FreeFormEditing.LocationChangedEventArgs e)
+        {
+            Fx.Assert(sender is UIElement, "Sender should be of type UIElement");
+            Connector movedConnector = sender as Connector;
+            if (movedConnector != null)
+            {
+                //ViewState is undoable only when a user gesture moves a connector. If the FreeFormPanel routes a connector,
+                //the change is not undoable.
+                bool isUndoableViewState = false;
+                ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(movedConnector);
+                PointCollection existingViewState = this.ViewStateService.RetrieveViewState(connectorModelItem, ConnectorLocationViewStateKey) as PointCollection;
+                if (existingViewState != null && existingViewState.Count > 0 && movedConnector.Points.Count > 0
+                    && existingViewState[0].Equals(movedConnector.Points[0]) && existingViewState[existingViewState.Count - 1].Equals(movedConnector.Points[movedConnector.Points.Count - 1]))
+                {
+                    isUndoableViewState = true;
+                }
+                StoreConnectorLocationViewState(movedConnector, isUndoableViewState);
+            }
+            else
+            {
+                //This is called only when a shape without ViewState is auto-layout'd by the FreeFormPanel.
+                UIElement view = sender as UIElement;
+
+                if (view != null)
+                {
+                    StoreShapeLocationViewState(view, e.NewLocation);
+                }
+            }
+        }
+
+        void UpdateStateMachineOnConnectorMoved(ConnectionPoint knownConnectionPoint, Point newPoint, Connector movedConnector, bool isConnectorStartMoved)
+        {
+            HitTestResult hitTestResult = VisualTreeHelper.HitTest(this.panel, newPoint);
+            if (hitTestResult == null)
+            {
+                return;
+            }
+
+            UIElement newViewElement = null;
+            ConnectionPoint newConnectionPoint = null;
+
+            //The case where the Connector is dropped on a ConnectionPoint.
+            if (this.lastConnectionPointMouseUpElement != null)
+            {
+                newConnectionPoint = StateContainerEditor.ConnectionPointHitTest(this.lastConnectionPointMouseUpElement, newPoint);
+                if (newConnectionPoint != null)
+                {
+                    newViewElement = this.lastConnectionPointMouseUpElement;
+                }
+                this.lastConnectionPointMouseUpElement = null;
+            }
+
+            //The case where the link is dropped on a shape.
+            if (newViewElement == null)
+            {
+                newViewElement = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(hitTestResult.VisualHit);
+            }
+
+            if (newViewElement != null)
+            {
+                if (this.panel.IsAncestorOf(newViewElement))
+                {
+                    using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.MoveLink))
+                    {
+                        // Remove the old connector ModelItem
+                        this.DeleteConnectorModelItem(movedConnector, true);
+                        // Create new connector
+                        ConnectorCreationResult result = ConnectorCreationResult.OtherFailure;
+                        if (!isConnectorStartMoved)
+                        {
+                            if (newConnectionPoint == null)
+                            {
+                                result = CreateConnectorGesture(knownConnectionPoint, newViewElement, movedConnector, false);
+                            }
+                            else
+                            {
+                                result = CreateConnectorGesture(knownConnectionPoint, newConnectionPoint, movedConnector, false);
+                            }
+                        }
+                        else
+                        {
+                            // Don't allow moving the start of the initial node connector to a state
+                            if (!(newViewElement is StateDesigner && StateContainerEditor.IsConnectorFromInitialNode(movedConnector)))
+                            {
+                                if (newConnectionPoint == null)
+                                {
+                                    result = CreateConnectorGesture(newViewElement, knownConnectionPoint, movedConnector, true);
+                                }
+                                else
+                                {
+                                    result = CreateConnectorGesture(newConnectionPoint, knownConnectionPoint, movedConnector, true);
+                                }
+                            }
+                        }
+
+                        if (result == ConnectorCreationResult.Success)
+                        {
+                            es.Complete();
+                        }
+                        else
+                        {
+                            StateContainerEditor.ReportConnectorCreationError(result);
+                            es.Revert();
+                        }
+                    }
+                }
+            }
+        }
+
+        void OnFreeFormPanelConnectorMoved(object sender, ConnectorMovedEventArgs e)
+        {
+            Connector movedConnector = sender as Connector;
+            int movedEndConnectorPointIndex = movedConnector.Points.Count - 1;
+            int newEndConnectorPointIndex = e.NewConnectorLocation.Count - 1;
+
+            if (movedConnector != null)
+            {
+                Fx.Assert(e.NewConnectorLocation.Count > 0, "Invalid connector editor");
+                if (!e.NewConnectorLocation[0].Equals(movedConnector.Points[0]))
+                {
+                    // source moved
+                    ConnectionPoint destConnPoint = FreeFormPanel.GetDestinationConnectionPoint(movedConnector);
+                    UpdateStateMachineOnConnectorMoved(destConnPoint, e.NewConnectorLocation[0], movedConnector, true);
+                }
+                else if (!e.NewConnectorLocation[newEndConnectorPointIndex].Equals(movedConnector.Points[movedEndConnectorPointIndex]))
+                {
+                    // destination moved
+                    ConnectionPoint srcConnPoint = FreeFormPanel.GetSourceConnectionPoint(movedConnector);
+                    Point destPoint = e.NewConnectorLocation[newEndConnectorPointIndex];
+                    UpdateStateMachineOnConnectorMoved(srcConnPoint, destPoint, movedConnector, false);
+                }
+
+                this.selectedConnector = movedConnector;
+            }
+        }
+
+        // This is to keep this.selectedConnector up to date.
+        // Cases included: 1. create a connector, select it and undo, 2. move a connector from one shape to another.
+        void OnFreeFormPanelLayoutUpdated(object sender, EventArgs e)
+        {
+            if (this.selectedConnector != null && !this.panel.Children.Contains(this.selectedConnector))
+            {
+                this.ClearSelectedConnector();
+            }
+        }
+
+        void OnFreeFormPanelRequiredSizeChanged(object sender, RequiredSizeChangedEventArgs e)
+        {
+            this.requiredSize = e.NewRequiredSize;
+            Dispatcher.BeginInvoke(new Action(() =>
+            {
+                if (this.requiredSize.Width > this.StateContainerWidth)
+                {
+                    this.ViewStateService.StoreViewState(
+                        this.ModelItem,
+                        StateContainerEditor.StateContainerWidthViewStateKey,
+                        this.requiredSize.Width);
+                }
+                if (this.requiredSize.Height > this.StateContainerHeight)
+                {
+                    this.ViewStateService.StoreViewState(
+                        this.ModelItem,
+                        StateContainerEditor.StateContainerHeightViewStateKey,
+                        this.requiredSize.Height);
+                }
+            }));
+        }
+
+        #endregion
+
+        #region StateContainerGridEventHandlers
+
+        void OnStateContainerGridMouseLeave(object sender, MouseEventArgs e)
+        {
+            bool endLinkCreation = !IsVisualHit(sender as UIElement, sender as UIElement, e.GetPosition(sender as IInputElement));
+            if (endLinkCreation)
+            {
+                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+                this.activeSrcConnectionPoint = null;
+            }
+        }
+
+        void OnStateContainerGridMouseMove(object sender, MouseEventArgs e)
+        {
+            if (this.activeSrcConnectionPoint != null)
+            {
+                Point[] points = ConnectorRouter.Route(this.panel, this.activeSrcConnectionPoint, e);
+                if (points == null)
+                {
+                    e.Handled = true;
+                    return;
+                }
+                List<Point> segments = new List<Point>(points);
+                // Remove the previous adorner.
+                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+                // Add new adorner.
+                AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.panel);
+                Fx.Assert(adornerLayer != null, "Adorner Layer does not exist");
+                ConnectorCreationAdorner newAdorner = new ConnectorCreationAdorner(this.panel, segments);
+                adornerLayer.Add(newAdorner);
+                e.Handled = true;
+            }
+        }
+
+        void OnStateContainerGridPreviewMouseMove(object sender, MouseEventArgs e)
+        {
+            if (this.activeConnectionPointsAdorner != null)
+            {
+                this.UpdateActiveConnectionPoint(e);
+            }
+
+            // Creating connector
+            if (this.activeSrcConnectionPoint != null)
+            {
+                AutoScrollHelper.AutoScroll(e, this, 1);
+            }
+            // Reconnecting connector
+            else if (this.panel.connectorEditor != null && (this.panel.connectorEditor.IsConnectorEndBeingMoved || this.panel.connectorEditor.IsConnectorStartBeingMoved))
+            {
+                AutoScrollHelper.AutoScroll(e, this, 1);
+            }
+        }
+
+        void OnStateContainerGridPreviewMouseUp(object sender, MouseButtonEventArgs e)
+        {
+            VirtualizedContainerService.VirtualizingContainer destElement = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(e.OriginalSource as DependencyObject);
+            if (destElement != null && destElement.IsPopulated && destElement.Child is StateDesigner)
+            {
+                if (this.activeSrcConnectionPoint != null)
+                {
+                    ConnectorCreationResult result = this.CreateConnectorGesture(this.activeSrcConnectionPoint, destElement, null, false);
+                    if (result != ConnectorCreationResult.Success)
+                    {
+                        StateContainerEditor.ReportConnectorCreationError(result);
+                    }
+                    this.RemoveConnectionPointsAdorner(destElement);
+                }
+            }
+            if (this.activeSrcConnectionPoint != null)
+            {
+                this.activeSrcConnectionPoint = null;
+                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
+            }
+        }
+
+        void SetEndPointsAndInvalidateViewState(Connector connector, Vector offset, bool offsetSrc)
+        {
+            ConnectionPoint srcConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
+            ConnectionPoint destConnectionPoint = FreeFormPanel.GetDestinationConnectionPoint(connector);
+            Point src, dest;
+            if (offsetSrc)
+            {
+                src = Point.Add(FreeFormPanel.GetLocationRelativeToOutmostPanel(srcConnectionPoint), offset);
+                dest = FreeFormPanel.GetLocationRelativeToOutmostPanel(destConnectionPoint);
+            }
+            else
+            {
+                src = FreeFormPanel.GetLocationRelativeToOutmostPanel(srcConnectionPoint);
+                dest = Point.Add(FreeFormPanel.GetLocationRelativeToOutmostPanel(destConnectionPoint), offset);
+            }
+            PointCollection points = new PointCollection();
+            Point invalidPoint = new Point(-1, -1);
+            points.Add(src);
+            points.Add(invalidPoint); // this invalidates the view state
+            points.Add(dest);
+            this.StoreConnectorLocationViewState(StateContainerEditor.GetConnectorModelItem(connector), points, true);
+        }
+
+        void OffsetConnectorViewState(UIElement view, Point oldLocation, Point newLocation, bool offsetNonContainedConnectors)
+        {
+            // There is no need to do anything for the StartSymbol
+            if (view is VirtualizedContainerService.VirtualizingContainer)
+            {
+                Vector offset = new Vector(newLocation.X - oldLocation.X, newLocation.Y - oldLocation.Y);
+
+                // connectors whose dest points are outside the state and the src points are inside/on the state
+                HashSet<Connector> outgoingConnectors = new HashSet<Connector>();
+                // connectors whose src points are outside the state and the dest points are inside/on the state
+                HashSet<Connector> incomingConnectors = new HashSet<Connector>();
+                // connectors whose src points and dest points are both inside/on the state
+                HashSet<ModelItem> containedTransitions = new HashSet<ModelItem>();
+
+                if (view != null)
+                {
+                    // Here the incomingConnectors and outgoingConnectors contains connectors whose src points and dest
+                    // points are both inside/on the state; they will be removed later on
+                    List<Connector> connectors = StateContainerEditor.GetIncomingConnectors(view);
+                    foreach (Connector connector in connectors)
+                    {
+                        incomingConnectors.Add(connector);
+                    }
+                    connectors = StateContainerEditor.GetOutgoingConnectors(view);
+                    foreach (Connector connector in connectors)
+                    {
+                        outgoingConnectors.Add(connector);
+                    }
+                }
+
+                // Add common connectors to the containedConnectors set and remove them
+                // from the outgoingConnectors and incomingConnectors sets
+                foreach (Connector connector in outgoingConnectors.Reverse<Connector>())
+                {
+                    if (incomingConnectors.Contains(connector))
+                    {
+                        containedTransitions.Add(StateContainerEditor.GetConnectorModelItem(connector));
+                        outgoingConnectors.Remove(connector);
+                        incomingConnectors.Remove(connector);
+                    }
+                }
+
+                // For contained connectors, we offset all the points.
+                this.OffsetLocationViewStates(offset, null, containedTransitions, true);
+
+                if (offsetNonContainedConnectors)
+                {
+                    // For incoming connectors, we offset the end point and invalidate the view state.
+                    // This way the start and end point will still connect to the same connection points
+                    // on the source and destination shapes and later on the connector will be rerouted using
+                    // those two fixed points.
+                    foreach (Connector connector in incomingConnectors)
+                    {
+                        this.SetEndPointsAndInvalidateViewState(connector, offset, false);
+                    }
+
+                    // for outgoing connectors, we offset the start point and invalidate the view state.
+                    foreach (Connector connector in outgoingConnectors)
+                    {
+                        this.SetEndPointsAndInvalidateViewState(connector, offset, true);
+                    }
+                }
+                else
+                {                    
+                    HashSet<ModelItem> nonSelfTransitions = new HashSet<ModelItem>();
+
+                    foreach (Connector connector in incomingConnectors)
+                    {
+                        nonSelfTransitions.Add(StateContainerEditor.GetConnectorModelItem(connector));
+                    }
+                    
+                    foreach (Connector connector in outgoingConnectors)
+                    {
+                        nonSelfTransitions.Add(StateContainerEditor.GetConnectorModelItem(connector));
+                    }
+
+                    // Store ViewState for all non-self transitions to support undo/redo.
+                    this.OffsetLocationViewStates(offset, null, nonSelfTransitions, true);
+                }
+            }
+        }
+
+        void OnStateContainerGridDrop(object sender, DragEventArgs e)
+        {
+            ModelItemHelper.TryCreateImmediateEditingScopeAndExecute(this.ModelItem.GetEditingContext(), System.Activities.Presentation.SR.CollectionAddEditingScopeDescription, (es) =>
+            {
+                this.DoStateContainerGridDrop(e, AutoConnectDirections.None, null);
+                if (es != null)
+                {
+                    es.Complete();
+                }
+            });
+        }
+
+        // Returns the last dropped item - used for auto-connect and auto-split where only one item is allowed
+        ModelItem DoStateContainerGridDrop(DragEventArgs e, AutoConnectDirections autoConnectDirection, Connector connectorToSplit)
+        {
+            ModelItem droppedModelItem = null;
+            e.Effects = DragDropEffects.None;
+            IEnumerable<object> droppedObjects = DragDropHelper.GetDroppedObjects(this, e, Context);
+            // Marking the event as being handled. In whichever case we want to route the event, it will be unmarked explicitly.
+            e.Handled = true;
+            List<ModelItem> modelItemsToSelect = new List<ModelItem>();
+
+            Dictionary<WorkflowViewElement, Point> relativeLocations = DragDropHelper.GetDraggedViewElementRelativeLocations(e);
+            foreach (object droppedObject in droppedObjects)
+            {
+                if (droppedObject != null)
+                {
+                    droppedModelItem = droppedObject as ModelItem;
+                    bool isAnchorPointValid = true;
+                    Point anchorPoint = DragDropHelper.GetDragDropAnchorPoint(e);
+
+                    // This is the case of dragging from toolbox
+                    if (anchorPoint.X < 0 && anchorPoint.Y < 0)
+                    {
+                        isAnchorPointValid = false;
+                    }
+                    // This is the case of dragging from the designer surface
+                    else if (droppedModelItem != null)
+                    {
+                        WorkflowViewElement view = droppedModelItem.View as WorkflowViewElement;
+                        anchorPoint.Offset(-relativeLocations[view].X, -relativeLocations[view].Y);
+                    }
+
+                    StateContainerEditor srcContainer = droppedModelItem != null
+                        ? DragDropHelper.GetCompositeView(droppedModelItem.View as WorkflowViewElement) as StateContainerEditor
+                        : null;
+                    bool externalDrop = false;
+                    if (droppedModelItem != null && srcContainer != null && srcContainer.Equals(this))
+                    {
+                        // Internal move
+                        PerformInternalMove(this.modelItemToUIElement[droppedModelItem], e.GetPosition(this.panel), anchorPoint, autoConnectDirection, connectorToSplit);
+                    }
+                    else
+                    {
+                        // External model Item drop
+                        if (droppedModelItem != null)
+                        {
+                            if (droppedModelItem.ItemType == typeof(State) && this.ModelItem.ItemType == typeof(StateMachine))
+                            {
+                                this.InsertState(droppedModelItem);
+                                externalDrop = true;
+                            }
+                        }
+                        // Toolbox drop.
+                        else
+                        {
+                            if (droppedObject.GetType() == typeof(State))
+                            {
+                                if (((State)droppedObject).DisplayName == null)
+                                {
+                                    ((State)droppedObject).DisplayName = GenerateStateName();
+                                }
+
+                                droppedModelItem = InsertState(droppedObject);
+                            }
+                            else if (droppedObject.GetType() == typeof(FinalState))
+                            {
+                                droppedModelItem = InsertState(new State()
+                                {
+                                    DisplayName = DefaultFinalStateDisplayName,
+                                    IsFinal = true
+                                });
+                            }
+                        }
+                        if (droppedModelItem != null)
+                        {
+                            modelItemsToSelect.Add(droppedModelItem);
+                            UIElement view = null;
+                            if (this.modelItemToUIElement.ContainsKey(droppedModelItem))
+                            {
+                                view = this.modelItemToUIElement[droppedModelItem];
+                            }
+                            else
+                            {
+                                view = droppedModelItem.View as WorkflowViewElement;
+                                if (view == null)
+                                {
+                                    view = this.Context.Services.GetService<ViewService>().GetView(droppedModelItem) as WorkflowViewElement;
+                                    ViewUtilities.MeasureView(view as WorkflowViewElement, true);
+                                }
+                            }
+                            // If drag anchor point is beyond the size of the shape being dropped,
+                            if (anchorPoint.X > view.DesiredSize.Width || anchorPoint.Y > view.DesiredSize.Height)
+                            {
+                                isAnchorPointValid = false;
+                            }
+                            Point shapeLocation;
+                            if (autoConnectDirection != AutoConnectDirections.None)
+                            {
+                                shapeLocation = this.CalculateDropLocationForAutoConnect(autoConnectDirection, new Size(DefaultStateDesignerWidth, DefaultStateDesignerHeight));
+                            }
+                            else
+                            {
+                                shapeLocation = StateContainerEditor.SnapVisualToGrid(view, e.GetPosition(this.panel), anchorPoint, isAnchorPointValid);
+                            }
+                            if (connectorToSplit != null)
+                            {
+                                shapeLocation = this.CalculateDropLocationForAutoSplit(e.GetPosition(this.panel), shapeLocation, connectorToSplit, new Size(DefaultStateDesignerWidth, DefaultStateDesignerHeight));
+                            }
+                            object viewState = this.ViewStateService.RetrieveViewState(droppedModelItem, ShapeLocationViewStateKey);
+                            if (externalDrop)
+                            {
+                                Fx.Assert(viewState != null, "item dropped from external should already have view states");
+                                Fx.Assert(droppedModelItem.View != null, "item dropped from extenal should already have view");
+                                VirtualizedContainerService.VirtualizingContainer container = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(droppedModelItem.View);
+                                Fx.Assert(container != null, "container should not be null");
+                                Point oldLocation = (Point)viewState;
+                                oldLocation = srcContainer.panel.GetLocationRelativeToOutmostPanel(oldLocation);
+                                Point newLocation = this.panel.GetLocationRelativeToOutmostPanel(shapeLocation);
+                                // To make sure the connectors are still connected to the connection points
+                                OffsetConnectorViewState(container, oldLocation, newLocation, true);
+                            }
+                            this.StoreShapeLocationViewState(droppedModelItem, shapeLocation);
+                        }
+                    }
+                }
+            }
+
+            DragDropHelper.SetDragDropMovedViewElements(e, new WorkflowViewElement[] { });
+            this.Dispatcher.BeginInvoke(() =>
+                {
+                    bool first = true;
+                    foreach (ModelItem modelItem in modelItemsToSelect)
+                    {
+                        if (first)
+                        {
+                            Keyboard.Focus((IInputElement)modelItem.View);
+                            Selection.SelectOnly(this.Context, modelItem);
+                            first = false;
+                        }
+                        else
+                        {
+                            Selection.Union(this.Context, modelItem);
+                        }
+                    }
+                },
+                DispatcherPriority.ApplicationIdle);
+
+            return droppedModelItem;
+        }
+
+        Point CalculateDropLocationForAutoConnect(AutoConnectDirections autoConnectDirection, Size droppedSize)
+        {
+            return AutoConnectHelper.CalculateDropLocation(droppedSize, this.Panel.CurrentAutoConnectTarget, autoConnectDirection, this.shapeLocations);
+        }
+
+        Point CalculateDropLocationForAutoSplit(Point mousePosition, Point originalDropLocation, Connector connector, Size droppedSize)
+        {
+            return AutoSplitHelper.CalculateDropLocation(mousePosition, originalDropLocation, connector, droppedSize, this.shapeLocations);
+        }
+
+        void OnStateContainerGridDragEnter(object sender, DragEventArgs e)
+        {
+            OnStateContainerGridDrag(sender, e);
+        }
+
+        void OnStateContainerGridDragOver(object sender, DragEventArgs e)
+        {
+            OnStateContainerGridDrag(sender, e);
+        }
+
+        void OnStateContainerGridDrag(object sender, DragEventArgs e)
+        {
+            if (!e.Handled)
+            {
+                if (IsDropAllowed(e))
+                {
+                    e.Effects |= DragDropEffects.Move;
+                }
+                else
+                {
+                    e.Effects = DragDropEffects.None;
+                }
+                e.Handled = true;
+            }
+        }
+
+        private bool IsDropAllowed(DragEventArgs e)
+        {
+            // Considering multiple items drag&drop, use ModelItemsDataFormat instead.
+            IEnumerable<ModelItem> modelItems = e.Data.GetData(DragDropHelper.ModelItemsDataFormat) as IEnumerable<ModelItem>;
+            if (modelItems != null)
+            {
+                foreach (ModelItem modelItem in modelItems)
+                {
+                    if (modelItem.ItemType == typeof(StartNode) && modelItem == this.initialModelItem)
+                    {
+                        // StartNode of current StateMachine allow to drop.
+                    }
+                    else if (modelItem.ItemType == typeof(State) && this.IsStateMachineContainer && StateContainerEditor.AreInSameStateMachine(modelItem, this.ModelItem))
+                    {
+                        // When FinalState has been dropped into a StateMachine, it becomes a State instead. So ignore FinalState type.
+                        // State within the same StateMachine allow to drop.
+                    }
+                    else
+                    {
+                        return false;
+                    }
+                }
+
+                return true;
+            }
+            else if (this.ModelItem.ItemType == typeof(StateMachine) && DragDropHelper.AllowDrop(e.Data, this.Context, typeof(State), typeof(FinalState), typeof(StartNode)))
+            {
+                // Only allow State, FinalState, StartNode to drop into a StateMachine from tool box.
+                return true;
+            }
+
+            return false;
+        }
+
+        void KeyboardMove(Key key)
+        {
+            Vector moveDir = FreeFormPanel.CalculateMovement(key, this.IsRightToLeft);
+            
+            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.ItemMove))
+            {
+                foreach (ModelItem selectedModelItem in this.Context.Items.GetValue<Selection>().SelectedObjects)
+                {
+                    UIElement shapeToMove = this.modelItemToUIElement[selectedModelItem];
+                    Point currentLocation = FreeFormPanel.GetLocation(shapeToMove);
+                    Point newLocation = Point.Add(currentLocation, moveDir);
+                    // Make sure the newLocation is positive.
+                    newLocation.X = FreeFormPanel.ZeroIfNegative(newLocation.X);
+                    newLocation.Y = FreeFormPanel.ZeroIfNegative(newLocation.Y);
+                    if (newLocation == currentLocation)
+                    {
+                        continue;
+                    }
+                    PerformInternalMove(shapeToMove, newLocation, null, AutoConnectDirections.None, null);
+                }
+                es.Complete();
+            }
+        }
+
+        void OnStateContainerGridKeyDown(object sender, KeyEventArgs e)
+        {
+            if (this.activeSrcConnectionPoint != null)
+            {
+                // Ignore Keyboard input when creating connector
+                e.Handled = true;
+                return;
+            }
+
+            Selection currentSelection = this.Context.Items.GetValue<Selection>();
+            if (e.Key == Key.Delete && this.selectedConnector != null && currentSelection.SelectionCount <= 1)
+            {
+                // process the delete if only the connector is selected
+                ModelItem primarySelection = currentSelection.PrimarySelection;
+                //Delete connector
+                ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(this.selectedConnector);
+                if (object.Equals(primarySelection, connectorModelItem) ||
+                    // Delete initial link
+                    primarySelection == null && connectorModelItem != null && connectorModelItem.ItemType != typeof(Transition))
+                {
+                    this.DeleteConnectorModelItem(this.selectedConnector);
+                    e.Handled = true;
+                }
+            }
+            else if ((new List<Key> { Key.Left, Key.Right, Key.Up, Key.Down }).Contains(e.Key)
+                && currentSelection.SelectedObjects.All<ModelItem>((p) => { return this.modelItemToUIElement.ContainsKey(p); }))
+            {
+                this.KeyboardMove(e.Key);
+                e.Handled = true;
+            }
+        }
+
+        void OnStateContainerGridPreviewMouseDown(object sender, MouseButtonEventArgs e)
+        {
+            this.selectedConnector = null;
+        }
+
+        #endregion
+
+        #region Misc
+
+        string GenerateStateName()
+        {
+            HashSet<String> existingStateNames = new HashSet<string>();
+            foreach (ModelItem stateModelItem in this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
+            {
+                existingStateNames.Add(((State)stateModelItem.GetCurrentValue()).DisplayName);
+            }
+
+            int suffix = 0;
+            string name;
+
+            do
+            {
+                name = string.Format(CultureInfo.CurrentUICulture, "{0}{1}", DefaultStateDisplayName, ++suffix);
+            } while (existingStateNames.Contains<string>(name));
+
+            return name;
+        }
+
+        internal StateContainerEditor GetStateMachineContainerEditor()
+        {
+            if (this.ModelItem.ItemType == typeof(StateMachine))
+            {
+                return this;
+            }
+            else
+            {
+                Fx.Assert(this.ModelItem.ItemType == typeof(State), "ModelItem type should be State.");
+                StateDesigner designer = VisualTreeUtils.FindVisualAncestor<StateDesigner>(this);
+                FreeFormPanel panel = designer.GetStateMachineFreeFormPanel();
+                return VisualTreeUtils.FindVisualAncestor<StateContainerEditor>(panel);
+            }
+        }
+
+        Connector GetConnectorInStateMachine(ModelItem connectorModelItem)
+        {
+            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
+            foreach (UIElement element in stateMachineContainer.panel.Children)
+            {
+                Connector connector = element as Connector;
+                if (connector != null)
+                {
+                    if (StateContainerEditor.GetConnectorModelItem(connector) == connectorModelItem)
+                    {
+                        return connector;
+                    }
+                }
+            }
+            return null;
+        }
+
+        bool IsCreatingConnector()
+        {
+            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
+            return (stateMachineContainer.activeSrcConnectionPoint != null || (stateMachineContainer.panel.connectorEditor != null && stateMachineContainer.panel.connectorEditor.IsConnectorEndBeingMoved));
+        }
+
+        bool IsCreatingConnectorFromInitialNode()
+        {
+            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
+            return (stateMachineContainer.activeSrcConnectionPoint != null && stateMachineContainer.activeSrcConnectionPoint.ParentDesigner is StartSymbol) ||
+                (stateMachineContainer.panel.connectorEditor != null && stateMachineContainer.panel.connectorEditor.IsConnectorEndBeingMoved &&
+                stateMachineContainer.panel.connectorEditor.Connector != null &&
+                IsConnectorFromInitialNode(stateMachineContainer.panel.connectorEditor.Connector));
+        }
+
+        bool IsMovingStartOfConnectorFromInitialNode()
+        {
+            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
+            return (stateMachineContainer.panel.connectorEditor != null && stateMachineContainer.panel.connectorEditor.IsConnectorStartBeingMoved &&
+                stateMachineContainer.panel.connectorEditor.Connector != null &&
+                IsConnectorFromInitialNode(stateMachineContainer.panel.connectorEditor.Connector));
+        }
+
+        bool IsMovingStartOfConnectorForTransition()
+        {
+            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
+            return (stateMachineContainer.panel.connectorEditor != null && stateMachineContainer.panel.connectorEditor.IsConnectorStartBeingMoved &&
+                stateMachineContainer.panel.connectorEditor.Connector != null &&
+                GetConnectorModelItem(stateMachineContainer.panel.connectorEditor.Connector).ItemType == typeof(Transition));
+        }
+
+        void InvalidateMeasureForStateMachinePanel()
+        {
+            this.GetStateMachineContainerEditor().panel.InvalidateMeasure();
+        }
+
+        void PerformInternalMove(UIElement movedElement, Point newPoint, Point? shapeAnchorPoint, AutoConnectDirections autoConnectDirection, Connector connectorToSplit)
+        {
+            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.ItemMove))
+            {
+                StoreShapeSizeWithUndoRecursively(this.ModelItem);
+                this.RemoveConnectionPointsAdorner(movedElement);
+                Point newLocation;
+                Size size = FreeFormPanel.GetChildSize(movedElement);
+                if (autoConnectDirection != AutoConnectDirections.None)
+                {
+                    newLocation = this.CalculateDropLocationForAutoConnect(autoConnectDirection, size);
+                }
+                else if (shapeAnchorPoint.HasValue)
+                {
+                    newLocation = SnapVisualToGrid(movedElement, newPoint, shapeAnchorPoint.Value, true);
+                }
+                else
+                {
+                    Fx.Assert(newPoint.X.IsNoLessThan(0) && newPoint.Y.IsNoLessThan(0),
+                        "newPoint is negative");
+                    newLocation = newPoint;
+                }
+                if (connectorToSplit != null)
+                {
+                    newLocation = this.CalculateDropLocationForAutoSplit(newPoint, newLocation, connectorToSplit, size);
+                }
+                ModelItem modelItem = GetModelItemFromView(movedElement);
+                object viewState = this.ViewStateService.RetrieveViewState(modelItem, ShapeLocationViewStateKey);
+                if (viewState != null)
+                {
+                    Point oldLocation = (Point)viewState;
+                    // To make sure the connectors are still connected to the connection points.
+                    // We don't need to offset non-contained connectors because internal move
+                    // won't cause the connectors to be recreated and we have code in FreeFormPanel
+                    // to guarantee that connectors will still be connected to the connection points
+                    this.OffsetConnectorViewState(movedElement, oldLocation, newLocation, false);
+                }
+                else
+                {
+                    this.StoreAttachedConnectorViewStates(movedElement);
+                }
+
+                this.StoreShapeLocationViewState(movedElement, newLocation);
+                // To make sure the connector changes are undoable
+                this.panel.RemoveConnectorEditor();
+
+                es.Complete();
+            }
+        }
+
+        public void StoreAttachedConnectorViewStates(UIElement element)
+        {
+            foreach (Connector connector in GetAttachedConnectors(element))
+            {
+                StoreConnectorLocationViewState(connector, true);
+            }
+        }
+
+        bool ShouldInitialize()
+        {
+            WorkflowViewElement parent = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(this);
+            return parent != null && parent.ModelItem != null && (parent.ModelItem.ItemType == typeof(StateMachine) && parent.ShowExpanded ||
+                   parent.ModelItem.ItemType == typeof(State) && !parent.IsRootDesigner);
+        }
+
+        void ClearSelectedConnector()
+        {
+            if (this.panel.connectorEditor != null && this.panel.connectorEditor.Connector == this.selectedConnector)
+            {
+                this.panel.RemoveConnectorEditor();
+            }
+            this.selectedConnector = null;
+        }
+
+        #endregion
+
+        #region AutoConnect
+
+        public void DoAutoConnect(DragEventArgs e, UIElement targetElement, AutoConnectDirections direction)
+        {
+            UIElement sourceElement = targetElement;
+            bool immediatelyCommit = ModelItemHelper.CanCreateImmediateEditingScope(this.ModelItem);
+
+            using (EditingScope scope = (EditingScope)this.ModelItem.BeginEdit(SR.AutoConnect, immediatelyCommit))
+            {
+                ModelItem connectorModelItem = null;
+                Point location = e.GetPosition(sourceElement);
+                ModelItem droppedModelItem = this.DoStateContainerGridDrop(e, direction, null);
+                if (droppedModelItem != null)
+                {
+                    connectorModelItem = this.DoAutoConnect(sourceElement, droppedModelItem, null);
+                }
+
+                if (connectorModelItem != null)
+                {
+                    EdgeLocation edgeLocation = AutoConnectHelper.AutoConnectDirection2EdgeLocation(direction);
+                    this.GetStateMachineContainerEditor().activeSrcConnectionPoint = this.GetSourceConnectionPointForAutoConnect(sourceElement, edgeLocation);
+                    ModelItem sourceModelItem = TryGetModelItemFromView(sourceElement);
+                    Fx.Assert(sourceModelItem != null, "sourceModelItem");
+
+                    // add a custom change inside a new editing scope since current editing scope an immediate editing scope
+                    using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.AutoConnect, false))
+                    {
+                        es.Changes.Add(new StoreAutoConnectorViewStateChange(
+                            this.ModelItem, sourceModelItem, droppedModelItem, connectorModelItem, edgeLocation));
+                        es.Complete();
+                    }
+                    scope.Complete();
+                }
+                else
+                {
+                    scope.Revert();
+                }
+            }
+        }
+
+        private ModelItem DoAutoConnect(UIElement sourceElement, ModelItem droppedModelItem, Transition transitionToCopy, int insertIndex = InvalidIndex)
+        {
+            ModelItem sourceModelItem = TryGetModelItemFromView(sourceElement);
+            if (sourceModelItem != null && droppedModelItem.ItemType == typeof(State))
+            {
+                if (sourceModelItem.ItemType == typeof(State))
+                {
+                    ModelItem stateMachineModelItem = GetStateMachineModelItem(sourceModelItem);
+                    Transition transition = new Transition
+                    {
+                        DisplayName = StateContainerEditor.GenerateTransitionName(stateMachineModelItem),
+                        To = droppedModelItem.GetCurrentValue() as State
+                    };
+                    if (transitionToCopy != null)
+                    {
+                        transition.Action = transitionToCopy.Action;
+                        transition.Condition = transitionToCopy.Condition;
+                        transition.DisplayName = transitionToCopy.DisplayName;
+                        transition.Trigger = transitionToCopy.Trigger;
+                    }
+                    ModelItem trasitionModelItem = null;
+                    if (insertIndex >= 0)
+                    {
+                        trasitionModelItem = sourceModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Insert(insertIndex, transition);
+                    }
+                    else
+                    {
+                        trasitionModelItem = sourceModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(transition);
+                    }
+                    Fx.Assert(trasitionModelItem != null, "trasitionModelItem");
+                    return trasitionModelItem;
+                }
+                // auto-connect from the initial node
+                else if (sourceModelItem.ItemType == typeof(StartNode))
+                {
+                    this.ModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].SetValue(droppedModelItem);
+                    return this.ModelItem;
+                }
+            }
+            return null;
+        }
+
+        public AutoConnectDirections GetDirectionsAllowed(DragEventArgs e, UIElement targetElement)
+        {
+            if (!this.IsDropAllowed(e))
+            {
+                return AutoConnectDirections.None;
+            }
+
+            if (StateContainerEditor.GetEmptyConnectionPoints(targetElement).Count < 1)
+            {
+                return AutoConnectDirections.None;
+            }
+
+            List<Type> types = DragDropHelper.GetDraggedTypes(e.Data);
+            if (types.Count != 1 || (types[0] != typeof(State) && types[0] != typeof(FinalState)))
+            {
+                return AutoConnectDirections.None;
+            }
+
+            if (targetElement is VirtualizedContainerService.VirtualizingContainer && IsFinalState(((VirtualizedContainerService.VirtualizingContainer)targetElement).ModelItem))
+            {
+                return AutoConnectDirections.None;
+            }
+
+            if (targetElement is StartSymbol && this.ModelItem.ItemType == typeof(StateMachine))
+            {
+                if (this.ModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].Value != null)
+                {
+                    return AutoConnectDirections.None;
+                }
+
+                // Should not allow auto-connecting a final state to the start symbol
+                IEnumerable<ModelItem> draggedModelItems = DragDropHelper.GetDraggedModelItems(e);
+                if ((draggedModelItems.Count<ModelItem>() == 1 && StateContainerEditor.IsFinalState(draggedModelItems.First<ModelItem>()))
+                    || types[0] == typeof(FinalState))
+                {
+                    return AutoConnectDirections.None;
+                }
+            }
+
+            return AutoConnectDirections.Top | AutoConnectDirections.Bottom | AutoConnectDirections.Left | AutoConnectDirections.Right;
+        }
+
+        private ConnectionPoint GetSourceConnectionPointForAutoConnect(UIElement designer, EdgeLocation edgeLocation)
+        {
+            List<ConnectionPoint> connectionPoints = this.GetAvailableConnectionPoint(designer);
+            return GetConnectionPointClosestToEdgeMidPoint(designer, connectionPoints, edgeLocation);
+        }
+
+        static ConnectionPoint GetConnectionPointClosestToEdgeMidPoint(UIElement designer, List<ConnectionPoint> connectionPoints, EdgeLocation edgeLocation)
+        {
+            Point midPoint = new Point(-1, -1);
+            Point location = FreeFormPanel.GetLocation(designer);
+            Size size = FreeFormPanel.GetChildSize(designer);
+            switch (edgeLocation)
+            {
+                case EdgeLocation.Left:
+                    midPoint = new Point(location.X, location.Y + size.Height / 2);
+                    break;
+                case EdgeLocation.Right:
+                    midPoint = new Point(location.X + size.Width, location.Y + size.Height / 2);
+                    break;
+                case EdgeLocation.Top:
+                    midPoint = new Point(location.X + size.Width / 2, location.Y);
+                    break;
+                case EdgeLocation.Bottom:
+                    midPoint = new Point(location.X + size.Width / 2, location.Y + size.Height);
+                    break;
+            }
+            if (connectionPoints.Count > 0)
+            {
+                double dist;
+                return ConnectionPoint.GetClosestConnectionPoint(connectionPoints, midPoint, out dist);
+            }
+            return null;
+        }
+
+        private static ModelItem TryGetModelItemFromView(UIElement sourceElement)
+        {
+            Fx.Assert(sourceElement != null, "sourceElement != null");
+            ModelItem sourceModelItem = null;
+            if (sourceElement is WorkflowViewElement)
+            {
+                sourceModelItem = ((WorkflowViewElement)sourceElement).ModelItem;
+            }
+            else if (sourceElement is VirtualizedContainerService.VirtualizingContainer)
+            {
+                sourceModelItem = ((VirtualizedContainerService.VirtualizingContainer)sourceElement).ModelItem;
+            }
+            return sourceModelItem;
+        }
+
+        private class StoreAutoConnectorViewStateChange : Change
+        {
+            private EdgeLocation EdgeLocation { get; set; }
+            private ModelItem StateMachine { get; set; }
+            private ModelItem SrcModelItem { get; set; }
+            private ModelItem DstModelItem { get; set; }
+            private ModelItem ViewStateOwnerModelItem { get; set; }
+            private object OldViewState { get; set; }
+            private object NewViewState { get; set; }
+            private bool ShouldCreateConnector { get; set; }
+
+            public override string Description { get { return SR.AutoConnect; } }
+
+            public StoreAutoConnectorViewStateChange(
+                ModelItem stateMachine, ModelItem srcModelItem, ModelItem desModelItem, ModelItem addedModelItem, EdgeLocation edgeLocatioin)
+            {
+                this.StateMachine = stateMachine;
+                this.SrcModelItem = srcModelItem;
+                this.DstModelItem = desModelItem;
+                this.EdgeLocation = edgeLocatioin;
+                this.ViewStateOwnerModelItem = addedModelItem;
+                this.ShouldCreateConnector = true;
+            }
+
+            private StoreAutoConnectorViewStateChange()
+            {
+            }
+
+            public override bool Apply()
+            {
+                StateMachineDesigner designer = this.StateMachine.View as StateMachineDesigner;
+                Fx.Assert(designer != null, "designer");
+                StateContainerEditor editor = designer.StateContainerEditor;
+                Fx.Assert(editor != null, "editor");
+                // only the first time we need to calculate the ViewState,
+                // later, we just use the old one.
+                if (this.ShouldCreateConnector)
+                {
+                    UIElement srcElement = editor.modelItemToUIElement[this.SrcModelItem];
+                    UIElement desElement = editor.modelItemToUIElement[this.DstModelItem];
+                    ConnectionPoint srcConnectionPoint = null;
+                    ConnectionPoint desConnectionPoint = null;
+                    PointCollection points = editor.CreatePointCollectionForAutoConnectOrAutoSplit(
+                        srcElement, desElement, this.SrcModelItem, ref srcConnectionPoint, ref desConnectionPoint);
+                    this.OldViewState = editor.ViewStateService.RetrieveViewState(this.ViewStateOwnerModelItem, ConnectorLocationViewStateKey);
+                    this.NewViewState = points;
+
+                    // compare old and new values, if they're the same, return false
+                    if (this.OldViewState == null && this.NewViewState == null)
+                    {
+                        return false;
+                    }
+
+                    if (this.OldViewState != null
+                        && this.NewViewState != null
+                        && points.SequenceEqual(this.OldViewState as PointCollection))
+                    {
+                        return false;
+                    }
+
+                    this.ShouldCreateConnector = false;
+                }
+
+                editor.ViewStateService.StoreViewState(this.ViewStateOwnerModelItem, ConnectorLocationViewStateKey, this.NewViewState);
+                return true;
+            }
+
+            public override Change GetInverse()
+            {
+                return new StoreAutoConnectorViewStateChange
+                {
+                    StateMachine = this.StateMachine,
+                    ViewStateOwnerModelItem = this.ViewStateOwnerModelItem,
+                    EdgeLocation = this.EdgeLocation,
+                    SrcModelItem = this.SrcModelItem,
+                    DstModelItem = this.DstModelItem,
+                    OldViewState = this.NewViewState,
+                    NewViewState = this.OldViewState,
+                    ShouldCreateConnector = false
+                };
+            }
+        }
+
+        #endregion
+
+        #region AutoSplit
+
+        public bool CanAutoSplit(DragEventArgs e)
+        {
+            if (!this.IsDropAllowed(e))
+            {
+                return false;
+            }
+            ModelItem draggedModelItem = e.Data.GetData(DragDropHelper.ModelItemDataFormat) as ModelItem;
+            if (draggedModelItem != null && this.modelItemToUIElement.ContainsKey(draggedModelItem))
+            {
+                if (StateContainerEditor.GetAttachedConnectors(this.modelItemToUIElement[draggedModelItem]).Count > 0)
+                {
+                    return false;
+                }
+
+                if (StateContainerEditor.IsFinalState(draggedModelItem))
+                {
+                    return false;
+                }
+            }
+
+            List<Type> draggedTypes = DragDropHelper.GetDraggedTypes(e.Data);
+            if (draggedTypes.Count != 1 || draggedTypes[0] != typeof(State))
+            {
+                return false;
+            }
+
+            return true;
+        }
+
+        public void DoAutoSplit(DragEventArgs e, Connector connector)
+        {
+            bool immediatelyCommit = ModelItemHelper.CanCreateImmediateEditingScope(this.ModelItem);
+
+            using (EditingScope scope = (EditingScope)this.ModelItem.BeginEdit(SR.AutoSplit, immediatelyCommit))
+            {
+                ModelItem droppedModelItem = this.DoStateContainerGridDrop(e, AutoConnectDirections.None, connector);
+                bool autoSplit = false;
+                ConnectionPoint sourceConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
+                ConnectionPoint destinationConnectionPoint = FreeFormPanel.GetDestinationConnectionPoint(connector);
+                if (droppedModelItem != null)
+                {
+                    ModelItem oldConnectorModelItem = StateContainerEditor.GetConnectorModelItem(connector);
+                    int index = this.DeleteConnectorModelItem(connector);
+                    bool autoConnected = this.DoAutoConnect(sourceConnectionPoint.ParentDesigner,
+                        droppedModelItem, oldConnectorModelItem.GetCurrentValue() as Transition, index) != null;
+                    if (autoConnected)
+                    {
+                        ModelItem destinationModelItem = ((VirtualizedContainerService.VirtualizingContainer)destinationConnectionPoint.ParentDesigner).ModelItem;
+                        ModelItem stateMachineModelItem = GetStateMachineModelItem(destinationModelItem);
+                        droppedModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(new Transition()
+                        {
+                            DisplayName = StateContainerEditor.GenerateTransitionName(stateMachineModelItem),
+                            To = destinationModelItem.GetCurrentValue() as State
+                        });
+                        autoSplit = true;
+                    }
+                }
+                if (autoSplit)
+                {
+                    // Auto-split generates 4 changes: 1) drop state, 2) remove the old transition, 3) create a transition from the source state
+                    // to the dropped state, and 4) create a transition from the dropped state to the destination state.
+                    // Step 1 may result in creating the visual of all outgoing transition from the dropped state. Step 4) also creates the visual
+                    // of the new transition from the dropped state. So the visual of the transition will be created twice. To solve that problem,
+                    // we need to suppress adding connector when adding state visual (in the UI reaction for step 1).
+                    // And to support redo, we must place the suppression in the undo stack.
+                    this.Context.Services.GetService<ModelTreeManager>().AddToCurrentEditingScope(new SuppressAddingConnectorWhenAddingStateVisual());
+                    this.activeSrcConnectionPointForAutoSplit = sourceConnectionPoint;
+                    this.activeDestConnectionPointForAutoSplit = destinationConnectionPoint;
+                    AutoSplitHelper.CalculateEntryExitEdges(e.GetPosition(this.panel), connector, out this.entryEdgeForAutoSplit, out this.exitEdgeForAutoSplit);
+                    scope.Complete();
+                }
+                else
+                {
+                    scope.Revert();
+                }
+            }
+        }
+
+        private const int InvalidIndex = -1;
+
+        #endregion
+
+        class SuppressAddingConnectorWhenAddingStateVisual : Change
+        {
+            public override string Description
+            {
+                get
+                {
+                    return null;
+                }
+            }
+
+            public override bool Apply()
+            {
+                return false;
+            }
+
+            public override Change GetInverse()
+            {
+                return new SuppressAddingConnectorWhenAddingStateVisual();
+            }
+        }
+
+        internal enum ConnectorCreationResult
+        {
+            Success,
+            CannotCreateTransitionToCompositeState,
+            CannotCreateTransitionFromAncestorToDescendant,
+            CannotSetCompositeStateAsInitialState,
+            CannotSetFinalStateAsInitialState,
+            OtherFailure
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerResizeGrip.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerResizeGrip.cs
new file mode 100644 (file)
index 0000000..2fe32b0
--- /dev/null
@@ -0,0 +1,159 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.Internal.PropertyEditing;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Input;
+    using System.Windows.Media;
+
+    //This class is visual representation of ResizeGrip like control, which is used in a Grid to allow resizing.
+    class StateContainerResizeGrip : Control
+    {
+        public static readonly DependencyProperty IconProperty =
+            DependencyProperty.Register("Icon", typeof(DrawingBrush), typeof(StateContainerResizeGrip));
+
+        public static readonly DependencyProperty ParentStateContainerEditorProperty =
+            DependencyProperty.Register("ParentStateContainerEditor", typeof(StateContainerEditor), typeof(StateContainerResizeGrip));
+
+        public static readonly DependencyProperty DisabledProperty =
+            DependencyProperty.Register("Disabled", typeof(bool), typeof(StateContainerResizeGrip), new UIPropertyMetadata(false));
+
+        Point offset;
+
+        // The scope is used for capturing the current size of all the StateContainer instances that contain the target ResizeGrip.  
+        // As the user resizes the target StateContainer, its Visual ancestors would get resized.  
+        // The purpose of the scope is to store their sizes before the resizing to facilitate Undo.
+        EditingScope scope;
+
+        public DrawingBrush Icon
+        {
+            get { return (DrawingBrush)GetValue(IconProperty); }
+            set { SetValue(IconProperty, value); }
+        }
+
+        public StateContainerEditor ParentStateContainerEditor
+        {
+            get { return (StateContainerEditor)GetValue(ParentStateContainerEditorProperty); }
+            set { SetValue(ParentStateContainerEditorProperty, value); }
+        }
+
+        public bool Disabled
+        {
+            get { return (bool)GetValue(DisabledProperty); }
+            set { SetValue(DisabledProperty, value); }
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+            this.Cursor = Cursors.SizeNWSE;
+        }
+
+        protected override void OnGotMouseCapture(MouseEventArgs e)
+        {
+            ModelItem stateContainerModelItem = this.ParentStateContainerEditor.ModelItem;
+            string undoItemName = string.Empty;
+            if (stateContainerModelItem.ItemType == typeof(StateMachine))
+            {
+                undoItemName = SR.StateMachineResize;
+            }
+            else if (stateContainerModelItem.ItemType == typeof(State))
+            {
+                undoItemName = SR.StateResize;
+            }
+            else
+            {
+                Fx.Assert(false, "The model item type is invalid");
+            }
+            this.scope = (EditingScope)this.ParentStateContainerEditor.ModelItem.BeginEdit(undoItemName);
+            base.OnGotMouseCapture(e);
+        }
+
+        protected override void OnLostMouseCapture(MouseEventArgs e)
+        {
+            if (this.scope != null)
+            {
+                this.scope.Complete();
+                this.scope.Dispose();
+                this.scope = null;
+            }
+            base.OnLostMouseCapture(e);
+        }
+
+        protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
+        {
+            if (e != null && !this.Disabled)
+            {
+                this.offset = e.GetPosition(this);
+                this.CaptureMouse();
+                if (this.scope != null)
+                {
+                    this.ParentStateContainerEditor.StoreShapeSizeWithUndoRecursively(this.ParentStateContainerEditor.ModelItem);                    
+                }
+                // Select the designer when it is being resized
+                WorkflowViewElement designer = this.ParentStateContainerEditor.ModelItem.View as WorkflowViewElement;
+                
+                if (!designer.IsKeyboardFocusWithin)
+                {
+                    // Fix 185562 - if the designer has the keyboard focus (i.e. DisplayName being edited)
+                    // then there is no need to refocus on the designer again.  That prevents the
+                    // DisplayName editing to be group into the same EditingScope as resizing, and
+                    // also the defaultDisplayNameReadOnlyControl from being Visible but not modified.
+                    Keyboard.Focus(designer);
+                }
+
+                StateMachineDesigner stateMachineDesigner = VisualTreeUtils.FindVisualAncestor<StateMachineDesigner>(this.ParentStateContainerEditor);
+                stateMachineDesigner.IsResizing = true;
+
+                e.Handled = true;
+            }
+            base.OnPreviewMouseLeftButtonDown(e);
+        }
+
+        protected override void OnMouseMove(MouseEventArgs args)
+        {
+            base.OnMouseMove(args);
+            if (args != null && !this.Disabled)
+            {
+                if (args.LeftButton == MouseButtonState.Pressed && this.IsMouseCaptured && this.scope != null)
+                {
+                    StateContainerEditor stateContainerEditor = this.ParentStateContainerEditor;
+                    FreeFormPanel panel = stateContainerEditor.Panel;
+                    Grid stateContainerGrid = stateContainerEditor.stateContainerGrid;
+                    Point currentPosition = Mouse.GetPosition(stateContainerGrid);
+                    currentPosition.Offset(this.offset.X, this.offset.Y);
+                    stateContainerEditor.StateContainerWidth = Math.Min(Math.Max(panel.RequiredWidth, currentPosition.X), stateContainerGrid.MaxWidth);
+                    stateContainerEditor.StateContainerHeight = Math.Min(Math.Max(panel.RequiredHeight, currentPosition.Y), stateContainerGrid.MaxHeight);
+                    args.Handled = true;
+                }
+            }
+        }
+
+        protected override void OnPreviewMouseLeftButtonUp(MouseButtonEventArgs e)
+        {
+            if (e != null && !this.Disabled && this.scope != null)
+            {
+                ModelItem stateContainerModelItem = this.ParentStateContainerEditor.ModelItem;
+                ViewStateService viewStateService = this.ParentStateContainerEditor.Context.Services.GetService<ViewStateService>();
+                viewStateService.StoreViewStateWithUndo(stateContainerModelItem, StateContainerEditor.StateContainerWidthViewStateKey, this.ParentStateContainerEditor.StateContainerWidth);
+                viewStateService.StoreViewStateWithUndo(stateContainerModelItem, StateContainerEditor.StateContainerHeightViewStateKey, this.ParentStateContainerEditor.StateContainerHeight);
+                Mouse.OverrideCursor = null;
+                Mouse.Capture(null);
+                StateMachineDesigner stateMachineDesigner = VisualTreeUtils.FindVisualAncestor<StateMachineDesigner>(this.ParentStateContainerEditor);
+                stateMachineDesigner.IsResizing = false;
+                e.Handled = true;
+            }
+            base.OnPreviewMouseLeftButtonUp(e);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..a2c42b4
--- /dev/null
@@ -0,0 +1,241 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Debug;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.Internal.PropertyEditing;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Linq;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Media;
+    using System.Windows.Input;
+    using System.Windows.Threading;
+    using System.Windows.Automation;
+
+    partial class StateDesigner
+    {
+        Guid guid;
+
+        internal const string EntryPropertyName = "Entry";
+        internal const string ExitPropertyName = "Exit";
+        internal const string IsFinalPropertyName = "IsFinal";
+        internal const string DisplayNamePropertyName = "DisplayName";
+        internal const string TransitionsPropertyName = "Transitions";
+        internal const string ChildStatesPropertyName = "States";
+        internal const string VariablesPropertyName = "Variables";
+
+        const double StateMinWidth = 20;
+
+        public static readonly RoutedCommand SetAsInitialCommand = new RoutedCommand("SetAsInitial", typeof(StateDesigner));
+
+        public StateDesigner()
+        {
+            InitializeComponent();
+            this.guid = Guid.NewGuid();
+            this.Collapsible = false;
+            this.SetValue(AutomationProperties.ItemStatusProperty, this.guid.ToString());
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+            this.PinAsExpanded();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type stateType = typeof(State);
+            builder.AddCustomAttributes(stateType, new DesignerAttribute(typeof(StateDesigner)));
+            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.EntryPropertyName), BrowsableAttribute.No);
+            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.ExitPropertyName), BrowsableAttribute.No);
+            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.TransitionsPropertyName), BrowsableAttribute.No);
+            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.IsFinalPropertyName), BrowsableAttribute.No);
+            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.VariablesPropertyName), BrowsableAttribute.No);
+
+            builder.AddCustomAttributes(stateType, new ShowInOutlineViewAttribute());
+            builder.AddCustomAttributes(stateType, new AllowBreakpointAttribute());
+            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.TransitionsPropertyName), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false });
+            builder.AddCustomAttributes(stateType, new ActivityDesignerOptionsAttribute
+            {
+                OutlineViewIconProvider = (modelItem) =>
+                {
+                    ResourceDictionary icons = EditorResources.GetIcons();
+
+                    if (modelItem != null)
+                    {
+                        object icon = null;
+
+                        if (StateContainerEditor.IsFinalState(modelItem) && icons.Contains("FinalStateIcon"))
+                        {
+                            icon = icons["FinalStateIcon"];
+                        }
+                        else if (icons.Contains("StateIcon"))
+                        {
+                            icon = icons["StateIcon"];
+                        }
+
+                        if (icon != null && icon is DrawingBrush)
+                        {
+                            return (DrawingBrush)icon;
+                        }
+                    }
+
+                    return null;
+                }
+            });
+        }
+
+        protected override void OnShowExpandedChanged(bool newValue)
+        {
+            this.PinAsExpanded();
+        }
+
+        // Make sure StateDesigner is always expanded
+        void PinAsExpanded()
+        {
+            this.ExpandState = true;
+            this.PinState = true;
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            this.MinWidth = StateMinWidth;
+            base.OnModelItemChanged(newItem);
+        }
+
+        protected internal override string GetAutomationItemStatus()
+        {
+            string status = base.GetAutomationItemStatus();
+            status = status + "Guid=" + this.guid.ToString() + " ";
+            status = status + "IsFinal=" + (this.IsFinalState() ? "True " : "False ");
+            return status;
+        }
+
+
+        void OnSetAsInitialCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            ModelItem stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.ModelItem);
+            e.CanExecute = (!this.IsReadOnly && stateMachineModelItem != null && this.ModelItem != stateMachineModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].Value &&
+                            !this.IsFinalState() &&
+                            !this.IsRootDesigner && StateContainerEditor.GetEmptyConnectionPoints(this).Count > 0);
+            e.Handled = true;
+        }
+
+        void OnSetAsInitialExecute(object sender, ExecutedRoutedEventArgs e)
+        {
+            ModelItem stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.ModelItem);
+
+            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.SetInitialState))
+            {
+                this.ViewStateService.RemoveViewState(stateMachineModelItem, StateContainerEditor.ConnectorLocationViewStateKey);
+                stateMachineModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].SetValue(this.ModelItem.GetCurrentValue());
+                es.Complete();
+            }
+            e.Handled = true;
+        }
+
+        void OnStateSpecificMenuItemLoaded(object sender, RoutedEventArgs e)
+        {
+            MenuItem item = sender as MenuItem;
+            if (null != item && (this.IsFinalState()))
+            {
+                item.Visibility = Visibility.Collapsed;
+            }
+            e.Handled = true;
+        }
+
+        internal bool IsFinalState()
+        {
+            return StateContainerEditor.IsFinalState(this.ModelItem);
+        }
+
+        public FreeFormPanel GetStateMachineFreeFormPanel()
+        {
+            StateDesigner current = this;
+            WorkflowViewElement parent = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(current);
+            while (parent != null)
+            {
+                if (parent is StateDesigner)
+                {
+                    current = (StateDesigner)parent;
+                    parent = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(current);
+                }
+                else if (parent is StateMachineDesigner)
+                {
+                    return VisualTreeUtils.FindVisualAncestor<FreeFormPanel>(current);
+                }
+                else
+                {
+                    return null;
+                }
+            }
+
+            return null;
+        }
+
+        private void OnTransitionClicked(object sender, RoutedEventArgs e)
+        {
+            Button button = e.Source as Button;
+
+            if (button != null)
+            {
+                ModelItem transitionModelItem = button.Tag as ModelItem;
+
+                if (transitionModelItem != null)
+                {
+                    this.Designer.MakeRootDesigner(transitionModelItem);
+                }
+            }
+        }
+
+        private void OnToStateClicked(object sender, RoutedEventArgs e)
+        {
+            Button button = e.Source as Button;
+
+            if (button != null)
+            {
+                ModelItem toStateModelItem = button.Tag as ModelItem;
+
+                if (toStateModelItem != null)
+                {
+                    this.Designer.MakeRootDesigner(toStateModelItem);
+                }
+            }
+        }
+
+        private void StateDesignerToolTipOpening(object sender, ToolTipEventArgs e)
+        {
+            StateContainerEditor stateContainerEditor = (StateContainerEditor)sender;
+
+            if (StateContainerEditor.CopiedTransitionDestinationState != null)
+            {
+                WorkflowViewElement view = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(stateContainerEditor);
+                if (view != null)
+                {
+                    StateContainerEditor container = (StateContainerEditor)DragDropHelper.GetCompositeView(view);
+                    string errorMessage;
+                    if (container != null && container.CanPasteTransition(StateContainerEditor.CopiedTransitionDestinationState, out errorMessage, view.ModelItem))
+                    {
+                        stateContainerEditor.ToolTip = SR.EditStateToolTip + Environment.NewLine + SR.PasteTransitionToolTip;
+                        return;
+                    }
+                }
+            }
+
+            stateContainerEditor.ToolTip = SR.EditStateToolTip;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateLinkButtonToolTipConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateLinkButtonToolTipConverter.cs
new file mode 100644 (file)
index 0000000..1dc0294
--- /dev/null
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Windows;
+    using System.Windows.Data;
+
+    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Justification = "Used in XAML")]
+    internal sealed class StateLinkButtonToolTipConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            string stateOrTransitionName = value as string;
+            if (!string.IsNullOrEmpty(stateOrTransitionName))
+            {
+                return string.Format(CultureInfo.CurrentUICulture, SR.StateLinkButtonToolTip, stateOrTransitionName);
+            }
+
+            return null;
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotImplementedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineConnetionPointsAdorner.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineConnetionPointsAdorner.cs
new file mode 100644 (file)
index 0000000..7248157
--- /dev/null
@@ -0,0 +1,83 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.View;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Windows;
+    using System.Windows.Documents;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Runtime;
+    using System.Windows.Controls;
+
+    internal class StateMachineConnectionPointsAdorner : ConnectionPointsAdorner
+    {
+        public StateMachineConnectionPointsAdorner(UIElement adornedElement, List<ConnectionPoint> connectionPointsToShow, bool isParentShapeSelected)
+            : base(adornedElement, connectionPointsToShow, isParentShapeSelected)
+        {
+        }
+
+        protected override void OnRender(DrawingContext drawingContext)
+        {
+            Point actualPoint;
+            Point origin = FreeFormPanel.GetLocation(AdornedElement);
+            Thickness margin = ((FrameworkElement)AdornedElement).Margin;
+            origin.X += margin.Left;
+            origin.Y += margin.Top;
+
+            foreach (ConnectionPoint connPoint in connectionPoints)
+            {
+                actualPoint = new Point(connPoint.Location.X - origin.X, connPoint.Location.Y - origin.Y);
+                this.DrawConnectionPoint(connPoint, actualPoint, drawingContext);
+            }
+            
+            base.OnRender(drawingContext);
+        }
+
+        protected override void OnMouseDown(MouseButtonEventArgs e)
+        {
+            if (e.ChangedButton == MouseButton.Right)
+            {
+                this.RaiseMouseEvent(e);
+            }
+            base.OnMouseDown(e);
+        }
+
+        protected override void OnMouseUp(MouseButtonEventArgs e)
+        {
+            if (e.ChangedButton == MouseButton.Right)
+            {
+                this.RaiseMouseEvent(e);
+            }
+            base.OnMouseUp(e);
+        }
+
+        protected override void OnContextMenuOpening(ContextMenuEventArgs e)
+        {
+            this.AdornedElement.RaiseEvent(e);
+            base.OnContextMenuOpening(e);
+        }
+
+        private void RaiseMouseEvent(MouseButtonEventArgs e)
+        {
+            MouseButtonEventArgs args = new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, e.ChangedButton);
+            args.RoutedEvent = e.RoutedEvent;
+            UIElement target = this.AdornedElement;
+            if (target is VirtualizedContainerService.VirtualizingContainer)
+            {
+                target = ((VirtualizedContainerService.VirtualizingContainer)target).Child;
+                if (target is StateDesigner)
+                {
+                    target = ((StateDesigner)target).stateContentPresenter;
+                    target.RaiseEvent(args);
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..4a19a28
--- /dev/null
@@ -0,0 +1,96 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Windows;
+    using System.Windows.Input;
+
+    [ActivityDesignerOptions(AlwaysCollapseChildren = true)]
+    partial class StateMachineDesigner
+    {
+        const string ExpandViewStateKey = "IsExpanded";
+        internal const string InitialStatePropertyName = "InitialState";
+        internal const string VariablesPropertyName = "Variables";
+        internal const string StatesPropertyName = "States";
+
+        StateContainerEditor stateContainerEditor = null;
+
+        public StateMachineDesigner()
+        {
+            InitializeComponent();
+        }
+
+        internal bool IsResizing { get; set; }
+
+        internal StateContainerEditor StateContainerEditor
+        {
+            get { return this.stateContainerEditor; }
+        }
+
+        void OnStateContainerLoaded(object sender, RoutedEventArgs e)
+        {
+            this.stateContainerEditor = sender as StateContainerEditor;
+        }
+
+        void OnStateContainerUnloaded(object sender, RoutedEventArgs e)
+        {
+            this.stateContainerEditor = null;
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type stateMachineType = typeof(StateMachine);
+            builder.AddCustomAttributes(stateMachineType, new DesignerAttribute(typeof(StateMachineDesigner)));
+            builder.AddCustomAttributes(stateMachineType, stateMachineType.GetProperty(StateMachineDesigner.StatesPropertyName), BrowsableAttribute.No);
+            builder.AddCustomAttributes(stateMachineType, stateMachineType.GetProperty(StateMachineDesigner.VariablesPropertyName), BrowsableAttribute.No);
+            builder.AddCustomAttributes(stateMachineType, stateMachineType.GetProperty(StateMachineDesigner.InitialStatePropertyName), BrowsableAttribute.No);
+            builder.AddCustomAttributes(stateMachineType, stateMachineType.GetProperty(StateMachineDesigner.InitialStatePropertyName), new ShowPropertyInOutlineViewAttribute() { DuplicatedChildNodesVisible = true });
+            builder.AddCustomAttributes(stateMachineType, stateMachineType.GetProperty(StateMachineDesigner.StatesPropertyName), new ShowPropertyInOutlineViewAttribute());
+
+
+            builder.AddCustomAttributes(stateMachineType, new FeatureAttribute(typeof(StateMachineValidationErrorSourceLocatorFeature)));
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
+            if (viewStateService != null)
+            {
+                // Make StateMachine designer always collapsed by default, but only if the user didn't explicitly specify collapsed or expanded.
+                bool? isExpanded = (bool?)viewStateService.RetrieveViewState((ModelItem)newItem, ExpandViewStateKey);
+                if (isExpanded == null)
+                {
+                    viewStateService.StoreViewState((ModelItem)newItem, ExpandViewStateKey, false);
+                }
+            }
+            base.OnModelItemChanged(newItem);
+        }
+
+        // do not proprogate up to StateMachineDesigner, because designer will set selection to itself on GotFocus event.
+        private void OnAdornerLayerGotFocus(object sender, RoutedEventArgs e)
+        {
+            e.Handled = true;
+        }
+
+        private void StateMachineDesignerKeyDown(object sender, KeyEventArgs e)
+        {
+            // Ignore KeyBoard input when in resizing mode.
+            e.Handled = IsResizing;
+        }
+
+        private void StateMachineDesignerPreviewKeyDown(object sender, KeyEventArgs e)
+        {
+            // Enter cannot be captured in KeyDown, so handle it in PreviewKeyDown event.
+            e.Handled = IsResizing && e.Key == Key.Enter;
+        }
+    }
+ }
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineFreeFormPanel.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineFreeFormPanel.cs
new file mode 100644 (file)
index 0000000..fb228b9
--- /dev/null
@@ -0,0 +1,17 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.FreeFormEditing;
+
+    // This is a workaround. Internal type FreeFromPanel cannot be used in xaml even if System.Activities.Presentation is configured to
+    // be InternalsVisibleTo System.Activities.Core.Presentation
+    internal sealed class StateMachineFreeFormPanel : FreeFormPanel
+    {
+        public StateMachineFreeFormPanel()
+        {
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocator.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocator.cs
new file mode 100644 (file)
index 0000000..9f20549
--- /dev/null
@@ -0,0 +1,152 @@
+// <copyright>
+//   Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Validation;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+    using System.Runtime;
+
+    internal class StateMachineValidationErrorSourceLocator : IValidationErrorSourceLocator
+    {
+        public List<object> FindSourceDetailFromActivity(Activity errorSource, object errorSourceDetail)
+        {
+            if (errorSourceDetail == null)
+            {
+                return new List<object> { errorSource };
+            }
+            else
+            {
+                return FindRelativePath((StateMachine)errorSource, errorSourceDetail);
+            }
+        }
+
+        // case 1: StateMachine -> Default expression of StateMachine's variable -> ...
+        // case 2: StateMachine -> InternalState -> ...
+        public void ReplaceParentChainWithSource(Activity parentActivity, List<object> parentChain)
+        {
+            Activity lastActivity = parentChain[parentChain.Count - 1] as Activity;
+            StateMachine stateMachine = (StateMachine)parentActivity;
+
+            foreach (Variable variable in stateMachine.Variables)
+            {
+                if (variable != null && variable.Default == lastActivity)
+                {
+                    parentChain.Add(stateMachine);
+                    return;
+                }
+            }
+
+            if (parentChain.Count > 1)
+            {
+                // assume lastActivity is InternalState
+
+                // remove InternalState
+                parentChain.RemoveAt(parentChain.Count - 1);
+
+                Activity targetActivity = (Activity)parentChain[parentChain.Count - 1];
+
+                // the targetActivity will be available in the path
+                parentChain.RemoveAt(parentChain.Count - 1);
+
+                List<object> path = FindRelativePath(stateMachine, targetActivity);
+
+                foreach (object pathObject in path)
+                {
+                    parentChain.Add(pathObject);
+                }
+            }
+        }
+
+        private static List<object> FindRelativePath(StateMachine machine, object descendent)
+        {
+            List<object> path = FindDescendentFromStateMachine(machine, descendent);
+            path.Reverse();
+            return path;
+        }
+
+        private static List<object> FindDescendentFromStateMachine(StateMachine machine, object descendent)
+        {
+            List<object> path = new List<object>();
+            path.Add(machine);
+            foreach (State state in machine.States)
+            {
+                if (state == descendent)
+                {
+                    break;
+                }
+                else if (state.Entry == descendent)
+                {
+                    path.Add(state);
+                    break;
+                }
+                else if (state.Exit == descendent)
+                {
+                    path.Add(state);
+                    break;
+                }
+                else
+                {
+                    Transition foundTransition = null;
+                    bool transitionAlone = false;
+                    foreach (Transition transition in state.Transitions)
+                    {
+                        foundTransition = transition;
+                        if (transition == descendent)
+                        {
+                            transitionAlone = true;
+                            break;
+                        }
+                        else if (transition.Trigger == descendent)
+                        {
+                            break;
+                        }
+                        else if (transition.Action == descendent)
+                        {
+                            break;
+                        }
+                        else if (transition.Condition == descendent)
+                        {
+                            break;
+                        }
+                        else
+                        {
+                            foundTransition = null;
+                        }
+                    }
+
+                    if (foundTransition != null)
+                    {
+                        path.Add(state);
+                        if (!transitionAlone)
+                        {
+                            path.Add(foundTransition);
+                        }
+
+                        break;
+                    }
+
+                    bool isVariableError = false;
+                    foreach (Variable variable in state.Variables)
+                    {
+                        if (variable.Default == descendent)
+                        {
+                            isVariableError = true;
+                        }
+                    }
+
+                    if (isVariableError)
+                    {
+                        path.Add(state);
+                        break;
+                    }
+                }
+            }
+
+            path.Add(descendent);
+            return path;
+        }       
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocatorFeature.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocatorFeature.cs
new file mode 100644 (file)
index 0000000..9c9ffb3
--- /dev/null
@@ -0,0 +1,19 @@
+// <copyright>
+//   Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Validation;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+
+    internal class StateMachineValidationErrorSourceLocatorFeature : ValidationErrorSourceLocatorFeature
+    {
+        protected override IValidationErrorSourceLocator ValidationErrorSourceLocator
+        {
+            get { return new StateMachineValidationErrorSourceLocator(); }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..6cc6a7e
--- /dev/null
@@ -0,0 +1,443 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System;
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+    using System.Diagnostics;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Windows.Threading;
+    using System.Runtime;
+    using System.Collections.Generic;
+    using System.Activities.Presentation.View;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Collections.ObjectModel;
+    using System.Globalization;
+    using System.Activities.Presentation.View.OutlineView;
+
+    partial class SwitchDesigner
+    {
+        const string ExpandViewStateKey = "IsExpanded";
+
+        public static readonly DependencyProperty CaseTypeProperty =
+            DependencyProperty.Register(
+            "CaseType",
+            typeof(Type),
+            typeof(SwitchDesigner),
+            new UIPropertyMetadata(null));
+
+        public static readonly DependencyProperty SelectedCaseProperty =
+            DependencyProperty.Register(
+            "SelectedCase",
+            typeof(ModelItem),
+            typeof(SwitchDesigner),
+            new UIPropertyMetadata(null));
+
+        public static readonly DependencyProperty ShowDefaultCaseExpandedProperty =
+            DependencyProperty.Register(
+            "ShowDefaultCaseExpanded",
+            typeof(bool),
+            typeof(SwitchDesigner),
+            new UIPropertyMetadata(false));
+
+        public static readonly DependencyProperty NewKeyProperty =
+            DependencyProperty.Register(
+            "NewKey",
+            typeof(object),
+            typeof(SwitchDesigner),
+            new UIPropertyMetadata(null));
+
+        static TypeResolvingOptions argumentTypeResolvingOptions;
+
+        TextBlock addNewCaseLabel;
+        CaseKeyBox caseKeyBox;
+
+        public bool ShowDefaultCaseExpanded
+        {
+            get
+            {
+                return (bool)this.GetValue(ShowDefaultCaseExpandedProperty);
+            }
+            set
+            {
+                this.SetValue(ShowDefaultCaseExpandedProperty, value);
+            }
+        }
+
+        ModelItem SelectedCase
+        {
+            get
+            {
+                return (ModelItem)this.GetValue(SelectedCaseProperty);
+            }
+            set
+            {
+                this.SetValue(SelectedCaseProperty, value);
+            }
+        }
+
+        Type CaseType
+        {
+            get { return (Type)GetValue(CaseTypeProperty); }
+            set { SetValue(CaseTypeProperty, value); }
+        }
+
+        object NewKey
+        {
+            get { return GetValue(NewKeyProperty); }
+            set { SetValue(NewKeyProperty, value); }
+        }
+
+        public CaseKeyValidationCallbackDelegate CheckDuplicateCaseKey
+        {
+            get
+            {
+                return (object obj, out string reason) =>
+                {
+                    reason = string.Empty;
+                    if (ContainsCaseKey(obj))
+                    {
+                        string key = obj != null ? obj.ToString() : "(null)";
+                        reason = string.Format(CultureInfo.CurrentCulture, SR.DuplicateCaseKey, key);
+                        return false;
+                    }
+                    return true;
+                };
+            }
+        }
+
+        static List<Type> defaultTypes;
+        static List<Type> DefaultTypes
+        {
+            get
+            {
+                if (defaultTypes == null)
+                {
+                    defaultTypes = new List<Type>
+                    {
+                        typeof(bool),
+                        typeof(int),
+                        typeof(string),
+                    };
+                }
+                return defaultTypes;
+            }
+        }
+
+        static TypeResolvingOptions ArgumentTypeResolvingOptions
+        {
+            get
+            {
+                if (argumentTypeResolvingOptions == null)
+                {
+                    argumentTypeResolvingOptions = new TypeResolvingOptions(DefaultTypes)
+                    {
+                        Filter = null,
+                    };
+                }
+                return argumentTypeResolvingOptions;
+            }
+        }
+
+        [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public SwitchDesigner()
+        {
+            InitializeComponent();
+            this.Loaded += new RoutedEventHandler(OnLoaded);
+            this.Unloaded += new RoutedEventHandler(OnUnloaded);
+            this.Resources.Add("ModelItemKeyValuePairType", typeof(ModelItemKeyValuePair<,>));
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            base.OnModelItemChanged(newItem);
+            Type modelItemType = this.ModelItem.ItemType;
+            Type[] types = modelItemType.GetGenericArguments();
+            Fx.Assert(types.Length == 1, "Switch should have exactly one generic argument");
+            this.CaseType = types[0];
+        }
+
+        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "Default" && !this.ShowDefaultCaseExpanded)
+            {
+                ExpandDefaultView();
+                this.UpdateSelection(null);
+            }
+        }
+
+        void OnLoaded(object sender, RoutedEventArgs e)
+        {
+            this.Context.Items.Subscribe<Selection>(OnSelectionChanged);
+            this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
+
+            ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
+
+            foreach (ModelItem modelItem in this.ModelItem.Properties["Cases"].Dictionary.Properties["ItemsCollection"].Collection)
+            {
+                bool? isExpanded = (bool?)viewStateService.RetrieveViewState(modelItem, ExpandViewStateKey);
+                if (isExpanded != null && isExpanded.Value)
+                {
+                    this.SelectedCase = modelItem;
+                    CollapseDefaultView();
+                    break;
+                }
+            }
+        }
+
+        void OnUnloaded(object sender, RoutedEventArgs e)
+        {
+            this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
+            this.Context.Items.Unsubscribe<Selection>(OnSelectionChanged);
+        }
+
+        void OnSelectionChanged(Selection selection)
+        {
+            if (this.IsDescendantOfDefault(selection.PrimarySelection))
+            {
+                this.ExpandDefaultView();
+            }
+            else
+            {
+                foreach (ModelItem caseObject in this.ModelItem.Properties["Cases"].Dictionary.Properties["ItemsCollection"].Collection)
+                {
+                    if (IsDescendantOfCase(caseObject, selection.PrimarySelection))
+                    {
+                        UpdateSelection(caseObject);
+                        break;
+                    }
+                }
+            }
+        }
+
+        static bool IsAncestorOf(ModelItem ancester, ModelItem descendant)
+        {
+            if (ancester == null)
+            {
+                return false;
+            }
+
+            ModelItem itr = descendant;
+            while (itr != null)
+            {
+                if (itr == ancester)
+                {
+                    return true;
+                }
+                itr = itr.Parent;
+            }
+            return false;
+        }
+
+        bool IsDescendantOfDefault(ModelItem descendant)
+        {
+            if (descendant == null)
+            {
+                return false;
+            }
+            else
+            {
+                ModelItem defaultValue = this.ModelItem.Properties["Default"].Value;
+                return IsAncestorOf(defaultValue, descendant);
+            }
+        }
+
+        internal static bool IsDescendantOfCase(ModelItem caseObject, ModelItem descendant)
+        {
+            Fx.Assert(caseObject != null, "Case object mustn't be null.");
+            if (caseObject == descendant)
+            {
+                return true;
+            }
+            else
+            {
+                ModelItem caseValue = caseObject.Properties["Value"].Value;
+                return IsAncestorOf(caseValue, descendant);
+            }
+        }
+
+        void UpdateSelection(ModelItem newSelectedCase)
+        {
+            ModelItem oldSelectedCase = this.SelectedCase;
+            this.SelectedCase = newSelectedCase;
+
+            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
+            {
+                if (oldSelectedCase != null)
+                {
+                    CaseDesigner oldSelectedCaseDesigner = (CaseDesigner)oldSelectedCase.View;
+                    if (oldSelectedCaseDesigner != null)
+                    {
+                        oldSelectedCaseDesigner.ExpandState = false;
+                        oldSelectedCaseDesigner.PinState = false;
+                    }
+                }
+                if (newSelectedCase != null)
+                {
+                    CollapseDefaultView();
+
+                    CaseDesigner newSelectedCaseDesigner = (CaseDesigner)newSelectedCase.View;
+                    if (newSelectedCaseDesigner != null)
+                    {
+                        newSelectedCaseDesigner.ExpandState = true;
+                        newSelectedCaseDesigner.PinState = true;
+                    }
+                }
+            }));
+        }
+
+        internal static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(Switch<>);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(SwitchDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Default"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, new TypeResolvingOptionsAttribute(ArgumentTypeResolvingOptions));
+
+            // Hide Cases node in the treeview and display its child nodes directly.
+            builder.AddCustomAttributes(type, type.GetProperty("Cases"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false, ChildNodePrefix = "Case : " });
+        }
+
+        void OnDefaultCaseViewMouseDown(object sender, MouseButtonEventArgs e)
+        {
+            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
+            {
+                SwitchTryCatchDesignerHelper.MakeRootDesigner(this);
+                e.Handled = true;
+            }
+            else if (e.LeftButton == MouseButtonState.Pressed)
+            {
+                ExpandDefaultView();
+                Keyboard.Focus((IInputElement)sender);
+            }
+            else if (e.RightButton == MouseButtonState.Pressed)
+            {
+                if (this.IsDefaultCaseViewExpanded())
+                {
+                    Keyboard.Focus((IInputElement)sender);
+                }
+                e.Handled = true;
+            }
+        }
+
+        void OnDefaultCaseViewMouseUp(object sender, MouseButtonEventArgs e)
+        {
+            // avoid context menu upon right-click when it's collapsed
+            if (!IsDefaultCaseViewExpanded() && e.RightButton == MouseButtonState.Released)
+            {
+                e.Handled = true;
+            }
+        }
+
+        bool IsDefaultCaseViewExpanded()
+        {
+            DesignerView designerView = this.Context.Services.GetService<DesignerView>();
+            return this.ShowDefaultCaseExpanded || designerView.ShouldExpandAll;
+        }
+
+        void OnDefaultCaseViewKeyDown(object sender, KeyEventArgs e)
+        {
+            if (sender == e.OriginalSource && (e.Key == Key.Space || e.Key == Key.Enter))
+            {
+                ExpandDefaultView();
+                e.Handled = true;
+            }
+        }
+
+        void ExpandDefaultView()
+        {
+            UpdateSelection(null);
+            this.ShowDefaultCaseExpanded = true;
+        }
+
+        void CollapseDefaultView()
+        {
+            this.ShowDefaultCaseExpanded = false;
+        }
+
+        void OnAddNewCaseLabelLoaded(object sender, RoutedEventArgs e)
+        {
+            this.addNewCaseLabel = (TextBlock)sender;
+            this.addNewCaseLabel.Visibility = Visibility.Collapsed;
+        }
+
+        void OnAddNewCaseLabelUnloaded(object sender, RoutedEventArgs e)
+        {
+            this.addNewCaseLabel = null;
+        }
+
+        void OnNewKeyTextBoxGotFocus(object sender, RoutedEventArgs e)
+        {
+            this.addNewCaseLabel.Visibility = Visibility.Visible;
+        }
+
+        void OnNewKeyCommitted(object sender, RoutedEventArgs e)
+        {
+            this.addNewCaseLabel.Visibility = Visibility.Collapsed;
+            try
+            {
+                AddNewCase(this.NewKey);
+            }
+            catch (ArgumentException ex)
+            {
+                ErrorReporting.ShowErrorMessage(ex.Message);
+            }
+        }
+
+        void OnNewKeyEditCancelled(object sender, RoutedEventArgs e)
+        {
+            this.addNewCaseLabel.Visibility = Visibility.Collapsed;
+        }
+
+        void OnCaseKeyBoxLoaded(object sender, RoutedEventArgs e)
+        {
+            this.caseKeyBox = (CaseKeyBox)sender;
+        }
+
+        void AddNewCase(object newKey)
+        {
+            Type caseType = typeof(ModelItemKeyValuePair<,>).MakeGenericType(new Type[] { this.CaseType, typeof(Activity) });
+            object mutableKVPair = Activator.CreateInstance(caseType, new object[] { newKey, null });
+            ModelProperty casesProp = this.ModelItem.Properties["Cases"];
+            Fx.Assert(casesProp != null, "Property Cases is not available");
+            ModelItem cases = casesProp.Value;
+            Fx.Assert(cases != null, "Cannot get ModelItem from property Cases");
+            ModelProperty itemsCollectionProp = cases.Properties["ItemsCollection"];
+            Fx.Assert(itemsCollectionProp != null, "Cannot get property ItemsCollection from Cases");
+            ModelItemCollection itemsCollection = itemsCollectionProp.Collection;
+            Fx.Assert(itemsCollection != null, "Cannot get ModelItemCollection from property ItemsCollection");
+            itemsCollection.Add(mutableKVPair);
+
+            this.caseKeyBox.ResetText();
+        }
+
+        bool ContainsCaseKey(object key)
+        {
+            Type caseType = typeof(ModelItemKeyValuePair<,>).MakeGenericType(new Type[] { this.CaseType, typeof(Activity) });
+            ModelProperty casesProp = this.ModelItem.Properties["Cases"];
+            ModelItem cases = casesProp.Value;
+            ModelProperty itemsCollectionProp = cases.Properties["ItemsCollection"];
+            ModelItemCollection itemsCollection = itemsCollectionProp.Collection;
+
+            foreach (ModelItem item in itemsCollection)
+            {
+                object itemKey = caseType.GetProperty("Key").GetGetMethod().Invoke(item.GetCurrentValue(), null);
+                if ((itemKey != null && itemKey.Equals(key)) || (itemKey == key))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchTryCatchDesignerHelper.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchTryCatchDesignerHelper.cs
new file mode 100644 (file)
index 0000000..c8d2719
--- /dev/null
@@ -0,0 +1,46 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+
+    static class SwitchTryCatchDesignerHelper
+    {
+        public static void MakeRootDesigner(WorkflowViewElement wve)
+        {
+            DesignerView designerView = wve.Context.Services.GetService<DesignerView>();
+            if (!wve.Equals(designerView.RootDesigner))
+            {
+                designerView.MakeRootDesigner(wve.ModelItem);
+            }
+        }
+
+        public static void MakeParentRootDesigner<TParentType>(WorkflowViewElement wve)
+            where TParentType : WorkflowViewElement
+        {
+            WorkflowViewElement view = FindParentDesigner<TParentType>(wve);
+            if (view != null)
+            {
+                MakeRootDesigner(view);
+            }
+        }
+
+        static TParentType FindParentDesigner<TParentType>(WorkflowViewElement wve) 
+            where TParentType : WorkflowViewElement
+        {
+            ModelItem parent = wve.ModelItem.Parent;
+            while (parent != null)
+            {
+                if (parent.View != null && parent.View is TParentType)
+                {
+                    return (TParentType)parent.View;
+                }
+                parent = parent.Parent;
+            }
+            return null;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/DesignerStyleDictionary.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/DesignerStyleDictionary.xaml.cs
new file mode 100644 (file)
index 0000000..4735b4b
--- /dev/null
@@ -0,0 +1,49 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.Activities.Core.Presentation.Themes
+{
+    using System.Windows;
+    using System.Runtime;
+
+    sealed partial class DesignerStylesDictionary
+    {
+        static DesignerStylesDictionary instance;
+        
+        internal DesignerStylesDictionary()
+        {
+            InitializeComponent();
+        }
+
+        static DesignerStylesDictionary Instance
+        {
+            get
+            {
+                if (null == instance)
+                {
+                    instance = new DesignerStylesDictionary();
+                }
+                return instance;
+            }
+        }
+
+        public static Style SequenceStyle
+        {
+            get
+            {
+                var key = "SequenceStyle";
+                if (!Instance.Contains(key))
+                {
+                    throw FxTrace.Exception.ArgumentNull(key);
+                }
+                var style = (Style)Instance[key];
+                if (!style.IsSealed)
+                {
+                    style.Seal();
+                }
+                return style;
+            }
+        }
+
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/EditorCategoryTemplateDictionary.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/EditorCategoryTemplateDictionary.xaml.cs
new file mode 100644 (file)
index 0000000..9468d82
--- /dev/null
@@ -0,0 +1,81 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.Activities.Core.Presentation.Themes
+{
+    using System.Windows;
+    using System.Runtime;
+    using System.Activities.Presentation.View;
+
+    sealed partial class EditorCategoryTemplateDictionary
+    {
+        static EditorCategoryTemplateDictionary instance;
+
+        public EditorCategoryTemplateDictionary()
+        {
+            InitializeComponent();
+        }
+
+        public static EditorCategoryTemplateDictionary Instance
+        {
+            get
+            {
+                if (null == instance)
+                {
+                    instance = new EditorCategoryTemplateDictionary();
+                }
+                return instance;
+            }
+        }
+
+        public DataTemplate GetCategoryTemplate(string templateName)
+        {
+            DataTemplate result = null;
+            if (this.Contains(templateName))
+            {
+                if (!(this[templateName] is DataTemplate))
+                {
+                    Fx.Assert(false, "'" + templateName + "' is not a DataTemplate");
+                }
+                result = this[templateName] as DataTemplate;
+            }
+            else
+            {
+                Fx.Assert(false, "DataTemplate '" + templateName + "' not found");
+            }
+            return result;
+        }
+
+        public string GetCategoryTitle(string categoryName)
+        {
+            string result = string.Empty;
+            if (this.Contains(categoryName))
+            {
+                if (!(this[categoryName] is string))
+                {
+                    Fx.Assert(false, "'" + categoryName + "' is not a string");
+                }
+                result = this[categoryName] as string;
+            }
+            else
+            {
+                Fx.Assert(false, "Category title for '" + categoryName + "' not found");
+            }
+            return result;
+        }
+
+        public object GetCategoryImage(string imageName)
+        {
+            object result = null;
+            if (this.Contains(imageName))
+            {
+                result = this[imageName];
+            }
+            else
+            {
+                Fx.Assert(false, "No resource with key '" + imageName + "'");
+            }
+            return result;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/StringResourceDictionary.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/StringResourceDictionary.xaml.cs
new file mode 100644 (file)
index 0000000..afa6db2
--- /dev/null
@@ -0,0 +1,39 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.Activities.Core.Presentation.Themes
+{
+
+    sealed partial class StringResourceDictionary
+    {
+        static StringResourceDictionary instance;
+
+        public StringResourceDictionary()
+        {
+            InitializeComponent();
+        }
+
+        public static StringResourceDictionary Instance
+        {
+            get
+            {
+                if (null == instance)
+                {
+                    instance = new StringResourceDictionary();
+                }
+                return instance;
+            }
+        }
+
+        public string GetString(string key)
+        {
+            return (string)(this.Contains(key) ? this[key] : null);
+        }
+
+        public string GetString(string key, string defaultValue)
+        {
+            return (string)(this.Contains(key) ? this[key] : defaultValue);
+        }
+
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransactionScopeDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransactionScopeDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..8965be2
--- /dev/null
@@ -0,0 +1,26 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Statements;
+
+    using System.ComponentModel;
+
+    partial class TransactionScopeDesigner
+    {
+        public TransactionScopeDesigner()
+        {
+            this.InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(TransactionScope);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(TransactionScopeDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..57de538
--- /dev/null
@@ -0,0 +1,557 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//-----------------------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.FreeFormEditing;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Statements;
+    using System.Collections.ObjectModel;
+    using System.Collections.Specialized;
+    using System.ComponentModel;
+    using System.Linq;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls.Primitives;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Windows.Controls;
+    using System.Activities.Presentation.Internal.PropertyEditing;
+    using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
+
+    partial class TransitionDesigner
+    {
+        public static readonly DependencyProperty NewTransitionProperty = DependencyProperty.Register("NewTransition", typeof(object), typeof(TransitionDesigner), new PropertyMetadata(null));
+        public static readonly DependencyProperty TransitionsSharingTriggerProperty = DependencyProperty.Register("TransitionsSharingTrigger", typeof(ObservableCollection<ExpandableItemWrapper>), typeof(TransitionDesigner), new PropertyMetadata(null));
+        public static readonly DependencyProperty SelectedTransitionProperty = DependencyProperty.Register("SelectedTransition", typeof(ExpandableItemWrapper), typeof(TransitionDesigner), new PropertyMetadata(null));
+
+        internal const string TriggerPropertyName = "Trigger";
+        internal const string ActionPropertyName = "Action";
+        internal const string ToPropertyName = "To";
+        internal const string ConditionPropertyName = "Condition";
+        const string ExpandViewStateKey = "IsExpanded";
+        const int TotalFreeConnectionPointNum = StateContainerEditor.ConnectionPointNum * 4;
+
+        private ModelItem parentStateModelItem = null;
+        private bool suppressUpdatingTransitionsSharingTrigger = false;
+        private bool isPopulated = false;
+        private CaseKeyBox addNewTransitionBox = null;
+        private TextBlock addNewTransitionLabel = null;
+
+        [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public TransitionDesigner()
+        {
+            InitializeComponent();
+            this.TransitionsSharingTrigger = new ObservableCollection<ExpandableItemWrapper>();
+
+            this.Loaded += (sender, e) =>
+            {
+                if (!this.isPopulated)
+                {
+                    this.isPopulated = true;
+                    this.TransitionsSharingTrigger.CollectionChanged += OnTransitionsCollectionChanged;
+                    this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
+                    this.parentStateModelItem = StateContainerEditor.GetParentStateModelItemForTransition(this.ModelItem);
+                    this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.CollectionChanged += OnTransitionsModelItemCollectionChanged;
+                    ExpandableItemWrapper selectedItem = this.UpdateTransitionsSharingTrigger();
+                    if (null != selectedItem)
+                    {
+                        this.SelectedTransition = selectedItem;
+                    }
+                }
+            };
+
+            this.Unloaded += (sender, e) =>
+            {
+                if (this.isPopulated)
+                {
+                    this.isPopulated = false;
+                    this.TransitionsSharingTrigger.Clear();
+                    this.TransitionsSharingTrigger.CollectionChanged -= OnTransitionsCollectionChanged;
+                    this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
+                    this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.CollectionChanged -= OnTransitionsModelItemCollectionChanged;
+                    this.SelectedTransition = null;
+                    this.parentStateModelItem = null;
+                }
+            };
+        }
+
+        public object NewTransition
+        {
+            get { return (object)this.GetValue(NewTransitionProperty); }
+            set { this.SetValue(NewTransitionProperty, value); }
+        }
+
+        public ObservableCollection<ExpandableItemWrapper> TransitionsSharingTrigger
+        {
+            get { return (ObservableCollection<ExpandableItemWrapper>)this.GetValue(TransitionsSharingTriggerProperty); }
+            set { this.SetValue(TransitionsSharingTriggerProperty, value); }
+        }
+
+        public ExpandableItemWrapper SelectedTransition 
+        {
+            get { return (ExpandableItemWrapper)this.GetValue(SelectedTransitionProperty); }
+            set { this.SetValue(SelectedTransitionProperty, value); }
+        }
+
+        private void OnNewTransitionLoaded(object sender, RoutedEventArgs e)
+        {
+            this.addNewTransitionBox = (CaseKeyBox)sender;
+        }
+
+        private void OnNewTransitionUnloaded(object sender, RoutedEventArgs e)
+        {
+            this.addNewTransitionBox = null;
+        }
+
+        private ExpandableItemWrapper UpdateTransitionsSharingTrigger()
+        {
+            ExpandableItemWrapper wrapper = null;
+            if (!this.suppressUpdatingTransitionsSharingTrigger)
+            {
+                this.TransitionsSharingTrigger.Clear();
+                bool expandTargetTransition = true;
+                object expandCollapseTargetViewState = this.ViewStateService.RetrieveViewState(this.ModelItem, ExpandViewStateKey);
+
+                if (expandCollapseTargetViewState != null)
+                {
+                    expandTargetTransition = (bool)expandCollapseTargetViewState;
+                }
+
+                wrapper = new ExpandableItemWrapper()
+                {
+                    Item = this.ModelItem,
+                    IsExpanded = expandTargetTransition
+                };
+                ModelItem triggerModelItem = this.ModelItem.Properties[TriggerPropertyName].Value;
+                if (triggerModelItem != null)
+                {
+                    foreach (ModelItem transitionModelItem in this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection)
+                    {
+                        if (transitionModelItem != this.ModelItem)
+                        {
+                            if (triggerModelItem == transitionModelItem.Properties[TriggerPropertyName].Value)
+                            {
+                                bool expandTransition = false;
+                                object expandCollapseViewState = this.ViewStateService.RetrieveViewState(transitionModelItem, ExpandViewStateKey);
+                                if (expandCollapseViewState != null)
+                                {
+                                    expandTransition = (bool)expandCollapseViewState;
+                                }
+
+                                this.TransitionsSharingTrigger.Add(new ExpandableItemWrapper()
+                                {
+                                    Item = transitionModelItem,
+                                    IsExpanded = expandTransition
+                                });
+                            }
+                        }
+                        else
+                        {
+                            this.TransitionsSharingTrigger.Add(wrapper);
+                        }
+                    }
+                }
+                // Connectors starting from the same point should share the same trigger
+                else
+                {
+                    PointCollection thisPointCollection = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerEditor.ConnectorLocationViewStateKey) as PointCollection;
+                    if (thisPointCollection != null && thisPointCollection.Count > 1)
+                    {
+                        foreach (ModelItem transitionModelItem in this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection)
+                        {
+                            if (transitionModelItem != this.ModelItem)
+                            {
+                                PointCollection pointCollection = this.ViewStateService.RetrieveViewState(transitionModelItem, StateContainerEditor.ConnectorLocationViewStateKey) as PointCollection;
+                                if (pointCollection != null && pointCollection.Count > 0)
+                                {
+                                    if (pointCollection[0].IsEqualTo(thisPointCollection[0]))
+                                    {
+                                        Fx.Assert(transitionModelItem.Properties[TriggerPropertyName].Value == null, "Transition trigger should be null.");
+                                        bool expandTransition = false;
+                                        object expandCollapseViewState = this.ViewStateService.RetrieveViewState(transitionModelItem, ExpandViewStateKey);
+
+                                        if (expandCollapseViewState != null)
+                                        {
+                                            expandTransition = (bool)expandCollapseViewState;
+                                        }
+
+                                        this.TransitionsSharingTrigger.Add(new ExpandableItemWrapper()
+                                        {
+                                            Item = transitionModelItem,
+                                            IsExpanded = expandTransition
+                                        });
+                                    }
+                                }
+                            }
+                            else
+                            {
+                                this.TransitionsSharingTrigger.Add(wrapper);
+                            }
+                        }
+                    }
+                }
+            }
+
+            return wrapper;
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type transitionType = typeof(Transition);
+            builder.AddCustomAttributes(transitionType, new DesignerAttribute(typeof(TransitionDesigner)));
+            builder.AddCustomAttributes(transitionType, transitionType.GetProperty(TransitionDesigner.TriggerPropertyName), BrowsableAttribute.No);
+            builder.AddCustomAttributes(transitionType, transitionType.GetProperty(TransitionDesigner.ActionPropertyName), BrowsableAttribute.No);
+            builder.AddCustomAttributes(transitionType, transitionType.GetProperty(TransitionDesigner.ToPropertyName), BrowsableAttribute.No);
+            builder.AddCustomAttributes(transitionType, transitionType.GetProperty(TransitionDesigner.ConditionPropertyName), new HidePropertyInOutlineViewAttribute());
+        }
+
+        private static void SwapItems(ModelItemCollection collection, ModelItem modelItem1, ModelItem modelItem2)
+        {
+            int index1 = collection.IndexOf(modelItem1);
+            int index2 = collection.IndexOf(modelItem2);
+            collection.Remove(modelItem1);
+            collection.Insert(index2, modelItem1);
+            collection.Remove(modelItem2);
+            collection.Insert(index1, modelItem2);
+        }
+
+        private void OnTransitionsModelItemCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+        {
+            this.UpdateTransitionsSharingTrigger();
+        }
+
+        private void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            // Update the Trigger property for all transitions that share the trigger
+            if (e.PropertyName.Equals(TriggerPropertyName) && this.TransitionsSharingTrigger.Count > 0)
+            {
+                foreach (ExpandableItemWrapper wrapper in this.TransitionsSharingTrigger)
+                {
+                    if (wrapper.Item != this.ModelItem)
+                    {
+                        wrapper.Item.Properties[TriggerPropertyName].SetValue(this.ModelItem.Properties[TriggerPropertyName].Value);
+                    }
+                }
+            }
+        }
+
+        private void OnTransitionsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+        {
+            if (e.Action == NotifyCollectionChangedAction.Move)
+            {
+                try
+                {
+                    // We are updating the Transitions collection in the parent State in response to
+                    // the changes in this.TransitionsSharingTrigger. We don't want to update it again
+                    // to introduce a dead loop
+                    this.suppressUpdatingTransitionsSharingTrigger = true;
+                    using (EditingScope scope = (EditingScope)this.ModelItem.BeginEdit(SR.ReorderItems))
+                    {
+                        ModelItem movedModelItem = this.TransitionsSharingTrigger[e.NewStartingIndex].Item;
+                        ModelItemCollection transitionsCollection = this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection;
+                        // moving down
+                        if (e.OldStartingIndex < e.NewStartingIndex)
+                        {
+                            ModelItem nextModelItem = this.TransitionsSharingTrigger[e.OldStartingIndex].Item;
+                            SwapItems(transitionsCollection, movedModelItem, nextModelItem);
+                        }
+                        // moving up
+                        else if (e.OldStartingIndex > e.NewStartingIndex)
+                        {
+                            ModelItem previousModelItem = this.TransitionsSharingTrigger[e.OldStartingIndex].Item;
+                            SwapItems(transitionsCollection, previousModelItem, movedModelItem);
+                        }
+                        this.Context.Services.GetService<ModelTreeManager>().AddToCurrentEditingScope(new TransitionReorderChange());
+                        scope.Complete();
+                    }
+                }
+                finally
+                {
+                    this.suppressUpdatingTransitionsSharingTrigger = false;
+                }
+            }
+        }
+
+        private void OnDestinationStateClicked(object sender, RoutedEventArgs e)
+        {
+            Button button = (Button)sender;
+            ModelItem destinationState = button.Tag as ModelItem;
+            if (destinationState != null)
+            {
+                this.Designer.MakeRootDesigner(destinationState);
+            }
+        }
+
+        private void OnSourceStateClicked(object sender, RoutedEventArgs e)
+        {
+            ModelItem sourceState = StateContainerEditor.GetParentStateModelItemForTransition(this.ModelItem);
+            if (sourceState != null)
+            {
+                this.Designer.MakeRootDesigner(sourceState);
+            }
+        }
+
+        private void OnExpandCollapseButtonClicked(object sender, RoutedEventArgs e)
+        {
+            ToggleButton button = (ToggleButton)sender;
+            ListBox listBox = VisualTreeUtils.FindVisualAncestor<ListBox>(button);
+            ExpandableItemWrapper wrapper = (ExpandableItemWrapper)listBox.SelectedItem;
+            wrapper.IsExpanded = button.IsChecked.Value;
+            this.ViewStateService.StoreViewState(wrapper.Item, ExpandViewStateKey, button.IsChecked.Value);
+
+            if ((wrapper.IsExpanded && this.Designer.ShouldCollapseAll) || !wrapper.IsExpanded && this.Designer.ShouldExpandAll)
+            {
+                // Pin the item so that it can still be expanded / collapsed when CollapseAll / ExpandAll is enabled
+                wrapper.IsPinned = true;
+            }
+        }
+
+        void OnTransitionNameTextBoxLostFocus(object sender, RoutedEventArgs e)
+        {
+            TextBox textBox = (TextBox)sender;
+            textBox.ScrollToHome();
+        }
+
+        void OnTransitionNameTextBoxContextMenuOpening(object sender, ContextMenuEventArgs e)
+        {
+            // to disable the context menu
+            e.Handled = true;
+        }
+
+        void OnCopyCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
+        {
+            Selection selection = this.Context.Items.GetValue<Selection>();
+            DesignerView designerView = this.Context.Services.GetService<DesignerView>();
+
+            if (null != selection &&
+                selection.SelectedObjects.Contains(this.ModelItem))
+            {
+                // Copy is intentionally disabled, when the root (TransitionDesigner)
+                // is selected, because we don't support transition copy on the FreeFormPanel.
+                e.CanExecute = false;
+            }
+            else
+            {
+                e.CanExecute = !this.IsReadOnly && CutCopyPasteHelper.CanCopy(this.Context);
+            }
+
+            e.ContinueRouting = false;
+            e.Handled = true;
+        }
+
+        void OnCopyCommandExecute(object sender, ExecutedRoutedEventArgs e)
+        {
+            this.Context.Services.GetService<DesignerPerfEventProvider>().WorkflowDesignerCopyStart();
+            CutCopyPasteHelper.DoCopy(this.Context);
+            e.Handled = true;
+            this.Context.Services.GetService<DesignerPerfEventProvider>().WorkflowDesignerCopyEnd();
+        }
+
+        private void OnWIPPreviewDragEnter(object sender, DragEventArgs e)
+        {
+            // We want to disable hover-to-expand for WIPs when dragging from the designer surface.
+            // This is because after hover-to-expand, the transition designer will be unloaded. 
+            // As a result, 1) there is no way to update other transitions if the shared trigger is updated, and 
+            // 2) The ReorderableListEditor will be cleared and there is no way to update the source container
+            // for actions if actions are updated.
+
+            WorkflowItemPresenter presenter = (WorkflowItemPresenter)sender;
+            if (presenter.Item != null && DragDropHelper.GetDraggedModelItems(e).Count<ModelItem>() > 0)
+            {
+                WorkflowViewElement topmostWFViewElement = this.FindTopmostWorkflowViewelementByHitTest(
+                    presenter, e.GetPosition(presenter));
+                bool isAlreadyExpanded = topmostWFViewElement != null ? topmostWFViewElement.ShowExpanded : false;
+                if (!isAlreadyExpanded)
+                {
+                    // Handling the DragEnter would not only disable Auot-expand but also Auto-surround UI gesture (Bug 202880).
+                    // To circumvent this problem, a new method (ShowSpacerHelperOnDraggedItems) is used to show
+                    // the spacer directly.
+                    presenter.ShowSpacerHelperOnDraggedItems(e);
+                    e.Handled = true;
+                }
+            }
+        }
+
+        void OnAddNewTransitionLabelLoaded(object sender, RoutedEventArgs e)
+        {
+            this.addNewTransitionLabel = (TextBlock)sender;
+            this.addNewTransitionLabel.Visibility = Visibility.Collapsed;
+        }
+
+        void OnAddNewTransitionLabelUnloaded(object sender, RoutedEventArgs e)
+        {
+            this.addNewTransitionLabel = null;
+        }
+        
+        void OnNewTransitionTextBoxGotFocus(object sender, RoutedEventArgs e)
+        {
+            this.addNewTransitionLabel.Visibility = Visibility.Visible;
+            this.addNewTransitionBox.ViewModel.ComboBoxItems = new ObservableCollection<string>(
+                GetAvailableStates().Select(
+                modelItem => (modelItem.Properties[StateDesigner.DisplayNamePropertyName].ComputedValue as string)).Where(
+                    displayName => !string.IsNullOrEmpty(displayName)).Distinct());
+        }
+
+        void OnNewTransitionCommitted(object sender, RoutedEventArgs e)
+        {
+            this.addNewTransitionLabel.Visibility = Visibility.Collapsed;
+
+            try
+            {
+                string selectedItem = this.NewTransition as string;
+
+                if (null != selectedItem)
+                {
+                    AddNewTransition(selectedItem);
+                }
+
+                this.addNewTransitionBox.ResetText();
+            }
+            catch (ArgumentException ex)
+            {
+                ErrorReporting.ShowErrorMessage(ex.Message);
+            }
+        }
+
+        void OnNewTransitionEditCancelled(object sender, RoutedEventArgs e)
+        {
+            this.addNewTransitionLabel.Visibility = Visibility.Collapsed;
+        }
+
+        private void AddNewTransition(string stateName)
+        {
+            ModelItem stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.parentStateModelItem);
+            ModelItem toStateModelItem = null;
+
+            foreach (ModelItem stateModelItem in stateMachineModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
+            {
+                if (string.Equals(stateName, stateModelItem.Properties[StateDesigner.DisplayNamePropertyName].ComputedValue as string, StringComparison.Ordinal))
+                {
+                    toStateModelItem = stateModelItem;
+                }
+            }
+
+            if (null == toStateModelItem)
+            {
+                return;
+            }
+
+            Fx.Assert(toStateModelItem != null, "To state cannot be null.");
+
+            using (EditingScope editingScope = (EditingScope)this.ModelItem.BeginEdit(SR.CreateTransition))
+            {
+                ModelItem triggerModelItem = this.ModelItem.Properties[TriggerPropertyName].Value;
+                State toState = toStateModelItem.GetCurrentValue() as State;
+
+                ModelItem newTransitionItem = this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(new Transition()
+                {
+                    Trigger = null == triggerModelItem ? null : triggerModelItem.GetCurrentValue() as Activity,
+                    DisplayName = StateContainerEditor.GenerateTransitionName(stateMachineModelItem),
+                    To = toState
+                });
+
+                this.ViewStateService.StoreViewState(newTransitionItem, ExpandViewStateKey, true);
+
+                if (null == triggerModelItem)
+                {
+                    PointCollection thisPointCollection = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerEditor.ConnectorLocationViewStateKey) as PointCollection;
+                    if (null != thisPointCollection && thisPointCollection.Any())
+                    {
+                        PointCollection newTransitionViewState = new PointCollection
+                            {
+                                thisPointCollection[0] // start point
+                            };
+
+                        if (toState == this.parentStateModelItem.GetCurrentValue())
+                        {
+                            // add an invalid destination point for self-transition, to force a reroute of the connection point
+                            newTransitionViewState.Add(new Point(0, 0));
+                        }
+
+                        this.ViewStateService.StoreViewState(newTransitionItem, StateContainerEditor.ConnectorLocationViewStateKey, newTransitionViewState);
+                    }
+                }
+
+                editingScope.Complete();
+            }
+
+            this.UpdateTransitionsSharingTrigger();
+        }
+
+        private IEnumerable<ModelItem> GetAvailableStates()
+        {
+            List<ModelItem> availableStates = new List<ModelItem>();
+            ModelItem stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.parentStateModelItem);
+            Fx.Assert(null != stateMachineModelItem, "StateMachine must be the ancestor.");
+            Dictionary<ModelItem, int> stateToConnectionMap = new Dictionary<ModelItem, int>();
+
+            foreach (ModelItem stateModelItem in stateMachineModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
+            {
+
+                if (!stateToConnectionMap.ContainsKey(stateModelItem))
+                {
+                    stateToConnectionMap[stateModelItem] = 0;
+                }
+
+                foreach (ModelItem transitionModelItem in stateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection)
+                {
+                    // to simplify the model, count a source connection as one, regardless of whether it is shared Trigger or not.
+                    stateToConnectionMap[stateModelItem]++;
+                    
+                    ModelItem toStateModelItem = transitionModelItem.Properties[TransitionDesigner.ToPropertyName].Value;
+                    Fx.Assert(toStateModelItem != null, "To state of a transition cannot be null.");
+
+                    if (stateToConnectionMap.ContainsKey(toStateModelItem))
+                    {
+                        stateToConnectionMap[toStateModelItem]++;
+                    }
+                    else
+                    {
+                        stateToConnectionMap[toStateModelItem] = 1;
+                    }
+                }
+            }
+
+            foreach (ModelItem stateModelItem in stateToConnectionMap.Keys)
+            {
+                if (stateToConnectionMap[stateModelItem] < TotalFreeConnectionPointNum)
+                {
+                    // only allow connection to state that have available connection points
+                    availableStates.Add(stateModelItem);
+                }
+            }
+
+            return availableStates.OrderBy(modelItem => modelItem.Properties[StateDesigner.DisplayNamePropertyName].Value == null ? 
+                SR.EmptyName : 
+                modelItem.Properties[StateDesigner.DisplayNamePropertyName].Value.GetCurrentValue());
+        }
+
+        private WorkflowViewElement FindTopmostWorkflowViewelementByHitTest(Visual visualToHitTest, Point point)
+        {
+            HitTestResult result = VisualTreeHelper.HitTest(visualToHitTest, point);
+            if (result == null)
+            {
+                return null;
+            }
+
+            for (DependencyObject obj = result.VisualHit;
+                obj != null;
+                obj = VisualTreeHelper.GetParent(obj))
+            {
+                if (obj is WorkflowViewElement)
+                {
+                    return (WorkflowViewElement)obj;
+                }
+            }
+
+            return null;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionReorderChange.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionReorderChange.cs
new file mode 100644 (file)
index 0000000..9ae5796
--- /dev/null
@@ -0,0 +1,31 @@
+//----------------------------------------------------------------
+// <copyright company="Microsoft Corporation">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Model;
+
+    internal class TransitionReorderChange : Change
+    {
+        public override string Description
+        {
+            get 
+            { 
+                return null; 
+            }
+        }
+
+        public override bool Apply()
+        {
+            return false;
+        }
+
+        public override Change GetInverse()
+        {
+            return new TransitionReorderChange();
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TryCatchDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TryCatchDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..b33dff5
--- /dev/null
@@ -0,0 +1,605 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.Services;
+    using System.Activities.Statements;
+    using System.Collections.ObjectModel;
+    using System.Collections.Specialized;
+    using System.ComponentModel;
+    using System.Diagnostics.CodeAnalysis;
+    using System.IO;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Input;
+    using System.Windows.Threading;
+    using System.Windows.Controls;
+    using System.Activities.Presentation.View.OutlineView;
+
+    /// <summary>
+    /// Interaction logic for TryCatchDesigner.xaml
+    /// </summary>
+    partial class TryCatchDesigner
+    {
+        const string CatchesPropertyName = "Catches";
+        const string ExceptionTypePropertyName = "ExceptionType";
+        const string ExpandViewStateKey = "IsExpanded";
+
+        public static readonly DependencyProperty ShowTryExpandedProperty =
+            DependencyProperty.Register(
+                "ShowTryExpanded",
+                typeof(bool),
+                typeof(TryCatchDesigner),
+                new UIPropertyMetadata(true)
+            );
+
+        public static readonly DependencyProperty ShowFinallyExpandedProperty =
+            DependencyProperty.Register(
+                "ShowFinallyExpanded",
+                typeof(bool),
+                typeof(TryCatchDesigner),
+                new UIPropertyMetadata(false)
+            );
+
+        public static readonly DependencyProperty ShowTypePresenterExpandedProperty =
+            DependencyProperty.Register(
+                "ShowTypePresenterExpanded",
+                typeof(bool),
+                typeof(TryCatchDesigner),
+                new UIPropertyMetadata(false)
+            );
+
+        public static readonly DependencyProperty SelectedCatchProperty =
+            DependencyProperty.Register(
+            "SelectedCatch",
+            typeof(ModelItem),
+            typeof(TryCatchDesigner),
+            new UIPropertyMetadata(null));
+
+        static ObservableCollection<Type> mostRecentlyUsedTypes;
+        static ObservableCollection<Type> MostRecentlyUsedTypes
+        {
+            get
+            {
+                if (mostRecentlyUsedTypes == null)
+                {
+                    mostRecentlyUsedTypes = new ObservableCollection<Type>
+                    {
+                        typeof(ArgumentException),
+                        typeof(NullReferenceException),
+                        typeof(IOException),
+                        typeof(InvalidOperationException),
+                        typeof(Exception),
+                    };
+                }
+                return mostRecentlyUsedTypes;
+            }
+        }
+
+        public bool ShowTryExpanded
+        {
+            get
+            {
+                return (bool)this.GetValue(ShowTryExpandedProperty);
+            }
+            set
+            {
+                this.SetValue(ShowTryExpandedProperty, value);
+            }
+        }
+
+        public bool ShowFinallyExpanded
+        {
+            get
+            {
+                return (bool)this.GetValue(ShowFinallyExpandedProperty);
+            }
+            set
+            {
+                this.SetValue(ShowFinallyExpandedProperty, value);
+            }
+        }
+
+        public bool ShowTypePresenterExpanded
+        {
+            get
+            {
+                return (bool)this.GetValue(ShowTypePresenterExpandedProperty);
+            }
+            set
+            {
+                this.SetValue(ShowTypePresenterExpandedProperty, value);
+            }
+        }
+
+        ModelItem SelectedCatch
+        {
+            get
+            {
+                return (ModelItem)this.GetValue(SelectedCatchProperty);
+            }
+            set
+            {
+                this.SetValue(SelectedCatchProperty, value);
+            }
+        }
+
+        TypePresenter typePresenter;
+        Label addCatchHintLabel;
+
+        internal static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(TryCatch);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(TryCatchDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Try"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Finally"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Catches"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
+
+            // Make Catches collection's node visible in the document treeview but hide Catches node itself.
+            builder.AddCustomAttributes(type, type.GetProperty("Catches"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false });
+        }
+
+        [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public TryCatchDesigner()
+        {
+            InitializeComponent();
+
+            this.Loaded += OnLoaded;
+            this.Unloaded += OnUnloaded;
+        }
+
+        void OnLoaded(object sender, RoutedEventArgs e)
+        {
+            this.Context.Items.Subscribe<Selection>(OnSelectionChanged);
+            // at this time, this.ModelItem is already set
+            this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
+            this.ModelItem.Properties[CatchesPropertyName].Collection.CollectionChanged += OnModelItemCollectionChanged;
+
+            ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
+
+            foreach (ModelItem modelItem in this.ModelItem.Properties["Catches"].Collection)
+            {
+                bool? isExpanded = (bool?)viewStateService.RetrieveViewState(modelItem, ExpandViewStateKey);
+                if (isExpanded != null && isExpanded.Value)
+                {
+                    this.SelectedCatch = modelItem;
+                    CollapseTryView();
+                    CollapseFinallyView();
+                    break;
+                }
+            }
+        }
+
+        void OnUnloaded(object sender, RoutedEventArgs e)
+        {
+            this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
+            this.ModelItem.Properties[CatchesPropertyName].Collection.CollectionChanged -= OnModelItemCollectionChanged;
+            this.Context.Items.Unsubscribe<Selection>(OnSelectionChanged);
+        }
+
+        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            switch (e.PropertyName)
+            {
+                case "Try":
+                    ExpandTryView();
+                    break;
+
+                case "Finally":
+                    ExpandFinallyView();
+                    break;
+
+                default:
+                    break;
+            }
+        }
+
+        void OnModelItemCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+        {
+            // to update the filter
+            this.typePresenter.Filter = this.ExceptionTypeFilter;
+        }
+
+        void OnSelectionChanged(Selection selection)
+        {
+            if (IsDescendantOfTry(selection.PrimarySelection))
+            {
+                this.ExpandTryView();
+            }
+            else if (IsDescendantOfFinally(selection.PrimarySelection))
+            {
+                this.ExpandFinallyView();
+            }
+            else
+            {
+                foreach (ModelItem catchObject in this.ModelItem.Properties["Catches"].Collection)
+                {
+                    if (IsDescendantOfCatch(catchObject, selection.PrimarySelection))
+                    {
+                        UpdateSelection(catchObject);
+                        break;
+                    }
+                }
+            }
+        }
+
+        bool IsDescendantOfTry(ModelItem descendant)
+        {
+            return IsDescendantOf(descendant, "Try");
+        }
+
+        bool IsDescendantOfFinally(ModelItem descendant)
+        {
+            return IsDescendantOf(descendant, "Finally");
+        }
+
+        static bool IsAncestorOf(ModelItem ancester, ModelItem descendant)
+        {
+            if (ancester == null)
+            {
+                return false;
+            }
+
+            ModelItem itr = descendant;
+            while (itr != null)
+            {
+                if (itr == ancester)
+                {
+                    return true;
+                }
+                itr = itr.Parent;
+            }
+            return false;
+        }
+
+        bool IsDescendantOf(ModelItem descendant, string property)
+        {
+            if (descendant == null)
+            {
+                return false;
+            }
+            else
+            {
+                ModelItem propertyValue = this.ModelItem.Properties[property].Value;
+                return IsAncestorOf(propertyValue, descendant);
+            }
+        }
+
+        internal static bool IsDescendantOfCatch(ModelItem catchObject, ModelItem descendant)
+        {
+            Fx.Assert(catchObject != null, "Catch object mustn't be null.");
+            if (catchObject == descendant)
+            {
+                return true;
+            }
+            else
+            {
+                ModelItem activityAction = catchObject.Properties["Action"].Value;
+                if (activityAction != null)
+                {
+                    ModelItem activityActionHandler = activityAction.Properties["Handler"].Value;
+                    if (activityActionHandler != null)
+                    {
+                        return IsAncestorOf(activityActionHandler, descendant);
+                    }
+                }
+                return false;
+            }
+        }
+
+        void UpdateSelection(ModelItem newSelectedCatch)
+        {
+            ModelItem oldSelectedCatch = this.SelectedCatch;
+            this.SelectedCatch = newSelectedCatch;
+
+            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
+            {
+                if (oldSelectedCatch != null)
+                {
+                    CatchDesigner oldSelectedCatchDesigner = (CatchDesigner)oldSelectedCatch.View;
+                    if (oldSelectedCatchDesigner != null)
+                    {
+                        oldSelectedCatchDesigner.ExpandState = false;
+                        oldSelectedCatchDesigner.PinState = false;
+                    }
+                }
+                if (newSelectedCatch != null)
+                {
+                    CollapseTryView();
+                    CollapseFinallyView();
+                    CatchDesigner newSelectedCatchDesigner = (CatchDesigner)newSelectedCatch.View;
+                    if (newSelectedCatchDesigner != null)
+                    {
+                        newSelectedCatchDesigner.ExpandState = true;
+                        newSelectedCatchDesigner.PinState = true;
+                    }
+                }
+            }));
+        }
+
+        void CreateCatch(Type exceptionType)
+        {
+            if (exceptionType != null)
+            {
+                Type catchType = typeof(Catch<>).MakeGenericType(exceptionType);
+                object catchObject = Activator.CreateInstance(catchType);
+
+                Type activityActionType = typeof(ActivityAction<>).MakeGenericType(exceptionType);
+                object activityAction = Activator.CreateInstance(activityActionType);
+
+                Type argumentType = typeof(DelegateInArgument<>).MakeGenericType(exceptionType);
+                object exceptionArgument = Activator.CreateInstance(argumentType);
+                DelegateInArgument delegateArgument = exceptionArgument as DelegateInArgument;
+                Fx.Assert(null != delegateArgument, "delegate argument must be of DelegateInArgument type!");
+                delegateArgument.Name = "exception";
+
+                catchType.GetProperty(PropertyNames.Action).SetValue(catchObject, activityAction, null);
+                activityActionType.GetProperty(PropertyNames.ActionArgument).SetValue(activityAction, exceptionArgument, null);
+
+                this.ModelItem.Properties["Catches"].Collection.Add(catchObject);
+            }
+        }
+
+        void OnFinallyViewMouseDown(object sender, MouseButtonEventArgs e)
+        {
+            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
+            {
+                SwitchTryCatchDesignerHelper.MakeRootDesigner(this);
+                e.Handled = true;
+            }
+            else if (e.LeftButton == MouseButtonState.Pressed)
+            {
+                ExpandFinallyView();
+                Keyboard.Focus((IInputElement)sender);
+            }
+            else if (e.RightButton == MouseButtonState.Pressed)
+            {
+                if (this.IsExpanded(this.ShowFinallyExpanded))
+                {
+                    Keyboard.Focus((IInputElement)sender);
+                }
+                e.Handled = true;
+            }
+        }
+
+        void OnFinallyViewMouseUp(object sender, MouseButtonEventArgs e)
+        {
+            // avoid context menu upon right-click when it's collapsed
+            if (!IsExpanded(this.ShowFinallyExpanded) && e.RightButton == MouseButtonState.Released)
+            {
+                e.Handled = true;
+            }
+        }
+
+        bool IsExpanded(bool isExpanded)
+        {
+            DesignerView designerView = this.Context.Services.GetService<DesignerView>();
+            return isExpanded || designerView.ShouldExpandAll;
+        }
+
+        void OnTryViewMouseDown(object sender, MouseButtonEventArgs e)
+        {
+            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
+            {
+                SwitchTryCatchDesignerHelper.MakeRootDesigner(this);
+                e.Handled = true;
+            }
+            else if (e.LeftButton == MouseButtonState.Pressed)
+            {
+                ExpandTryView();
+                Keyboard.Focus((IInputElement)sender);
+            }
+            else if (e.RightButton == MouseButtonState.Pressed)
+            {
+                if (this.IsExpanded(this.ShowTryExpanded))
+                {
+                    Keyboard.Focus((IInputElement)sender);
+                }
+                e.Handled = true;
+            }
+        }
+
+        void OnTryViewMouseUp(object sender, MouseButtonEventArgs e)
+        {
+            // avoid context menu upon right-click when it's collapsed
+            if (!IsExpanded(this.ShowTryExpanded) && e.RightButton == MouseButtonState.Released)
+            {
+                e.Handled = true;
+            }
+        }
+
+        void ExpandFinallyView()
+        {
+            UpdateSelection(null);
+            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
+            {
+                this.ShowTryExpanded = false;
+                this.ShowFinallyExpanded = true;
+            }));
+        }
+
+        void ExpandTryView()
+        {
+            UpdateSelection(null);
+            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
+            {
+                this.ShowFinallyExpanded = false;
+                this.ShowTryExpanded = true;
+            }));
+        }
+
+        void CollapseFinallyView()
+        {
+            this.ShowFinallyExpanded = false;
+        }
+
+        void CollapseTryView()
+        {
+            this.ShowTryExpanded = false;
+        }
+
+        void OnTryViewKeyDown(object sender, KeyEventArgs e)
+        {
+            if (sender == e.OriginalSource && (e.Key == Key.Space || e.Key == Key.Enter))
+            {
+                ExpandTryView();
+                e.Handled = true;
+            }
+        }
+
+        void OnFinallyViewKeyDown(object sender, KeyEventArgs e)
+        {
+            if (sender == e.OriginalSource && (e.Key == Key.Space || e.Key == Key.Enter))
+            {
+                ExpandFinallyView();
+                e.Handled = true;
+            }
+        }
+
+        #region AddCatch Label & TypePresenter
+
+        void OnAddCatchMouseDown(object sender, MouseButtonEventArgs e)
+        {
+            if (e.LeftButton == MouseButtonState.Pressed)
+            {
+                this.SwitchToChooseException();
+                e.Handled = true;
+            }
+        }
+
+        void OnAddCatchGotFocus(object sender, RoutedEventArgs e)
+        {
+            this.SwitchToChooseException();
+            e.Handled = true;
+        }
+
+        void SwitchToChooseException()
+        {
+            this.ShowTypePresenterExpanded = true;
+            this.typePresenter.FocusOnVisibleControl();
+        }
+
+        void SwitchToHintText()
+        {
+            this.typePresenter.Type = null;
+            this.ShowTypePresenterExpanded = false;
+            Keyboard.Focus((IInputElement)this);
+        }
+
+        void OnAddCatchHintLabelLoaded(object sender, RoutedEventArgs e)
+        {
+            this.addCatchHintLabel = (Label)sender;
+        }
+
+        void OnAddCatchHintLabelUnloaded(object sender, RoutedEventArgs e)
+        {
+            this.addCatchHintLabel = null;
+        }
+
+        void OnTypePresenterLoaded(object sender, RoutedEventArgs e)
+        {
+            TypePresenter tp = (TypePresenter)sender;
+            Fx.Assert(tp != null, "sender must be a TypePresenter.");
+
+            this.typePresenter = tp;
+            this.typePresenter.Filter = this.ExceptionTypeFilter;
+            this.typePresenter.MostRecentlyUsedTypes = MostRecentlyUsedTypes;
+            //UnRegistering because of 137896: Inside tab control multiple Loaded events happen without an Unloaded event.
+            this.typePresenter.TypeBrowserClosed -= OnTypePresenterTypeBrowserClosed;
+            this.typePresenter.TypeBrowserClosed += OnTypePresenterTypeBrowserClosed;
+        }
+
+        void OnTypePresenterUnloaded(object sender, RoutedEventArgs e)
+        {
+            if (this.typePresenter != null)
+            {
+                this.typePresenter.TypeBrowserClosed -= OnTypePresenterTypeBrowserClosed;
+                this.typePresenter = null;
+            }
+        }
+
+        void OnTypePresenterTypeBrowserClosed(object sender, RoutedEventArgs e)
+        {
+            this.typePresenter.FocusOnVisibleControl();
+        }
+
+        void OnTypePresenterKeyDown(object sender, KeyEventArgs e)
+        {
+            switch (e.Key)
+            {
+                case Key.Escape:
+                    this.SwitchToHintText();
+                    e.Handled = true;
+                    break;
+
+                case Key.Enter:
+                    this.AddCatch();
+                    e.Handled = true;
+                    break;
+            }
+        }
+
+        void OnTypePresenterLostFocus(object sender, RoutedEventArgs e)
+        {
+            if (this.ShowTypePresenterExpanded)
+            {
+                this.AddCatch();
+                e.Handled = true;
+            }
+        }
+
+        void AddCatch()
+        {
+            if (this.typePresenter != null)
+            {
+                Type type = this.typePresenter.Type;
+                if (type != null && this.ExceptionTypeFilter(type))
+                {
+                    CreateCatch(type);
+                }
+                this.SwitchToHintText();
+            }
+        }
+
+        #endregion
+
+        bool ExceptionTypeFilter(Type type)
+        {
+            if (type == null)
+            {
+                return false;
+            }
+
+            if (type != typeof(Exception) && !type.IsSubclassOf(typeof(Exception)))
+            {
+                return false;
+            }
+
+            ModelProperty catchesProperty = this.ModelItem.Properties[CatchesPropertyName];
+            Fx.Assert(catchesProperty != null, "TryCatch.Catches could not be null");
+            ModelItemCollection catches = catchesProperty.Collection;
+            Fx.Assert(catches != null, "Catches.Collection could not be null");
+            foreach (ModelItem catchItem in catches)
+            {
+                ModelProperty exceptionTypeProperty = catchItem.Properties[ExceptionTypePropertyName];
+                Fx.Assert(exceptionTypeProperty != null, "Catch.ExceptionType could not be null");
+                Type exceptionType = exceptionTypeProperty.ComputedValue as Type;
+                Fx.Assert(exceptionType != null, "Catch.ExceptionType.Value could not be null");
+
+                if (exceptionType == type)
+                {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/VerticalConnector.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/VerticalConnector.xaml.cs
new file mode 100644 (file)
index 0000000..6d912cf
--- /dev/null
@@ -0,0 +1,75 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Hosting;
+    using System.Activities.Presentation;
+    using System.Windows;
+    using System.Windows.Media.Animation;
+
+    partial class VerticalConnector
+    {
+        public static readonly DependencyProperty AllowedItemTypeProperty =
+            DependencyProperty.Register("AllowedItemType", typeof(Type), typeof(VerticalConnector), new UIPropertyMetadata(typeof(object)));
+
+        public static readonly DependencyProperty ContextProperty = DependencyProperty.Register(
+            "Context",
+            typeof(EditingContext),
+            typeof(VerticalConnector));
+
+        public VerticalConnector()
+        {
+            this.InitializeComponent();
+        }
+
+        public Type AllowedItemType
+        {
+            get { return (Type)GetValue(AllowedItemTypeProperty); }
+            set { SetValue(AllowedItemTypeProperty, value); }
+        }
+
+        public EditingContext Context
+        {
+            get { return (EditingContext)GetValue(ContextProperty); }
+            set { SetValue(ContextProperty, value); }
+        }
+
+        protected override void OnDragEnter(DragEventArgs e)
+        {
+            CheckAnimate(e, "Expand");
+            this.dropTarget.Visibility = Visibility.Visible;
+        }
+
+        protected override void OnDragLeave(DragEventArgs e)
+        {
+            CheckAnimate(e, "Collapse");
+            this.dropTarget.Visibility = Visibility.Collapsed;
+        }
+
+        protected override void OnDrop(DragEventArgs e)
+        {
+            this.dropTarget.Visibility = Visibility.Collapsed;
+            base.OnDrop(e);
+        }
+
+        void CheckAnimate(DragEventArgs e, string storyboardResourceName)
+        {
+            if (!e.Handled)
+            {
+                if (!this.Context.Items.GetValue<ReadOnlyState>().IsReadOnly &&
+                    DragDropHelper.AllowDrop(e.Data, this.Context, this.AllowedItemType))
+                {
+                    BeginStoryboard((Storyboard)this.Resources[storyboardResourceName]);
+                    return;
+                }
+                else
+                {
+                    e.Effects = DragDropEffects.None;
+                }
+                e.Handled = true;
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WhileDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WhileDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..c019677
--- /dev/null
@@ -0,0 +1,33 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.View.OutlineView;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+
+    /// <summary>
+    /// Interaction logic for WhileDesigner.xaml
+    /// </summary>
+    partial class WhileDesigner
+    {
+        public WhileDesigner()
+        {
+            InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(While);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(WhileDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
+
+            builder.AddCustomAttributes(type, type.GetProperty("Condition"), new HidePropertyInOutlineViewAttribute());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WriteLineDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WriteLineDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..7a6e207
--- /dev/null
@@ -0,0 +1,26 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Core.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Statements;
+    using System.ComponentModel;
+
+    partial class WriteLineDesigner
+    {
+        public WriteLineDesigner()
+        {
+            this.InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(WriteLine);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(WriteLineDesigner)));
+            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityDesignerHelper.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityDesignerHelper.cs
new file mode 100644 (file)
index 0000000..53cfd86
--- /dev/null
@@ -0,0 +1,156 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Presentation
+{
+    using System.ComponentModel;
+    using System.Activities.Statements;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Core.Presentation.Themes;
+    using System.Linq;
+    using System.Activities.Core.Presentation;
+    using System.Diagnostics.CodeAnalysis;
+    using System.ServiceModel.Activities;
+    using System.Windows;
+    using System.Runtime;
+    using System.Globalization;
+
+
+
+    static class ActivityDesignerHelper
+    {
+        public const string ChannelBasedCorrelationKey = "ChannelBasedCorrelation";
+
+        [SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters",
+            Justification = "This is a TryGet pattern that requires out parameters")]
+        public static bool IsItemInSequence(this ModelItem item, out ModelItem sequence)
+        {
+            if (null == item)
+            {
+                throw FxTrace.Exception.AsError(new ArgumentNullException("item"));
+            }
+
+            bool result = false;
+            int level = 0;
+
+            Func<ModelItem, bool> isInSequencePredicate = (p) =>
+            {
+                switch (level)
+                {
+                    case 0:
+                        ++level;
+                        return (p is ModelItemCollection);
+
+                    case 1:
+                        ++level;
+                        result = typeof(Sequence).IsAssignableFrom(p.ItemType);
+                        return result;
+
+                    default:
+                        return false;
+                };
+            };
+
+            ModelItem container = item.GetParentEnumerator(isInSequencePredicate).LastOrDefault();
+            sequence = result ? container : null;
+            return result;
+        }
+
+        [SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters",
+            Justification = "This is a TryGet pattern that requires out parameters")]
+        public static bool IsItemInFlowchart(this ModelItem item, out ModelItem flowchart, out ModelItem flowStep)
+        {
+            if (null == item)
+            {
+                throw FxTrace.Exception.AsError(new ArgumentNullException("item"));
+            }
+
+            bool result = false;
+            int level = 0;
+            ModelItem flowStepContainer = null;
+
+            flowchart = null;
+            flowStep = null;
+
+            Func<ModelItem, bool> isInFlowchartPredicate = (p) =>
+            {
+                switch (level)
+                {
+                    case 0:
+                        ++level;
+                        flowStepContainer = typeof(FlowStep).IsAssignableFrom(p.ItemType) ? p : null;
+                        return null != flowStepContainer;
+
+                    case 1:
+                        ++level;
+                        return (p is ModelItemCollection);
+
+                    case 2:
+                        ++level;
+                        result = (typeof(Flowchart).IsAssignableFrom(p.ItemType));
+                        return result;
+
+                    default:
+                        return false;
+                }
+            };
+
+            ModelItem container = item.GetParentEnumerator(isInFlowchartPredicate).LastOrDefault();
+
+            if (result)
+            {
+                flowchart = container;
+                flowStep = flowStepContainer;
+            }
+
+            return result;
+        }
+
+        public static bool IsMessagingActivity(this ModelItem item)
+        {
+            if (null == item)
+            {
+                throw FxTrace.Exception.ArgumentNull("item");
+            }
+
+            bool result =
+                item.IsAssignableFrom<Receive>() ||
+                item.IsAssignableFrom<Send>() ||
+                item.IsAssignableFrom<ReceiveReply>() ||
+                item.IsAssignableFrom<SendReply>();
+
+            return result;
+        }
+
+        public static string GenerateUniqueVariableNameForContext(DependencyObject context, string prefix)
+        {
+            if (null == context)
+            {
+                throw FxTrace.Exception.ArgumentNull("context");
+            }
+
+            var viewElement = context as WorkflowViewElement;
+            if (null == viewElement)
+            {
+                var msg = StringResourceDictionary.Instance.GetString("activityFactoryWrongTarget");
+                throw FxTrace.Exception.Argument("target", msg);
+            }
+
+            string name;
+            var scope = VariableHelper.FindCommonVariableScope(viewElement.ModelItem, viewElement.ModelItem);
+            if (null == scope)
+            {
+                name = string.Format(CultureInfo.CurrentUICulture, "{0}{1}", prefix, 1);
+            }
+            else
+            {
+                name = scope.GetVariableCollection().CreateUniqueVariableName(prefix, 1);
+            }
+            return name;
+
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityXRefPropertyEditor.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityXRefPropertyEditor.cs
new file mode 100644 (file)
index 0000000..8ff8705
--- /dev/null
@@ -0,0 +1,17 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Presentation
+{
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Core.Presentation.Themes;
+
+    sealed class ActivityXRefPropertyEditor : PropertyValueEditor 
+    {
+        public ActivityXRefPropertyEditor()
+        {
+            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("ActivityXRef_InlineEditorTemplate");
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/ArgumentCollectionPropertyEditor.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/ArgumentCollectionPropertyEditor.cs
new file mode 100644 (file)
index 0000000..ef06ba7
--- /dev/null
@@ -0,0 +1,56 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Presentation
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Text;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.Internal.PropertyEditing.Model;
+    using System.Activities.Core.Presentation.Themes;
+    using System.Windows;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.Model;
+    using System.Collections.ObjectModel;
+    using System.Windows.Controls;
+
+    sealed class ArgumentCollectionPropertyEditor : DialogPropertyValueEditor 
+    {
+        public ArgumentCollectionPropertyEditor()
+        {
+            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("ArgumentCollection_InlineTemplate");
+        }
+
+        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
+        {
+            ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter =
+                new ModelPropertyEntryToOwnerActivityConverter();
+
+            ModelItem activityModelItem =
+                (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
+
+            ModelItem parentModelItem =
+                (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), true, null);
+
+            EditingContext context = ((IModelTreeItem)activityModelItem).ModelTreeManager.Context;
+
+            var inputData = parentModelItem.Properties[propertyValue.ParentProperty.PropertyName].Collection;            
+
+            DynamicArgumentDesignerOptions options = new DynamicArgumentDesignerOptions
+            { 
+                Title = propertyValue.ParentProperty.DisplayName, 
+            };
+
+            using (EditingScope scope = context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(StringResourceDictionary.Instance.GetString("InvokeMethodParameterEditing"), true))
+            {
+                if (DynamicArgumentDialog.ShowDialog(activityModelItem, inputData, context, activityModelItem.View, options))
+                {
+                    scope.Complete();
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..9c989f0
--- /dev/null
@@ -0,0 +1,860 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Presentation
+{
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.Hosting;
+    using System.Runtime;
+    using System.Collections;
+    using System.Collections.ObjectModel;
+    using System.Collections.Generic;
+    using System.Collections.Specialized;
+    using System.ComponentModel;
+    using System.Linq;
+    using System.Globalization;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Data;
+    using System.Windows.Input;
+    using System.Windows.Threading;
+    using System.Reflection;
+
+    internal sealed partial class DynamicArgumentDesigner : UserControl
+    {
+        public static readonly DependencyProperty ContextProperty =
+            DependencyProperty.Register("Context",
+            typeof(EditingContext),
+            typeof(DynamicArgumentDesigner));
+
+        public static readonly DependencyProperty OwnerActivityProperty =
+           DependencyProperty.Register("OwnerActivity",
+           typeof(ModelItem),
+           typeof(DynamicArgumentDesigner));
+
+        public static readonly DependencyProperty IsDirectionReadOnlyProperty =
+            DependencyProperty.Register("IsDirectionReadOnly",
+            typeof(bool),
+            typeof(DynamicArgumentDesigner),
+            new UIPropertyMetadata(true, OnIsDirectionReadOnlyChanged));
+
+        public static readonly DependencyProperty DynamicArgumentsProperty =
+            DependencyProperty.Register("DynamicArguments",
+            typeof(ObservableCollection<DynamicArgumentWrapperObject>),
+            typeof(DynamicArgumentDesigner),
+            new PropertyMetadata(new ObservableCollection<DynamicArgumentWrapperObject>()));
+
+        public static readonly DependencyProperty IsDictionaryProperty =
+            DependencyProperty.Register("IsDictionary",
+            typeof(bool?),
+            typeof(DynamicArgumentDesigner),
+            new PropertyMetadata(false));
+
+        public static readonly DependencyProperty UnderlyingArgumentTypeProperty =
+            DependencyProperty.Register("UnderlyingArgumentType",
+            typeof(Type),
+            typeof(DynamicArgumentDesigner),
+            new PropertyMetadata(typeof(Argument)));
+
+        public static readonly RoutedCommand CreateDynamicArgumentCommand   = new RoutedCommand("CreateDynamicArgumentCommand", typeof(DynamicArgumentDesigner));
+        public static readonly RoutedCommand MoveUpArgumentCommand          = new RoutedCommand("MoveUpArgumentCommand", typeof(DynamicArgumentDesigner));
+        public static readonly RoutedCommand MoveDownArgumentCommand        = new RoutedCommand("MoveDownArgumentCommand", typeof(DynamicArgumentDesigner));
+        public static readonly RoutedCommand DeleteArgumentCommand          = new RoutedCommand("DeleteArgumentCommand", typeof(DynamicArgumentDesigner));
+        public const string DefaultArgumentPrefix = "Argument";
+
+        SubscribeContextCallback<ReadOnlyState> onReadOnlyStateChangedCallback;
+
+        static readonly Type InArgumentType = typeof(InArgument);
+        static readonly Type OutArgumentType = typeof(OutArgument);
+        static readonly Type InOutArgumentType = typeof(InOutArgument);
+        static readonly Type ArgumentType = typeof(Argument);
+
+        const int NameColumn = 0;
+        const int DirectionColumn = 1;
+        const int ArgumentTypeColumn = 2;
+        const int ExpressionColumn = 3;
+
+        bool isReadOnly;
+        bool hideDirection;
+        string argumentPrefix = DefaultArgumentPrefix;
+        string hintText;
+        DataGridHelper dgHelper;
+        ContextItemManager contextItemManager;        
+
+        public DynamicArgumentDesigner()
+        {
+            InitializeComponent();
+
+            this.dgHelper = new DataGridHelper(this.WPF_DataGrid, this);
+            this.dgHelper.AddNewRowCommand = DynamicArgumentDesigner.CreateDynamicArgumentCommand;
+            this.HintText = null;
+
+            this.WPF_DataGrid.LoadingRow += this.DataGrid_Standard_LoadingRow;
+
+            this.Loaded += (sender, e) =>
+            {
+                OnReadOnlyStateChanged(new ReadOnlyState());
+                this.ContextItemManager.Subscribe<ReadOnlyState>(this.OnReadOnlyStateChangedCallback);
+                this.OnDynamicArgumentsLoaded();
+                this.OnUnderlyingArgumentTypeChanged();
+            };
+            this.Unloaded += (sender, e) =>
+            {
+                this.ContextItemManager.Unsubscribe<ReadOnlyState>(this.OnReadOnlyStateChangedCallback);
+            };
+
+            DynamicArgumentWrapperObject.Editor = this;
+        }
+
+        ContextItemManager ContextItemManager
+        {
+            get
+            {
+                if (this.contextItemManager == null)
+                {
+                    this.contextItemManager = this.OwnerActivity.GetEditingContext().Items;
+                }
+                return this.contextItemManager;
+            }
+        }
+
+        void OnReadOnlyStateChanged(ReadOnlyState state)
+        {
+            UpdateChildrenElementStatus();
+        }
+
+        void UpdateChildrenElementStatus()
+        {
+            this.isReadOnly = this.ContextItemManager.GetValue<ReadOnlyState>().IsReadOnly || this.DynamicArguments == null;
+
+            if (this.isReadOnly)
+            {
+                this.WPF_DataGrid.IsReadOnly = true;
+                this.ButtonMovDown.IsEnabled = false;
+                this.ButtonMovUp.IsEnabled = false;
+                this.ButtonDelete.IsEnabled = false;
+            }
+        }
+
+        void OnDataGridSelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            if (this.isReadOnly 
+                || this.WPF_DataGrid.SelectedItems == null
+                || this.WPF_DataGrid.SelectedItems.Count == 0)
+            {
+                this.ButtonMovUp.IsEnabled   = false;
+                this.ButtonMovDown.IsEnabled = false;
+                this.ButtonDelete.IsEnabled  = false;
+                return;
+            }
+
+            // delete button
+            this.ButtonDelete.IsEnabled = true;
+            
+            // up/down button.
+            if (this.WPF_DataGrid.SelectedItems.Count == 1)
+            {
+                bool upHadFocus = ButtonMovUp.IsFocused;
+                bool downHadFocus = ButtonMovDown.IsFocused;
+                this.ButtonMovUp.IsEnabled = this.WPF_DataGrid.SelectedIndex > 0;
+                this.ButtonMovDown.IsEnabled = this.WPF_DataGrid.SelectedIndex < this.DynamicArguments.Count - 1;
+                if (!this.ButtonMovDown.IsEnabled && downHadFocus)
+                {
+                    this.ButtonMovUp.Focus();
+                }
+                if (!this.ButtonMovUp.IsEnabled && upHadFocus)
+                {
+                    this.ButtonMovDown.Focus();
+                }
+            }
+            else
+            {
+                this.ButtonMovUp.IsEnabled = this.ButtonMovDown.IsEnabled = false;
+            }
+        }
+
+        // The DataGrid does not bubble up KeyDown event and we expect the upper window to be closed when ESC key is down.
+        // Thus we added an event handler in DataGrid to handle ESC key and closes the uppper window.
+        void OnDataGridRowKeyDown(object sender, KeyEventArgs args)
+        {
+            DataGridRow row = (DataGridRow)sender;
+            if (args.Key == Key.Escape && !row.IsEditing && this.ParentDialog != null)
+            {
+                this.ParentDialog.CloseDialog(false);
+            }
+        }        
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+            this.Unloaded += this.OnDynamicArgumentDesignerUnloaded;
+        }
+
+        SubscribeContextCallback<ReadOnlyState> OnReadOnlyStateChangedCallback
+        {
+            get
+            {
+                if (onReadOnlyStateChangedCallback == null)
+                {
+                    onReadOnlyStateChangedCallback = new SubscribeContextCallback<ReadOnlyState>(OnReadOnlyStateChanged);
+                }
+                return onReadOnlyStateChangedCallback;
+            }
+        }
+
+        void OnDynamicArgumentDesignerUnloaded(object sender, RoutedEventArgs e)
+        {
+            this.WPF_DataGrid.LoadingRow -= this.DataGrid_Standard_LoadingRow;
+            this.Unloaded -= this.OnDynamicArgumentDesignerUnloaded;
+        }
+
+        public ObservableCollection<DynamicArgumentWrapperObject> DynamicArguments
+        {
+            get
+            {
+                return (ObservableCollection<DynamicArgumentWrapperObject>)GetValue(DynamicArgumentsProperty);
+            }
+            set
+            {
+                SetValue(DynamicArgumentsProperty, value);
+                if (value != null)
+                {
+                    this.WPF_DataGrid.ItemsSource = value;
+                }
+            }
+        }
+
+        [Fx.Tag.KnownXamlExternal]
+        public ModelItem OwnerActivity
+        {
+            get { return (ModelItem)GetValue(OwnerActivityProperty); }
+            set { SetValue(OwnerActivityProperty, value); }
+        }
+
+        [Fx.Tag.KnownXamlExternal]
+        public EditingContext Context
+        {
+            get { return (EditingContext)GetValue(ContextProperty); }
+            set { SetValue(ContextProperty, value); }
+        }
+
+        public bool IsDirectionReadOnly
+        {
+            get { return (bool)GetValue(IsDirectionReadOnlyProperty); }
+            set { SetValue(IsDirectionReadOnlyProperty, value); }
+        }
+
+        public bool HideDirection
+        {
+            get
+            {
+                return this.hideDirection;
+            }
+            set
+            {
+                this.hideDirection = value;
+                if (this.hideDirection)
+                {
+                    this.WPF_DataGrid.Columns[DynamicArgumentDesigner.DirectionColumn].Visibility = Visibility.Hidden;
+                }
+                else
+                {
+                    this.WPF_DataGrid.Columns[DynamicArgumentDesigner.DirectionColumn].Visibility = Visibility.Visible;
+                }
+            }
+        }
+
+        public string ArgumentPrefix
+        {
+            get
+            {
+                return this.argumentPrefix;
+            }
+            set
+            {
+                this.argumentPrefix = value;
+            }
+        }
+
+        public string HintText
+        {
+            get
+            {
+                if (this.hintText != null)
+                {
+                    return this.hintText;
+                }
+                else
+                {
+                    return (string)this.FindResource("addDynamicArgumentNewRowLabel");
+                }
+            }
+            set
+            {
+                this.hintText = value;
+                if (hintText == null)
+                {
+                    dgHelper.AddNewRowContent = (string)this.FindResource("addDynamicArgumentNewRowLabel");
+                }
+                else
+                {
+                    dgHelper.AddNewRowContent = hintText;
+                }
+            }
+        }
+
+        public WorkflowElementDialog ParentDialog
+        {
+            get;
+            set;
+        }
+
+        static void OnIsDirectionReadOnlyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
+        {
+            ((DynamicArgumentDesigner)dependencyObject).OnIsDirectionReadOnlyChanged();
+        }
+
+        void OnIsDirectionReadOnlyChanged()
+        {
+            if (!this.IsDirectionReadOnly)
+            {
+                DataGridTemplateColumn directionCol = this.WPF_DataGrid.Columns[1] as DataGridTemplateColumn;
+                directionCol.CellEditingTemplate = (DataTemplate)this.WPF_DataGrid.FindResource("argumentDirectionEditingTemplate");
+            }
+        }
+
+        internal Type UnderlyingArgumentType
+        {
+            get
+            {
+                return (Type)GetValue(UnderlyingArgumentTypeProperty);
+            }
+            set
+            {
+                if (!typeof(Argument).IsAssignableFrom(value))
+                {
+                    ErrorReporting.ShowErrorMessage(SR.NonSupportedDynamicArgumentType);
+                }
+                else
+                {
+                    SetValue(UnderlyingArgumentTypeProperty, value);
+                    OnUnderlyingArgumentTypeChanged();
+                }
+            }
+        }
+
+        void OnUnderlyingArgumentTypeChanged()
+        {
+            Type currentArgumentType = this.UnderlyingArgumentType;
+
+            if (currentArgumentType != null && (OutArgumentType.IsAssignableFrom(currentArgumentType) || InOutArgumentType.IsAssignableFrom(currentArgumentType)))
+            {
+                this.WPF_DataGrid.Columns[DynamicArgumentDesigner.ExpressionColumn].Header = (string)this.FindResource("assignToHeader");
+            }
+            else
+            {
+                this.WPF_DataGrid.Columns[DynamicArgumentDesigner.ExpressionColumn].Header = (string)this.FindResource("valueHeader");
+            }
+        }
+
+        internal bool? IsDictionary
+        {
+            get
+            {
+                return (bool?)GetValue(IsDictionaryProperty);
+            }
+            set
+            {
+                SetValue(IsDictionaryProperty, value);
+            }
+        }
+
+        internal static ObservableCollection<DynamicArgumentWrapperObject> ModelItemToWrapperCollection(ModelItem model, out bool isDictionary, out Type underlyingArgumentType)
+        {
+            string errorMessage = string.Empty;
+            underlyingArgumentType = null;
+            isDictionary = false;
+            if (model is ModelItemCollection)
+            {
+                underlyingArgumentType = model.GetCurrentValue().GetType().GetGenericArguments()[0];
+                if (!typeof(Argument).IsAssignableFrom(underlyingArgumentType))
+                {
+                    errorMessage = SR.NonSupportedDynamicArgumentType;
+                }
+            }
+            else if (model is ModelItemDictionary)
+            {
+                Type underlyingKeyType = model.GetCurrentValue().GetType().GetGenericArguments()[0];
+                underlyingArgumentType = model.GetCurrentValue().GetType().GetGenericArguments()[1];
+                if (!typeof(Argument).IsAssignableFrom(underlyingArgumentType))
+                {
+                    errorMessage = SR.NonSupportedDynamicArgumentType;
+                }
+                if (underlyingKeyType != typeof(string))
+                {
+                    errorMessage += SR.NonSupportedDynamicArgumentKeyType;
+                }
+                isDictionary = true;
+            }
+            else
+            {
+                errorMessage = SR.NonSupportedModelItemCollectionOrDictionary;
+            }
+            if (!string.IsNullOrEmpty(errorMessage))
+            {
+                ErrorReporting.ShowErrorMessage(SR.NonSupportedModelItemCollectionOrDictionary);
+                return null;
+            }
+            if (isDictionary)
+            {
+                ObservableCollection<DynamicArgumentWrapperObject> wrappers = new ObservableCollection<DynamicArgumentWrapperObject>();
+                foreach (ModelItem item in GetArgumentCollection(model))
+                {
+                    wrappers.Add(new DynamicArgumentWrapperObject(item.Properties["Key"].ComputedValue as string, item.Properties["Value"].Value));
+                }
+                return wrappers;
+            }
+            else
+            {
+                ObservableCollection<DynamicArgumentWrapperObject> wrappers = new ObservableCollection<DynamicArgumentWrapperObject>();
+                foreach (ModelItem item in GetArgumentCollection(model))
+                {
+                    wrappers.Add(new DynamicArgumentWrapperObject(null, item));
+                }
+                return wrappers;
+            }
+        }
+
+        internal static void WrapperCollectionToModelItem(ObservableCollection<DynamicArgumentWrapperObject> wrappers, ModelItem data, bool isDictionary, Type underlyingArgumentType)
+        {
+            ModelItemCollection collection = GetArgumentCollection(data);
+            using (ModelEditingScope change = collection.BeginEdit(SR.UpdateDynamicArgumentsDescription))
+            {
+                if (isDictionary)
+                {
+                    collection.Clear();
+                    Type dictionaryEntryType = typeof(ModelItemKeyValuePair<,>).MakeGenericType(new Type[] { typeof(string), underlyingArgumentType });
+                    foreach (DynamicArgumentWrapperObject wrapper in wrappers)
+                    {
+                        Argument argument = Argument.Create(wrapper.Type, wrapper.Direction);
+                        object mutableKVPair = Activator.CreateInstance(dictionaryEntryType, new object[] { wrapper.Name, argument });
+                        ModelItem argumentKVPair = collection.Add(mutableKVPair);
+                        if (wrapper.Expression != null)
+                        {
+                            argumentKVPair.Properties["Value"].Value.Properties["Expression"].SetValue(wrapper.Expression.GetCurrentValue());
+                        }
+                    }
+                }
+                else
+                {
+                    collection.Clear();
+                    foreach (DynamicArgumentWrapperObject wrapper in wrappers)
+                    {
+                        Argument argument = Argument.Create(wrapper.Type, wrapper.Direction);
+                        ModelItem argumentItem = collection.Add(argument);
+                        if (wrapper.Expression != null)
+                        {
+                            argumentItem.Properties["Expression"].SetValue(wrapper.Expression.GetCurrentValue());
+                        }
+                    }
+                }
+
+                change.Complete();
+            }
+        }
+
+        static ModelItemCollection GetArgumentCollection(ModelItem data)
+        {
+            if (data is ModelItemCollection)
+            {
+                return (data as ModelItemCollection);
+            }
+            else if (data is ModelItemDictionary)
+            {
+                return (data as ModelItemDictionary).Properties["ItemsCollection"].Collection;
+            }
+            else
+            {
+                ErrorReporting.ShowErrorMessage(SR.NonSupportedModelItemCollectionOrDictionary);
+                return null;
+            }
+        }
+
+        void OnDynamicArgumentsLoaded()
+        {
+            Fx.Assert(this.Context != null, "EditingContext cannot be null");
+            Fx.Assert(this.IsDictionary != null, "IsDictionary is not set");
+            Fx.Assert(this.UnderlyingArgumentType != null, "UnderlyingArgumentType is not set");            
+            if (!(this.IsDictionary.Value))
+            {
+                this.WPF_DataGrid.Columns[DynamicArgumentDesigner.NameColumn].Visibility = Visibility.Hidden;
+            }
+
+            if (null != this.DynamicArguments)
+            {
+                if (this.UnderlyingArgumentType == ArgumentType)
+                {
+                    this.IsDirectionReadOnly = false;
+                }
+
+                if (this.UnderlyingArgumentType.IsGenericType)
+                {
+                    Type[] innerArgumentTypes = this.UnderlyingArgumentType.GetGenericArguments();
+                    if (innerArgumentTypes.Length > 0)
+                    {
+                        Type innerArgumentType = innerArgumentTypes[0];
+                        this.WPF_DataGrid.Columns[DynamicArgumentDesigner.ArgumentTypeColumn].IsReadOnly = !innerArgumentType.IsGenericParameter;
+                    }
+                }
+            }
+
+            this.WPF_DataGrid.ItemsSource = this.DynamicArguments;
+
+            UpdateChildrenElementStatus();
+        }
+
+        internal void ValidateEntry(DynamicArgumentWrapperObject entry, DependencyPropertyChangedEventArgs e)
+        {
+            if (e.Property == DynamicArgumentWrapperObject.NameProperty)
+            {
+                if (this.IsDictionary.Value)
+                {
+                    DataGridRow row = entry.Row;
+                    string newName = e.NewValue as string;
+
+                    bool duplicates =
+                        this.DynamicArguments.Any<DynamicArgumentWrapperObject>(
+                            p => string.Equals(p.Name, newName) && p != entry);
+                    if (duplicates || string.IsNullOrEmpty(newName))
+                    {
+                        entry.Name = e.OldValue as string;
+                        if (duplicates)
+                        {
+                            ErrorReporting.ShowErrorMessage(string.Format(CultureInfo.CurrentCulture, SR.DuplicateArgumentName, newName));
+                        }
+                        else
+                        {
+                            ErrorReporting.ShowErrorMessage(string.Format(CultureInfo.CurrentCulture, SR.EmptyArgumentName));
+                        }
+                    }
+                    entry.IsValidating = false;
+                }
+            }
+            else
+            {
+                if (e.Property == DynamicArgumentWrapperObject.DirectionProperty)
+                {
+                    entry.UseLocationExpression = (entry.Direction != ArgumentDirection.In);
+                }                
+                if ((e.Property != DynamicArgumentWrapperObject.ExpressionProperty) && (entry.Expression != null))
+                {
+                    ActivityWithResult expression = entry.Expression.GetCurrentValue() as ActivityWithResult;                    
+                    if (expression != null)
+                    {
+                        ActivityWithResult newExpression;
+                        if (ExpressionHelper.TryMorphExpression(expression, entry.UseLocationExpression, entry.Type, this.Context, out newExpression))
+                        {
+                            entry.Expression = (this.OwnerActivity as IModelTreeItem).ModelTreeManager.WrapAsModelItem(newExpression);
+                        }
+                        else
+                        {
+                            //[....] 
+
+                            entry.Expression = null;
+                        }
+                    }
+                }
+                entry.IsValidating = false;
+            }
+        }
+
+        internal string GetDefaultName()
+        {
+            if (!this.IsDictionary.Value)
+            {
+                return string.Empty;
+            }
+            else
+            {
+                var defaultNames = this.DynamicArguments
+                        .Select<DynamicArgumentWrapperObject, string>(p => (string)p.Name)
+                        .Where<string>(p => 0 == string.Compare(p, 0, this.ArgumentPrefix, 0, this.ArgumentPrefix.Length, StringComparison.Ordinal))
+                        .Select(p => p.Substring(this.ArgumentPrefix.Length));
+
+                int maxNum = 1;
+                foreach (string numberPart in defaultNames)
+                {
+                    int current;
+                    if (int.TryParse(numberPart, out current))
+                    {
+                        if (current >= maxNum)
+                        {
+                            maxNum = current + 1;
+                        }
+                    }
+                }
+                return string.Format(CultureInfo.InvariantCulture, "{0}{1}", this.ArgumentPrefix, maxNum);
+            }
+
+        }
+
+        internal Type GetDefaultType()
+        {
+            Type[] genericArguments = this.UnderlyingArgumentType.GetGenericArguments();
+            if (genericArguments.Length == 0)
+            {
+                return typeof(string);
+            }
+            else
+            {
+                return genericArguments[0];
+            }
+        }
+
+        internal ArgumentDirection GetDefaultDirection()
+        {
+            if (this.UnderlyingArgumentType == ArgumentType)
+            {
+                return ArgumentDirection.In;
+            }
+
+            if (InArgumentType.IsAssignableFrom(this.UnderlyingArgumentType))
+            {
+                return ArgumentDirection.In;
+            }
+
+            if (OutArgumentType.IsAssignableFrom(this.UnderlyingArgumentType))
+            {
+                return ArgumentDirection.Out;
+            }
+
+            Fx.Assert(InOutArgumentType.IsAssignableFrom(this.UnderlyingArgumentType), "UnderlyingArgumentType should be of type OutArgumentType");
+            return ArgumentDirection.InOut;
+        }
+
+        //Hook LoadingRow event to set different row template (<Click here to add new item>) for new place holder
+        void DataGrid_Standard_LoadingRow(object sender, DataGridRowEventArgs e)
+        {
+            if (e.Row.Item != CollectionView.NewItemPlaceholder)
+            {
+                DynamicArgumentWrapperObject wrapper = e.Row.Item as DynamicArgumentWrapperObject;
+                wrapper.Row = e.Row;
+            }
+        }
+
+        void OnCreateDynamicArgumentExecute(object sender, ExecutedRoutedEventArgs e)
+        {
+            DynamicArgumentWrapperObject wrapper = new DynamicArgumentWrapperObject();
+            this.DynamicArguments.Add(wrapper);
+            this.dgHelper.BeginRowEdit(wrapper);
+        }
+
+        void OnMoveUpArgumentExecute(object sender, RoutedEventArgs e)
+        {
+            if (null != this.WPF_DataGrid.SelectedItem)
+            {
+                int selectedArgumentIndex = this.WPF_DataGrid.SelectedIndex;
+                if (selectedArgumentIndex > 0)
+                {
+                    this.DynamicArguments.Move(selectedArgumentIndex, selectedArgumentIndex - 1);
+                }
+                this.OnDataGridSelectionChanged(this, null);
+            }
+        }
+
+        void OnMoveDownArgumentExecute(object sender, RoutedEventArgs e)
+        {
+            if (null != this.WPF_DataGrid.SelectedItem)
+            {
+                int selectedArgumentIndex = this.WPF_DataGrid.SelectedIndex;
+                if (selectedArgumentIndex < this.DynamicArguments.Count - 1)
+                {
+                    this.DynamicArguments.Move(selectedArgumentIndex, selectedArgumentIndex + 1);
+                }
+                this.OnDataGridSelectionChanged(this, null);
+            }
+        }
+
+        void OnDeleteArgumentExecute(object sender, RoutedEventArgs e)
+        {
+            DataGridHelper.OnDeleteSelectedItems(this.WPF_DataGrid);
+        }
+
+        void OnExpressionTextBoxLoaded(object sender, RoutedEventArgs args)
+        {
+            ExpressionTextBox etb = (ExpressionTextBox)sender;
+            etb.IsIndependentExpression = true;
+            if (!etb.IsReadOnly)
+            {
+                DataGridHelper.OnEditingControlLoaded(sender, args);
+            }
+        }
+
+        void OnExpressionTextBoxUnloaded(object sender, RoutedEventArgs args)
+        {
+            ExpressionTextBox etb = (ExpressionTextBox)sender;
+            if (!etb.IsReadOnly)
+            {
+                DataGridHelper.OnEditingControlUnloaded(sender, args);
+            }
+        }
+
+        void OnEditingControlLoaded(object sender, RoutedEventArgs args)
+        {
+            DataGridHelper.OnEditingControlLoaded(sender, args);
+        }
+
+        void OnEditingControlUnloaded(object sender, RoutedEventArgs args)
+        {
+            DataGridHelper.OnEditingControlUnloaded(sender, args);
+        }
+    }
+
+    sealed class DynamicArgumentWrapperObject : DependencyObject
+    {
+        public static readonly DependencyProperty ModelItemProperty = DependencyProperty.Register(
+            "ModelItem",
+            typeof(ModelItem),
+            typeof(DynamicArgumentWrapperObject),
+            new UIPropertyMetadata(null));
+
+        public static readonly DependencyProperty NameProperty = DependencyProperty.Register(
+            "Name",
+            typeof(string),
+            typeof(DynamicArgumentWrapperObject),
+            new UIPropertyMetadata(string.Empty, OnArgumentPropertyChanged));
+
+        public static readonly DependencyProperty ArgumentTypeProperty = DependencyProperty.Register(
+            "Type",
+            typeof(Type),
+            typeof(DynamicArgumentWrapperObject),
+            new UIPropertyMetadata(typeof(string), OnArgumentPropertyChanged));
+
+        public static readonly DependencyProperty DirectionProperty = DependencyProperty.Register(
+            "Direction",
+            typeof(ArgumentDirection),
+            typeof(DynamicArgumentWrapperObject),
+            new UIPropertyMetadata(ArgumentDirection.In, OnArgumentPropertyChanged));
+
+        public static readonly DependencyProperty ExpressionProperty =
+            DependencyProperty.Register(
+            "Expression",
+            typeof(ModelItem),
+            typeof(DynamicArgumentWrapperObject),
+            new UIPropertyMetadata(OnArgumentPropertyChanged));
+
+        public static readonly DependencyProperty UseLocationExpressionProperty =
+            DependencyProperty.Register(
+            "UseLocationExpression",
+            typeof(bool),
+            typeof(DynamicArgumentWrapperObject));
+
+        public event PropertyChangedEventHandler PropertyChanged;
+
+        bool isInitializing;
+
+        const string ExpressionPropertyName = "Expression";
+
+        public string Name
+        {
+            get { return (string)GetValue(NameProperty); }
+            set { SetValue(NameProperty, value); }
+        }
+
+        public Type Type
+        {
+            get { return (Type)GetValue(ArgumentTypeProperty); }
+            set { SetValue(ArgumentTypeProperty, value); }
+        }
+
+        public ArgumentDirection Direction
+        {
+            get { return (ArgumentDirection)GetValue(DirectionProperty); }
+            set { SetValue(DirectionProperty, value); }
+        }
+
+        public ModelItem Expression
+        {
+            get { return (ModelItem)GetValue(ExpressionProperty); }
+            set { SetValue(ExpressionProperty, value); }
+        }
+
+        public bool UseLocationExpression
+        {
+            get { return (bool)GetValue(UseLocationExpressionProperty); }
+            set { SetValue(UseLocationExpressionProperty, value); }
+        }
+
+        internal bool IsValidating
+        {
+            get;
+            set;
+        }
+
+        internal DataGridRow Row
+        {
+            get;
+            set;
+        }
+
+        public static DynamicArgumentDesigner Editor
+        {
+            get;
+            set;
+        }
+
+        public DynamicArgumentWrapperObject()
+        {
+            this.isInitializing = true;
+            this.IsValidating = false;
+            this.Name = DynamicArgumentWrapperObject.Editor.GetDefaultName();
+            this.Type = DynamicArgumentWrapperObject.Editor.GetDefaultType();
+            this.Direction = DynamicArgumentWrapperObject.Editor.GetDefaultDirection();
+            this.UseLocationExpression = (this.Direction != ArgumentDirection.In);
+            this.isInitializing = false;
+        }
+
+        public DynamicArgumentWrapperObject(string argumentName, ModelItem argumentItem)
+        {
+            Fx.Assert(argumentItem != null, "argumentItem canot be null");
+            this.isInitializing = true;
+            this.IsValidating = false;            
+            Argument argument = (Argument)argumentItem.GetCurrentValue();
+            this.Name = argumentName;
+            this.Direction = argument.Direction;
+            this.UseLocationExpression = (this.Direction != ArgumentDirection.In);
+            this.Type = argument.ArgumentType;
+            this.Expression = argumentItem.Properties[ExpressionPropertyName].Value;
+            this.isInitializing = false;
+        }
+
+        static void OnArgumentPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
+        {
+            DynamicArgumentWrapperObject wrapper = (DynamicArgumentWrapperObject)sender;
+            if (!wrapper.IsValidating && !wrapper.isInitializing)
+            {
+                wrapper.OnArgumentPropertyChanged(e);
+            }
+        }
+
+        void OnArgumentPropertyChanged(DependencyPropertyChangedEventArgs e)
+        {
+            Fx.Assert(DynamicArgumentWrapperObject.Editor != null, "collection editor is null!");
+            this.IsValidating = true;
+            DynamicArgumentWrapperObject.Editor.ValidateEntry(this, e);
+
+            if (this.PropertyChanged != null)
+            {
+                this.PropertyChanged(this, new PropertyChangedEventArgs(e.Property.Name));
+            }
+        }
+
+        // For screen reader to read the DataGrid row.
+        public override string ToString()
+        {
+            return string.IsNullOrEmpty(this.Name) ? "Parameter" : this.Name;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesignerOptions.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesignerOptions.cs
new file mode 100644 (file)
index 0000000..7b25ae3
--- /dev/null
@@ -0,0 +1,41 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Presentation
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Linq;
+    using System.Text;
+
+    public class DynamicArgumentDesignerOptions
+    {
+        string argumentPrefix = DynamicArgumentDesigner.DefaultArgumentPrefix;
+        string hintText;
+
+        public string Title
+        {
+            get;
+            set;
+        }
+
+        public string ArgumentPrefix
+        {
+            get { return this.argumentPrefix; }
+            set { this.argumentPrefix = value; }
+        }
+
+        internal bool HideDirection
+        {
+            get;
+            set;
+        }
+
+        internal string HintText
+        {
+            get { return this.hintText; }
+            set { this.hintText = value; }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDialog.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDialog.cs
new file mode 100644 (file)
index 0000000..fe8b075
--- /dev/null
@@ -0,0 +1,58 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.Activities.Presentation
+{
+    using System.Activities.Presentation.Model;
+    using System.Windows;
+    using System.Collections;
+    using System.Collections.ObjectModel;
+    using System.Collections.Generic;
+    using System.Runtime;
+
+    public sealed class DynamicArgumentDialog : WorkflowElementDialog
+    {
+        bool isDictionary;
+        Type underlyingArgumentType;
+        ModelItem data;
+
+        DynamicArgumentDialog(ModelItem activity, ModelItem data, EditingContext context, DependencyObject owner, DynamicArgumentDesignerOptions options)
+        {
+            this.MinHeight = 200;
+            this.MinWidth = 700;
+            this.WindowSizeToContent = SizeToContent.Manual;
+            this.ModelItem = activity;
+            this.Context = context;
+            this.HelpKeyword = HelpKeywords.DynamicArgumentDialog;
+            this.Owner = owner;
+            this.Title = options.Title;
+            this.data = data;
+            this.Content = new DynamicArgumentDesigner()
+            {
+                DynamicArguments = DynamicArgumentDesigner.ModelItemToWrapperCollection(data, out isDictionary, out underlyingArgumentType),
+                IsDictionary = isDictionary,
+                UnderlyingArgumentType = underlyingArgumentType,
+                Context = context,
+                OwnerActivity = activity,
+                HideDirection = options.HideDirection,
+                ArgumentPrefix = options.ArgumentPrefix,
+                HintText = options.HintText,
+                ParentDialog = this,
+            };
+        }
+
+        public static bool ShowDialog(ModelItem activity, ModelItem data, EditingContext context, DependencyObject owner, DynamicArgumentDesignerOptions options)
+        {
+            return new DynamicArgumentDialog(activity, data, context, owner, options).ShowOkCancel();
+        }
+
+        protected override void OnWorkflowElementDialogClosed(bool? dialogResult)
+        {
+            if (dialogResult.Value)
+            {
+                DynamicArgumentDesigner.WrapperCollectionToModelItem((this.Content as DynamicArgumentDesigner).DynamicArguments, data, isDictionary, underlyingArgumentType);
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..7b600c8
--- /dev/null
@@ -0,0 +1,200 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Presentation
+{
+    using System;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Collections.ObjectModel;
+    using System.Collections.Specialized;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Linq;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Input;
+    using System.ComponentModel;
+    using System.Windows.Threading;
+    using System.Windows.Data;
+    using Microsoft.Activities.Presentation;
+
+    [Fx.Tag.XamlVisible(false)]
+    partial class TypeCollectionDesigner
+    {
+        public static readonly DependencyProperty ContextProperty = DependencyProperty.Register(
+            "Context",
+            typeof(EditingContext),
+            typeof(TypeCollectionDesigner),
+            new UIPropertyMetadata(null));
+
+        [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes",
+            Justification = "Type RoutedCommand is immutable.")]
+        public static readonly ICommand AddNewTypeCommand = new RoutedCommand("AddNewType", typeof(TypeCollectionDesigner));
+        public static readonly ICommand DeleteTypeCommand = new RoutedCommand("DeleteType", typeof(TypeCollectionDesigner));
+
+        DataGridHelper dgHelper;
+        ObservableCollection<TypeWrapper> wrapperCollection;
+
+        public TypeCollectionDesigner()
+        {
+            this.DefaultType = typeof(Object);
+            InitializeComponent();
+        }
+
+        // The collection of Type objects to display when type collection designer is opened.
+        internal IEnumerable<Type> InitialTypeCollection
+        {
+            set
+            {
+                this.wrapperCollection = new ObservableCollection<TypeWrapper>(value.Select(type => new TypeWrapper(type)));
+                this.typesDataGrid.ItemsSource = this.wrapperCollection;
+            }
+        }
+
+        // The collction of Type objects in the type collection designer when user clicks OK.
+        public IEnumerable<Type> UpdatedTypeCollection
+        {
+            get
+            {
+                return wrapperCollection.Where(wrapper => wrapper.Type != null).Select(wrapper => wrapper.Type);
+            }
+        }
+
+        public EditingContext Context
+        {
+            get { return (EditingContext)GetValue(ContextProperty); }
+            set { SetValue(ContextProperty, value); }
+        }
+
+        public bool AllowDuplicate
+        {
+            get;
+            set;
+        }
+
+        public Func<Type, bool> Filter
+        {
+            get;
+            set;
+        }
+
+        public Type DefaultType
+        {
+            get;
+            set;
+        }
+
+        internal WorkflowElementDialog ParentDialog
+        {
+            get;
+            set;
+        }
+
+        internal bool OnOK()
+        {   
+            if (!this.AllowDuplicate)
+            {
+                List<TypeWrapper> list = new List<TypeWrapper>();
+                foreach (TypeWrapper tw in this.wrapperCollection)
+                {
+                    if (tw.Type != null && list.Any<TypeWrapper>(entry => Type.Equals(entry.Type, tw.Type)))
+                    {
+                        ErrorReporting.ShowErrorMessage(string.Format(CultureInfo.CurrentCulture, (string)this.FindResource("duplicateEntryErrorMessage"), TypeNameHelper.GetDisplayName(tw.Type, true)));
+                        return false;
+                    }
+                    list.Add(tw);
+                }
+            }
+            return true;
+        }
+
+        // The DataGrid does not bubble up KeyDown event and we expect the upper window to be closed when ESC key is down.
+        // Thus we added an event handler in DataGrid to handle ESC key and closes the uppper window.
+        void OnTypesDataGridRowKeyDown(object sender, KeyEventArgs args)
+        {
+            DataGridRow row = (DataGridRow)sender;
+            if (args.Key == Key.Escape && !row.IsEditing && this.ParentDialog != null)
+            {
+                this.ParentDialog.CloseDialog(false);
+            }
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            this.dgHelper = new DataGridHelper(this.typesDataGrid, this);
+            this.dgHelper.AddNewRowContent = this.FindResource("addNewRowLabel");
+            this.dgHelper.AddNewRowCommand = AddNewTypeCommand;
+
+            base.OnInitialized(e);
+        }
+
+        void OnDataGridSelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            this.ButtonDelete.IsEnabled =
+                   (this.typesDataGrid.SelectedItems != null)
+                && (this.typesDataGrid.SelectedItems.Count != 0);
+        }
+
+        void OnAddTypeExecuted(object sender, ExecutedRoutedEventArgs e)
+        {   
+            var newEntry = new TypeWrapper(this.DefaultType);
+            this.wrapperCollection.Add(newEntry);
+            this.dgHelper.BeginRowEdit(newEntry);            
+            e.Handled = true;
+        }
+
+        void OnDeleteTypeExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            DataGridHelper.OnDeleteSelectedItems(this.typesDataGrid);
+        }
+
+        void OnEditingControlLoaded(object sender, RoutedEventArgs args)
+        {
+            DataGridHelper.OnEditingControlLoaded(sender, args);
+        }
+
+        void OnEditingControlUnloaded(object sender, RoutedEventArgs args)
+        {
+            DataGridHelper.OnEditingControlUnloaded(sender, args);
+        }
+
+        sealed class TypeWrapper : DependencyObject
+        {
+            public static readonly DependencyProperty TypeProperty =
+                DependencyProperty.Register("Type", typeof(Type), typeof(TypeWrapper));
+
+            //Default constructor is required by DataGrid to load NewItemPlaceHolder row and this constructor will never be called.
+            //Since we've already customized the new row template and hooked over creating new object event.
+            public TypeWrapper()
+            {
+                throw FxTrace.Exception.AsError(new NotSupportedException());
+            }
+
+            public TypeWrapper(Type type)
+            {
+                this.Type = type;
+            }
+
+            public Type Type
+            {
+                get { return (Type)GetValue(TypeProperty); }
+                set { SetValue(TypeProperty, value); }
+            }
+
+            // For screen reader to read the DataGrid row.
+            public override string ToString()
+            {
+                if (this.Type != null && !string.IsNullOrEmpty(this.Type.Name))
+                {
+                    return this.Type.Name;
+                }
+                return "null";
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionPropertyEditor.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionPropertyEditor.cs
new file mode 100644 (file)
index 0000000..ef27e53
--- /dev/null
@@ -0,0 +1,110 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.Activities.Presentation
+{
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.View;
+    using System.Windows;
+    using System.Runtime;
+    using System.Collections.Generic;
+    using System.Reflection;
+    using System.Diagnostics.CodeAnalysis;
+    using System.ComponentModel;
+    using System.Collections;
+
+    sealed class TypeCollectionPropertyEditor : DialogPropertyValueEditor 
+    {
+        public const string AllowDuplicate = "AllowDuplicate";
+
+        public const string Filter = "Filter";
+
+        public const string DefaultType = "DefaultType";
+
+        public TypeCollectionPropertyEditor()
+        {
+            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("TypeCollection_InlineTemplate");
+        }
+
+        internal static T GetOptionValueOrUseDefault<T>(IEnumerable attributes, string optionName, T defaultValue)
+        {
+            object optionValue;
+
+            if (EditorOptionAttribute.TryGetOptionValue(attributes, optionName, out optionValue))
+            {
+                return (T)optionValue;
+            }
+
+            return defaultValue;
+        }
+
+        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
+        {
+            ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = 
+                new ModelPropertyEntryToOwnerActivityConverter();
+
+            ModelItem activityModelItem = 
+                (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
+
+            ModelItem parentModelItem =
+                (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), true, null);
+
+            EditingContext context = ((IModelTreeItem)activityModelItem).ModelTreeManager.Context;
+
+            ModelItemCollection inputData = parentModelItem.Properties[propertyValue.ParentProperty.PropertyName].Collection;
+            IEnumerable<Type> rawInputData = inputData.GetCurrentValue() as IEnumerable<Type>;
+            Fx.Assert(rawInputData != null, "rawInputData is null or is not IEnumerable<Type>.");
+
+            ModelProperty editingProperty = activityModelItem.Properties[propertyValue.ParentProperty.PropertyName];
+            bool allowDuplication = GetOptionValueOrUseDefault(editingProperty.Attributes, TypeCollectionPropertyEditor.AllowDuplicate, true);
+            Func<Type, bool> filter = GetOptionValueOrUseDefault<Func<Type, bool>>(editingProperty.Attributes, TypeCollectionPropertyEditor.Filter, null);
+            Type defaultType = GetOptionValueOrUseDefault<Type>(editingProperty.Attributes, TypeCollectionPropertyEditor.DefaultType, typeof(Object));
+            EditorWindow editorWindow = new EditorWindow(activityModelItem, rawInputData, context, activityModelItem.View, allowDuplication, filter, defaultType);
+            if (editorWindow.ShowOkCancel())
+            {
+                using (var commitEditingScope = inputData.BeginEdit(System.Activities.Core.Presentation.SR.ChangeTypeCollectionEditingScopeDesc))
+                {
+                    inputData.Clear();
+                    foreach (Type i in ((TypeCollectionDesigner)editorWindow.Content).UpdatedTypeCollection)
+                    {
+                        inputData.Add(i);
+                    }
+                    commitEditingScope.Complete();
+                }
+            }
+        }
+
+        sealed class EditorWindow : WorkflowElementDialog
+        {
+            public EditorWindow(ModelItem activity, IEnumerable<Type> data, EditingContext context, DependencyObject owner, bool allowDuplicate, Func<Type, bool> filter, Type defaultType)
+            {
+                this.ModelItem = activity;
+                this.Context = context;
+                this.Owner = owner;
+                this.EnableMaximizeButton = false;
+                this.EnableMinimizeButton = false;
+                this.MinWidth = 450;
+                this.MinHeight = 260;
+                this.WindowResizeMode = ResizeMode.CanResize;
+                this.WindowSizeToContent = SizeToContent.Manual;
+                TypeCollectionDesigner content = new TypeCollectionDesigner()
+                {
+                    Context = context,
+                    InitialTypeCollection = data,
+                    AllowDuplicate = allowDuplicate,
+                    Filter = filter,
+                    DefaultType = defaultType,
+                    ParentDialog = this,
+                };
+                this.Title = (string)content.Resources["controlTitle"];
+                this.Content = content;
+                this.OnOk = content.OnOK;
+                this.HelpKeyword = HelpKeywords.TypeCollectionEditor;
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ActivityXRefConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ActivityXRefConverter.cs
new file mode 100644 (file)
index 0000000..a848a23
--- /dev/null
@@ -0,0 +1,53 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System;
+    using System.Globalization;
+    using System.Windows.Data;
+    using System.Activities.Presentation.Model;
+    using System.Activities;
+    using System.Activities.Core.Presentation;
+
+    sealed class ActivityXRefConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            if (!(targetType == typeof(string) || targetType == typeof(object)))
+            {
+                throw FxTrace.Exception.AsError(new NotSupportedException());
+            }
+            if (null == value)
+            {
+                throw FxTrace.Exception.AsError(new ArgumentNullException("value"));
+            }
+            ModelItem activity = value as ModelItem;
+            string displayName = value as string;
+            
+            string formatString = (parameter as string) ?? "{0}";
+
+            if (null != activity && typeof(Activity).IsAssignableFrom(activity.ItemType))
+            {
+                displayName = ((string)activity.Properties["DisplayName"].ComputedValue);
+            }
+
+            if (null == displayName)
+            {
+                displayName = "<null>";
+            }
+            else if (displayName.Length == 0)
+            {
+                displayName = "...";
+            }
+
+            return string.Format(CultureInfo.CurrentUICulture, formatString, displayName);
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotSupportedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingEditor.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingEditor.xaml.cs
new file mode 100644 (file)
index 0000000..cdd606a
--- /dev/null
@@ -0,0 +1,158 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Collections.Generic;
+    using System.Linq;
+    using System.ServiceModel;
+    using System.ServiceModel.Channels;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Activities.Presentation.Model;
+    using System.Configuration;
+    using System.ServiceModel.Configuration;
+    using System.Activities.Presentation;
+    
+    partial class BindingEditor
+    {
+        public static readonly DependencyProperty BindingProperty =
+            DependencyProperty.Register("Binding",
+            typeof(object),
+            typeof(BindingEditor),
+            new PropertyMetadata(OnBindingChanged));
+
+        List<BindingDescriptor> bindingElements = new List<BindingDescriptor>();
+
+        bool isInitializing;
+
+        public BindingEditor()
+        {
+            InitializeComponent();
+        }
+
+        public object Binding
+        {
+            get { return GetValue(BindingProperty); }
+            set { SetValue(BindingProperty, value); }
+        }
+
+        void LoadBindings()
+        {
+            try
+            {
+                this.bindingElements.Add(new BindingDescriptor { BindingName = (string)(this.TryFindResource("bindingEditorEmptyBindingLabel") ?? "none"), Value = null });
+                Configuration machineConfig = ConfigurationManager.OpenMachineConfiguration();              
+                ServiceModelSectionGroup section = ServiceModelSectionGroup.GetSectionGroup(machineConfig);
+                if (null != section && null != section.Bindings)
+                {
+                    this.bindingElements.AddRange(section.Bindings.BindingCollections
+                        .OrderBy(p => p.BindingName)
+                        .Select<BindingCollectionElement, BindingDescriptor>(p => new BindingDescriptor() { BindingName = p.BindingName, Value = p }));
+                }
+            }
+            catch (ConfigurationErrorsException err)
+            {
+                ErrorReporting.ShowErrorMessage(err.Message);
+            }
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+            this.isInitializing = true;
+            LoadBindings();
+            this.ItemsSource = this.bindingElements;
+            this.SelectedIndex = 0;
+            this.isInitializing = false;
+        }
+
+        protected override void OnSelectionChanged(SelectionChangedEventArgs e)
+        {
+            base.OnSelectionChanged(e);
+            if (!this.isInitializing)
+            {
+
+                BindingDescriptor entry = (BindingDescriptor)e.AddedItems[0];
+                if (null == entry.Value)
+                {
+                    Binding = null;
+                }
+                // try to avoid blowing away any binding that has been custom-tweaked in XAML.
+                else if (Binding == null || !(Binding is ModelItem) || !((ModelItem)Binding).ItemType.Equals(entry.Value.BindingType))
+                {
+                    Binding instance = (Binding)Activator.CreateInstance(entry.Value.BindingType);
+                    instance.Name = entry.BindingName;
+                    Binding = instance;
+                }
+            }
+        }
+
+        static void OnBindingChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
+        {
+            BindingEditor editor = (BindingEditor)sender;
+            object newValue = args.NewValue;
+
+            Type bindingType = null;
+            ModelItem item = newValue as ModelItem;
+            string bindingName = null;
+            if (item != null)
+            {
+                bindingType = item.ItemType;
+                bindingName = (string)item.Properties["Name"].ComputedValue;
+            }
+            else if (newValue != null)
+            {
+                bindingType = newValue.GetType();
+                if (typeof(Binding).IsAssignableFrom(bindingType))
+                {
+                    bindingName = ((Binding)newValue).Name;
+                }
+            }
+
+            // Make combo appear empty if the binding is not one of the ones known to us, e.g., has been custom-tweaked in XAML.
+            BindingDescriptor toSelect = null;
+            Func<BindingDescriptor, bool> where = p => null != p.Value && p.Value.BindingType == bindingType;
+            if (editor.bindingElements.Count(where) > 1)
+            {
+                toSelect = editor.bindingElements.Where(where).Where(p => string.Equals(p.BindingName, bindingName)).FirstOrDefault();
+            }
+            else
+            {
+                toSelect = editor.bindingElements.Where(where).FirstOrDefault();
+            }
+            //prevent OnSelectionChanged now - the binding is set directly to the object, no need to set again through event handler
+            editor.isInitializing = true;
+            if (null != toSelect)
+            {
+                editor.SelectedItem = toSelect;
+            }
+            else
+            {
+                editor.SelectedIndex = 0;
+            }
+            //allow selection changed events to be consumed again
+            editor.isInitializing = false;
+        }
+
+        sealed class BindingDescriptor 
+        {
+            public string BindingName
+            {
+                get;
+                internal set;
+            }
+
+            public BindingCollectionElement Value
+            {
+                get;
+                internal set;
+            }
+
+            public override string ToString()
+            {
+                return BindingName;
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingPropertyValueEditor.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingPropertyValueEditor.cs
new file mode 100644 (file)
index 0000000..e2ff6de
--- /dev/null
@@ -0,0 +1,17 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Core.Presentation.Themes;
+
+    sealed class BindingPropertyValueEditor : PropertyValueEditor
+    {
+        public BindingPropertyValueEditor()
+        {
+            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("Binding_InlineEditorTemplate");
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentButtonTitleConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentButtonTitleConverter.cs
new file mode 100644 (file)
index 0000000..d79825e
--- /dev/null
@@ -0,0 +1,50 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Runtime;
+    using System.Activities.Core.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Globalization;
+    using System.Windows.Data;
+
+    sealed class ContentButtonTitleConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            object content = value;
+            if (content != null && content is ModelItem)
+            {
+                content = ((ModelItem)content).GetCurrentValue();
+            }
+            if (content == null)
+            {
+                return SR.DefineContent;
+            }
+            else
+            {
+                //string contentTypeName = content.GetType().Name;
+                if (content is ReceiveMessageContent || content is SendMessageContent)
+                {
+                    return SR.ViewMessageContent;
+                }
+                else if (content is ReceiveParametersContent || content is SendParametersContent)
+                {
+                    return SR.ViewParameterContent;
+                }
+                else
+                {
+                    Fx.Assert(false, "Content must be of either ReceiveMessageContent, ReceiveParametersContent, SendMessageContent or SendParametersContent.");
+                    return null;
+                }
+            }
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotSupportedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentCorrelationTypeExpander.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentCorrelationTypeExpander.xaml.cs
new file mode 100644 (file)
index 0000000..e57264d
--- /dev/null
@@ -0,0 +1,315 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Collections.Generic;
+    using System.Reflection;
+    using System.Runtime.Serialization;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Input;
+    using System.Windows.Threading;
+    using System.Xml;
+    using System.Linq;
+    using System.Collections;
+    using System.Xml.Linq;
+
+    partial class ContentCorrelationTypeExpander
+    {
+        static readonly DependencyPropertyKey IsSelectionValidPropertyKey = DependencyProperty.RegisterReadOnly(
+            "IsSelectionValid",
+            typeof(bool),
+            typeof(ContentCorrelationTypeExpander),
+            new UIPropertyMetadata(false, OnIsSelectionValidChanged));
+
+        public static readonly DependencyProperty IsSelectionValidProperty = IsSelectionValidPropertyKey.DependencyProperty;
+
+        public static readonly RoutedEvent IsSelectionValidChangedEvent = EventManager.RegisterRoutedEvent(
+            "IsSelectionValidChanged",
+            RoutingStrategy.Bubble,
+            typeof(RoutedEventHandler),
+            typeof(ContentCorrelationTypeExpander));
+
+        public static readonly RoutedEvent SelectionChangedEvent = EventManager.RegisterRoutedEvent(
+            "SelectionChanged",
+            RoutingStrategy.Bubble,
+            typeof(RoutedEventHandler),
+            typeof(ContentCorrelationTypeExpander));
+
+        public static readonly DependencyProperty TypesToExpandProperty = DependencyProperty.Register(
+            "TypesToExpand",
+            typeof(IList<ExpanderTypeEntry>),
+            typeof(ContentCorrelationTypeExpander),
+            new UIPropertyMetadata(null, OnTypesToExpandChanged));
+
+        static readonly DependencyPropertyKey SelectedTypeEntryPropertyKey = DependencyProperty.RegisterReadOnly(
+            "SelectedTypeEntry", 
+            typeof(ExpanderTypeEntry), 
+            typeof(ContentCorrelationTypeExpander), 
+            new UIPropertyMetadata(null));
+
+        public static readonly DependencyProperty SelectedTypeEntryProperty = SelectedTypeEntryPropertyKey.DependencyProperty;
+
+        static readonly Type[] PrimitiveTypesInXPath = new Type[]
+            {
+                typeof(DateTime),
+                typeof(TimeSpan),
+                typeof(XmlQualifiedName),                
+                typeof(Uri),                
+                typeof(Guid),
+                typeof(XmlElement),
+                typeof(string),
+                typeof(object),
+                typeof(Decimal),
+                typeof(XElement),
+            };
+
+        MemberInfo[] path = null;
+        Type selectedType = null;       
+
+        public ContentCorrelationTypeExpander()
+        {
+            InitializeComponent();
+        }
+
+        public event RoutedEventHandler IsSelectionValidChanged
+        {
+            add
+            {
+                AddHandler(IsSelectionValidChangedEvent, value);
+            }
+            remove
+            {
+                RemoveHandler(IsSelectionValidChangedEvent, value);
+            }
+        }
+
+        public event RoutedEventHandler SelectionChanged
+        {
+            add
+            {
+                AddHandler(SelectionChangedEvent, value);
+            }
+            remove
+            {
+                RemoveHandler(SelectionChangedEvent, value);
+            }
+        }
+        public bool IsSelectionValid
+        {
+            get { return (bool)GetValue(IsSelectionValidProperty); }
+            private set { SetValue(IsSelectionValidPropertyKey, value); }
+        }
+
+        public IList<ExpanderTypeEntry> TypesToExpand
+        {
+            get { return (IList<ExpanderTypeEntry>)GetValue(TypesToExpandProperty); }
+            set { SetValue(TypesToExpandProperty, value); }
+        }
+
+        public ExpanderTypeEntry SelectedTypeEntry
+        {
+            get { return (ExpanderTypeEntry)GetValue(SelectedTypeEntryProperty); }
+            private set { SetValue(SelectedTypeEntryPropertyKey, value); }
+        }
+
+        public Type GetSelectedType()
+        {
+            return this.selectedType;
+        }
+
+        public MemberInfo[] GetMemberPath()
+        {
+            return this.path;
+        }
+
+        void RaiseSelectionValidChanged()
+        {
+            this.RaiseEvent(new RoutedEventArgs(IsSelectionValidChangedEvent, this));
+        }
+
+        void OnTypesToExpandChanged()
+        {
+            this.typeExpander.ItemsSource = this.TypesToExpand;
+            this.emptyContent.Visibility = null == this.TypesToExpand || 0 == this.TypesToExpand.Count ? Visibility.Visible : Visibility.Collapsed;
+        }
+
+        void OnTypeExpanderLoaded(object sender, RoutedEventArgs e)
+        {
+            this.typeExpander.Focus();
+        }
+
+        void OnTreeViewItemLoaded(object sender, RoutedEventArgs e)
+        {
+            var item = (TreeViewItem)sender;
+            if (null != item.Header)
+            {
+                if (item.Header is ExpanderTypeEntry)
+                {
+                    item.IsExpanded = true;
+                }
+                else if (item.Header is Type)
+                {
+                    var type = (Type)item.Header;
+                    item.IsExpanded = true;
+                }
+            }
+        }
+
+        void OnTreeViewItemMouseAccept(object sender, MouseButtonEventArgs e)
+        {
+            var item = sender as TreeViewItem;
+            if (null != item && item.Header is ExpanderTypeEntry)
+            {
+                this.SelectedTypeEntry = (ExpanderTypeEntry)item.Header;
+            }
+            if (null != item && item.IsSelected && item.IsSelectionActive)
+            {
+                this.Accept(item);
+                e.Handled = true;
+            }
+        }
+
+        void OnTreeViewItemKeyboardAccept(object sender, KeyEventArgs e)
+        {
+            var item = sender as TreeViewItem;
+            if (null != item && item.Header is ExpanderTypeEntry)
+            {
+                this.SelectedTypeEntry = (ExpanderTypeEntry)item.Header;
+            }
+            if (null != item && item.IsSelected && item.IsSelectionActive && Key.Enter == e.Key && Keyboard.Modifiers == ModifierKeys.None)
+            {
+                this.Accept(item);
+                e.Handled = true;
+            }
+        }
+
+        void Accept(TreeViewItem item)
+        {
+            bool isType = item.Header is ExpanderTypeEntry;
+            bool isMember  = item.Header is MemberInfo;
+            if (isMember)
+            {
+                var members = new List<MemberInfo>(1);
+                while (null != item && item.Header is MemberInfo)
+                {
+                    var member = (MemberInfo)item.Header;
+                    members.Insert(0, member);
+
+                    if (item.Tag is TreeViewItem)
+                    {
+                        item = (TreeViewItem)item.Tag;
+                    }
+                    else
+                    {
+                        item = null;
+                    }
+                }
+                this.SelectedTypeEntry = (ExpanderTypeEntry)item.Header;
+                this.selectedType = this.SelectedTypeEntry.TypeToExpand;
+                this.path = members.ToArray();
+            }
+            else if (isType)
+            {
+                this.SelectedTypeEntry = (ExpanderTypeEntry)item.Header;
+                this.selectedType = this.SelectedTypeEntry.TypeToExpand;
+                this.path = new MemberInfo[0];
+            }
+            else
+            {
+                this.SelectedTypeEntry = null;
+                this.selectedType = null;
+                this.path = null;
+            }
+            this.IsSelectionValid = isType || isMember;
+            this.RaiseEvent(new RoutedEventArgs(SelectionChangedEvent, this));
+        }
+
+        //The following types are considered as primitives as far as XPath generation is concerned and shouldn't be expanded any more
+        // 1. CLR built-in types 
+        // 2. Byte array, DateTime, TimeSpan, GUID, Uri, XmlQualifiedName, XmlElement and XmlNode array [This includes XElement and XNode array from .NET 3.5] 
+        // 3. Enums 
+        // 4. Arrays and Collection classes including List<T>, Dictionary<K,V> and Hashtable (Anything that implements IEnumerable or IDictionary or is an array is treated as a collection).
+        // 5. Type has [CollectionDataContract] attribute
+        internal static bool IsPrimitiveTypeInXPath(Type type)
+        {
+            return ((type.IsPrimitive) || type.IsEnum || PrimitiveTypesInXPath.Any((item => item == type))
+                || (typeof(IEnumerable).IsAssignableFrom(type)) || typeof(IDictionary).IsAssignableFrom(type) || type.IsArray
+                || (type.GetCustomAttributes(typeof(CollectionDataContractAttribute), false).Length > 0));
+        }
+
+        static void OnIsSelectionValidChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
+        {
+            ((ContentCorrelationTypeExpander)sender).RaiseSelectionValidChanged();
+        }
+
+        static void OnTypesToExpandChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
+        {
+            var control = (ContentCorrelationTypeExpander)sender;
+            control.Dispatcher.BeginInvoke(new Action(() => { control.OnTypesToExpandChanged(); }), DispatcherPriority.Render);
+        }
+    }
+
+    internal sealed class TypeEntryContainer
+    {
+        public string DisplayText { get; set; }
+        public IList<ExpanderTypeEntry> Items { get; set; }
+
+        public override string ToString()
+        {
+            return this.DisplayText ?? base.ToString();
+        }
+    }
+
+    internal sealed class ExpanderTypeEntry : DependencyObject
+    {
+        public static readonly DependencyProperty NameProperty = DependencyProperty.Register(
+            "Name",
+            typeof(string),
+            typeof(ExpanderTypeEntry),
+            new UIPropertyMetadata(string.Empty));
+
+        public static readonly DependencyProperty TypeToExpandProperty = DependencyProperty.Register(
+            "TypeToExpand",
+            typeof(Type),
+            typeof(ExpanderTypeEntry),
+            new UIPropertyMetadata(null));
+
+        public static readonly DependencyProperty TagProperty = DependencyProperty.Register(
+            "Tag",
+            typeof(object),
+            typeof(ExpanderTypeEntry),
+            new UIPropertyMetadata(null));
+
+        public string Name
+        {
+            get { return (string)GetValue(NameProperty); }
+            set { SetValue(NameProperty, value); }
+        }
+
+        public Type TypeToExpand
+        {
+            get { return (Type)GetValue(TypeToExpandProperty); }
+            set { SetValue(TypeToExpandProperty, value); }
+        }
+
+        public Type[] TypeToExpandSource
+        {
+            get { return new Type[] { this.TypeToExpand }; }
+        }
+
+        public object Tag
+        {
+            get { return GetValue(TagProperty); }
+            set { SetValue(TagProperty, value); }
+        }
+
+        public override string ToString()
+        {
+            return this.Name ?? "<null>";
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentDialogViewModel.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentDialogViewModel.cs
new file mode 100644 (file)
index 0000000..5e80f1f
--- /dev/null
@@ -0,0 +1,216 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Hosting;
+    using System.Activities.Presentation.Model;
+    using System.Collections.ObjectModel;
+    using System.ComponentModel;
+
+    class ContentDialogViewModel<TMessage, TParameter> : INotifyPropertyChanged
+        where TMessage : new()
+        where TParameter : new()
+    {
+        EditingMode editingMode = EditingMode.Message;
+        ModelItem messageExpression;
+        Type declaredMessageType;
+
+        public ContentDialogViewModel(ModelItem modelItem)
+        {
+            this.ModelItem = modelItem;
+            InitializeMessageAndParameterData();
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+
+        public bool IsEditingEnabled
+        {
+            get
+            {
+                return !this.Context.Items.GetValue<ReadOnlyState>().IsReadOnly;
+            }
+        }
+
+        public bool IsMessageChecked
+        {
+            get
+            {
+                return this.editingMode == EditingMode.Message;
+            }
+            set
+            {
+                if (value != this.IsMessageChecked)
+                {
+                    this.editingMode = value ? EditingMode.Message : EditingMode.Parameter;
+                    OnModeChanged();
+                }
+            }
+        }
+
+        public bool IsParameterChecked
+        {
+            get
+            {
+                return this.editingMode == EditingMode.Parameter;
+            }
+            set
+            {
+                if (value != this.IsParameterChecked)
+                {
+                    this.editingMode = value ? EditingMode.Parameter : EditingMode.Message;
+                    OnModeChanged();
+                }
+            }
+        }
+
+        public ModelItem ModelItem
+        {
+            get;
+            private set;
+        }
+
+        public EditingContext Context
+        {
+            get
+            {
+                return this.ModelItem.GetEditingContext();
+            }
+        }
+
+        public ModelItem MessageExpression
+        {
+            get
+            {
+                return this.messageExpression;
+            }
+            set
+            {
+                this.messageExpression = value;
+                if (this.PropertyChanged != null)
+                {
+                    this.PropertyChanged(this, new PropertyChangedEventArgs("MessageExpression"));
+                }
+            }
+        }
+
+        public Type DeclaredMessageType
+        {
+            get
+            {
+                return this.declaredMessageType;
+            }
+            set
+            {
+                this.declaredMessageType = value;
+                if (this.PropertyChanged != null)
+                {
+                    this.PropertyChanged(this, new PropertyChangedEventArgs("DeclaredMessageType"));
+                }
+            }
+        }
+
+        public bool IsDictionary
+        {
+            get;
+            private set;
+        }
+
+        public Type UnderlyingArgumentType
+        {
+            get;
+            private set;
+        }
+
+        public ObservableCollection<DynamicArgumentWrapperObject> DynamicArguments
+        {
+            get;
+            set;
+        }
+
+        internal bool OnOk()
+        {
+            ModelProperty contentProperty = this.ModelItem.Properties["Content"];
+            if (this.editingMode == EditingMode.Parameter)
+            {
+                contentProperty.SetValue(new TParameter());
+                DynamicArgumentDesigner.WrapperCollectionToModelItem(this.DynamicArguments,
+                                        contentProperty.Value.Properties["Parameters"].Value,
+                                        this.IsDictionary, this.UnderlyingArgumentType);
+            }
+            else
+            {
+                if (this.DeclaredMessageType == null && this.MessageExpression == null)
+                {
+                    contentProperty.SetValue(null);
+                }
+                else
+                {
+                    contentProperty.SetValue(new TMessage());
+                    contentProperty.Value.Properties["Message"].SetValue(this.MessageExpression);
+                    contentProperty.Value.Properties["DeclaredMessageType"].SetValue(this.DeclaredMessageType);
+                }
+            }
+
+            return true;
+        }
+
+        void InitializeMessageAndParameterData()
+        {
+            ModelItem parameterModelItem;
+            ModelTreeManager modelTreeManager = (this.ModelItem as IModelTreeItem).ModelTreeManager;
+
+            ModelItem contentModelItem = this.ModelItem.Properties["Content"].Value;
+            if (contentModelItem == null)
+            {
+                this.messageExpression = modelTreeManager.WrapAsModelItem(new TMessage()).Properties["Message"].Value;
+                this.declaredMessageType = null;
+                parameterModelItem = modelTreeManager.WrapAsModelItem(new TParameter()).Properties["Parameters"].Value;
+            }
+            else
+            {
+                if (contentModelItem.ItemType == typeof(TMessage))
+                {
+                    this.editingMode = EditingMode.Message;
+                    this.messageExpression = contentModelItem.Properties["Message"].Value;
+                    this.declaredMessageType = (Type)contentModelItem.Properties["DeclaredMessageType"].ComputedValue;
+                    parameterModelItem = modelTreeManager.WrapAsModelItem(new TParameter()).Properties["Parameters"].Value;
+                }
+                else
+                {
+                    this.editingMode = EditingMode.Parameter;
+                    this.messageExpression = modelTreeManager.WrapAsModelItem(new TMessage()).Properties["Message"].Value;
+                    this.declaredMessageType = null;
+                    parameterModelItem = contentModelItem.Properties["Parameters"].Value;
+                }
+            }
+
+            bool isDictionary;
+            Type underlyingArgumentType;
+            this.DynamicArguments = DynamicArgumentDesigner.ModelItemToWrapperCollection(
+                                                parameterModelItem,
+                                                out isDictionary,
+                                                out underlyingArgumentType);
+
+            this.IsDictionary = isDictionary;
+            this.UnderlyingArgumentType = underlyingArgumentType;
+        }
+
+        void OnModeChanged()
+        {
+            if (this.PropertyChanged != null)
+            {
+                this.PropertyChanged(this, new PropertyChangedEventArgs("IsMessageChecked"));
+                this.PropertyChanged(this, new PropertyChangedEventArgs("IsParameterChecked"));
+            }
+        }
+
+        enum EditingMode
+        {
+            Message,
+            Parameter
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveMessageContentSearchableStringConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveMessageContentSearchableStringConverter.cs
new file mode 100644 (file)
index 0000000..84b7024
--- /dev/null
@@ -0,0 +1,25 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation.Converters
+{
+    using System.Activities.Presentation.Converters;
+    using System.Collections.Generic;
+    using System.ServiceModel.Activities;
+
+    class ReceiveMessageContentSearchableStringConverter : SearchableStringConverter
+    {
+        public override IList<string> Convert(object value)
+        {
+            List<string> results = new List<string>();
+            ReceiveMessageContent content = value as ReceiveMessageContent;
+            if (null != content)
+            {
+                results.AddRange(new ArgumentSearchableStringConverter().Convert(content.Message));
+                results.AddRange(new TypeSearchableStringConverter().Convert(content.DeclaredMessageType));
+            }
+            return results;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveParametersContentSearchableStringConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveParametersContentSearchableStringConverter.cs
new file mode 100644 (file)
index 0000000..ae15f2b
--- /dev/null
@@ -0,0 +1,30 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation.Converters
+{
+    using System.Activities;
+    using System.Activities.Presentation.Converters;
+    using System.Collections.Generic;
+    using System.ServiceModel.Activities;
+
+    class ReceiveParametersContentSearchableStringConverter : SearchableStringConverter
+    {
+        public override IList<string> Convert(object value)
+        {
+            List<string> results = new List<string>();
+            ReceiveParametersContent content = value as ReceiveParametersContent;
+            if (null != content)
+            {
+                foreach (KeyValuePair<string, OutArgument> param in content.Parameters)
+                {
+                    results.Add(param.Key);
+                    results.Add(param.Value.GetType().Name);
+                    results.AddRange(new ArgumentSearchableStringConverter().Convert(param.Value));
+                }
+            }
+            return results;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendMessageContentSearchableStringConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendMessageContentSearchableStringConverter.cs
new file mode 100644 (file)
index 0000000..d55da13
--- /dev/null
@@ -0,0 +1,25 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation.Converters
+{
+    using System.Activities.Presentation.Converters;
+    using System.Collections.Generic;
+    using System.ServiceModel.Activities;
+
+    class SendMessageContentSearchableStringConverter : SearchableStringConverter
+    {
+        public override IList<string> Convert(object value)
+        {
+            List<string> results = new List<string>();
+            SendMessageContent content = value as SendMessageContent;
+            if (null != content)
+            {
+                results.AddRange(new ArgumentSearchableStringConverter().Convert(content.Message));
+                results.AddRange(new TypeSearchableStringConverter().Convert(content.DeclaredMessageType));
+            }
+            return results;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendParametersContentSearchableStringConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendParametersContentSearchableStringConverter.cs
new file mode 100644 (file)
index 0000000..6c8901c
--- /dev/null
@@ -0,0 +1,30 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation.Converters
+{
+    using System.Activities;
+    using System.Activities.Presentation.Converters;
+    using System.Collections.Generic;
+    using System.ServiceModel.Activities;
+
+    class SendParametersContentSearchableStringConverter : SearchableStringConverter
+    {
+        public override IList<string> Convert(object value)
+        {
+            List<string> results = new List<string>();
+            SendParametersContent content = value as SendParametersContent;
+            if (null != content)
+            {
+                foreach (KeyValuePair<string, InArgument> param in content.Parameters)
+                {
+                    results.Add(param.Key);
+                    results.Add(param.Value.GetType().Name);
+                    results.AddRange(new ArgumentSearchableStringConverter().Convert(param.Value));
+                }
+            }
+            return results;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/XPathMessageQuerySearchableStringConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/XPathMessageQuerySearchableStringConverter.cs
new file mode 100644 (file)
index 0000000..1cfa0be
--- /dev/null
@@ -0,0 +1,25 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation.Converters
+{
+    using System.Activities;
+    using System.Activities.Presentation.Converters;
+    using System.Collections.Generic;
+    using System.ServiceModel;
+
+    class XPathMessageQuerySearchableStringConverter : SearchableStringConverter
+    {
+        public override IList<string> Convert(object value)
+        {
+            IList<string> results = new List<string>();
+            XPathMessageQuery messageQuery = value as XPathMessageQuery;
+            if (messageQuery != null)
+            {
+                results.Add(messageQuery.Expression);
+            }
+            return results;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelatesOnValueEditor.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelatesOnValueEditor.cs
new file mode 100644 (file)
index 0000000..9d9a9c0
--- /dev/null
@@ -0,0 +1,93 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.View;
+    using System.Windows;
+    using System.Runtime;
+    using System.Windows.Controls;
+
+    sealed class CorrelatesOnValueEditor : DialogPropertyValueEditor
+    {
+        public CorrelatesOnValueEditor()
+        {
+            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("CorrelatesOnDesigner_InlineTemplate");
+        }
+
+        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
+        {
+            ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = new ModelPropertyEntryToOwnerActivityConverter();
+
+            ModelItem modelItem = (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
+            EditingContext context = modelItem.GetEditingContext();
+
+            this.ShowDialog(modelItem, context);
+        }
+
+        public void ShowDialog(ModelItem activity, EditingContext context)
+        {
+            Fx.Assert(activity != null, "Activity model item shouldn't be null!");
+            Fx.Assert(context != null, "EditingContext shouldn't be null!");
+
+
+            string bookmarkTitle = (string)this.InlineEditorTemplate.Resources["bookmarkTitle"];
+
+            UndoEngine undoEngine = context.Services.GetService<UndoEngine>();
+            Fx.Assert(null != undoEngine, "UndoEngine should be available");
+
+            using (EditingScope scope = context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(bookmarkTitle, true))
+            {
+                if ((new EditorWindow(activity, context)).ShowOkCancel())
+                {
+                    scope.Complete();
+                }
+            }
+        }
+
+        sealed class EditorWindow : WorkflowElementDialog
+        {
+            public EditorWindow(ModelItem activity, EditingContext context)
+            {
+                this.ModelItem = activity;
+                this.Context = context;
+                this.Owner = activity.View;
+                this.EnableMaximizeButton = false;
+                this.EnableMinimizeButton = false;
+                this.MinHeight = 250;
+                this.MinWidth = 450;
+                this.WindowResizeMode = ResizeMode.CanResize;
+                this.WindowSizeToContent = SizeToContent.Manual;
+                var template = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("CorrelatesOnDesigner_DialogTemplate");
+
+                var presenter = new ContentPresenter()
+                {
+                    Content = activity,
+                    ContentTemplate = template
+                };
+                this.Title = (string)template.Resources["controlTitle"];
+                this.Content = presenter;
+                this.HelpKeyword = HelpKeywords.CorrelatesOnDefinitionDialog;
+            }
+
+            protected override void OnWorkflowElementDialogClosed(bool? dialogResult)
+            {
+                if (dialogResult.HasValue && dialogResult.Value)
+                {
+                    var correlatesOnProperty = this.ModelItem.Properties["CorrelatesOn"];
+
+                    if (correlatesOnProperty.IsSet && 0 == correlatesOnProperty.Dictionary.Count)
+                    {
+                        correlatesOnProperty.ClearValue();
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationDataDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationDataDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..7288d31
--- /dev/null
@@ -0,0 +1,232 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Collections.Generic;
+    using System.Windows;
+    using System.Activities.Presentation.View;
+    using System.Windows.Input;
+    using System.Collections.ObjectModel;
+    using System.Collections.Specialized;
+    using System.Runtime;
+    using System.Activities.Presentation.Hosting;
+    using System.Windows.Controls;
+    using System.Globalization;
+    using System.Linq;
+
+    internal partial class CorrelationDataDesigner 
+    {
+        const string KeyPrefix = "key";
+                
+        public static readonly DependencyProperty ActivityProperty = DependencyProperty.Register(
+            "Activity", 
+            typeof(ModelItem), 
+            typeof(CorrelationDataDesigner), 
+            new UIPropertyMetadata(OnActivityChanged));
+
+        public static readonly DependencyProperty CorrelationInitializeDataProperty = DependencyProperty.Register(
+            "CorrelationInitializeData", 
+            typeof(ObservableCollection<CorrelationDataWrapper>), 
+            typeof(CorrelationDataDesigner),
+            new UIPropertyMetadata(OnCorrelationDataChanged));
+
+        public static readonly DependencyProperty CorrelationHandleProperty = DependencyProperty.Register(
+            "CorrelationHandle", 
+            typeof(ModelItem), 
+            typeof(CorrelationDataDesigner));
+
+        public static readonly RoutedCommand AddNewDataCommand = new RoutedCommand("AddNewDataCommand", typeof(CorrelationDataDesigner));
+
+        DataGridHelper correlationDataDGHelper;
+
+        public ModelItem Activity
+        {
+            get { return (ModelItem)GetValue(ActivityProperty); }
+            set { SetValue(ActivityProperty, value); }
+        }
+
+        public ObservableCollection<CorrelationDataWrapper> CorrelationInitializeData
+        {
+            get { return (ObservableCollection<CorrelationDataWrapper>)GetValue(CorrelationInitializeDataProperty); }
+            set { SetValue(CorrelationInitializeDataProperty, value); }
+        }
+
+        public ModelItem CorrelationHandle
+        {
+            get { return (ModelItem)GetValue(CorrelationHandleProperty); }
+            set { SetValue(CorrelationHandleProperty, value); }
+        }
+
+        public CorrelationDataDesigner()
+        {
+            this.InitializeComponent();
+
+            //create data grid helper
+            this.correlationDataDGHelper = new DataGridHelper(this.correlationInitializers, this);            
+            //add binding to handle Add new entry clicks
+            this.CommandBindings.Add(new CommandBinding(AddNewDataCommand, OnAddNewDataExecuted));
+            //provide callback to add new row functionality
+            this.correlationDataDGHelper.AddNewRowCommand = AddNewDataCommand;
+            //add title for "add new row" button
+            this.correlationDataDGHelper.AddNewRowContent = (string)this.FindResource("addNewEntry");                       
+
+            CorrelationDataWrapper.Editor = this;
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+            this.Loaded += this.OnCorrelationDataDesignerLoaded;
+        }
+
+        void OnCorrelationDataDesignerLoaded(object sender, RoutedEventArgs e)
+        {
+            bool isReadOnly = this.Activity != null ? this.Activity.GetEditingContext().Items.GetValue<ReadOnlyState>().IsReadOnly : false;
+            this.correlationInitializers.IsReadOnly = isReadOnly;
+            this.correlationHandleETB.IsReadOnly = isReadOnly;
+        }
+
+        void OnExpressionTextBoxLoaded(object sender, RoutedEventArgs args)
+        {
+            ((ExpressionTextBox)sender).IsIndependentExpression = true;
+        }
+
+        //user clicked Add new data
+        void OnAddNewDataExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            //generate unique dictionary key
+            string keyName = this.CorrelationInitializeData.GetUniqueName<CorrelationDataWrapper>(KeyPrefix, item => item.Key);
+            //create new key value pair and add it to the dictionary
+            CorrelationDataWrapper wrapper = new CorrelationDataWrapper(keyName, null);
+            this.CorrelationInitializeData.Add(wrapper);
+            //begin row edit after adding new entry
+            this.correlationDataDGHelper.BeginRowEdit(wrapper, this.correlationInitializers.Columns[1]);
+        }
+       
+        static void OnActivityChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
+        {
+            var item = e.NewValue as ModelItem;
+            if (null != item && !item.IsAssignableFrom<InitializeCorrelation>())
+            {
+                Fx.Assert("CorrelationDataDesigner can only used to edit CorrelationData property of InitializeCorrelation activity");                
+            }            
+        }
+
+        static void OnCorrelationDataChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
+        {
+            (sender as CorrelationDataDesigner).correlationInitializers.ItemsSource = e.NewValue as ObservableCollection<CorrelationDataWrapper>;
+        }
+
+        internal void CommitEdit()
+        {
+            if ((this.Activity != null) && (this.Activity.ItemType == typeof(InitializeCorrelation)))
+            {
+                using (ModelEditingScope scope = this.Activity.BeginEdit((string)this.FindResource("editCorrelationDataDescription")))
+                {
+                    this.Activity.Properties[InitializeCorrelationDesigner.CorrelationPropertyName].SetValue(this.CorrelationHandle);
+                    ModelItemCollection correlationDataCollection = this.Activity.Properties[InitializeCorrelationDesigner.CorrelationDataPropertyName].Dictionary.Properties["ItemsCollection"].Collection;
+                    correlationDataCollection.Clear();
+                    foreach (CorrelationDataWrapper wrapper in this.CorrelationInitializeData)
+                    {
+                        correlationDataCollection.Add(new ModelItemKeyValuePair<string, InArgument<string>>
+                            {
+                                Key = wrapper.Key,
+                                Value = wrapper.Value != null ? wrapper.Value.GetCurrentValue() as InArgument<string> : null
+                            });
+                    }
+                    scope.Complete();
+                }
+            }
+        }
+
+        internal void ValidateKey(CorrelationDataWrapper wrapper, string oldKey)
+        {
+            string newKey = wrapper.Key;            
+            if (string.IsNullOrEmpty(newKey))
+            {
+                ErrorReporting.ShowErrorMessage(string.Format(CultureInfo.CurrentCulture, System.Activities.Core.Presentation.SR.NullOrEmptyKeyName));
+                wrapper.Key = oldKey;
+            }
+            else 
+            {
+                // At this point, the key of the entry has already been changed. If there are 
+                // entries with duplicate keys, the number of those entries is greater than 1.
+                // Thus, we only need to check the entry count.
+                int entryCount = this.CorrelationInitializeData.Count(entry => entry.Key == newKey);
+                if (entryCount > 1)
+                {
+                    ErrorReporting.ShowErrorMessage(string.Format(CultureInfo.CurrentCulture, System.Activities.Core.Presentation.SR.DuplicateKeyName, newKey));
+                    wrapper.Key = oldKey;
+                }
+            }
+        }
+
+        void OnEditingControlLoaded(object sender, RoutedEventArgs args)
+        {
+            DataGridHelper.OnEditingControlLoaded(sender, args);
+        }
+
+        void OnEditingControlUnloaded(object sender, RoutedEventArgs args)
+        {
+            DataGridHelper.OnEditingControlUnloaded(sender, args);
+        }
+    }
+
+    internal sealed class CorrelationDataWrapper : DependencyObject
+    {
+        public static readonly DependencyProperty KeyProperty =
+            DependencyProperty.Register("Key", typeof(string), typeof(CorrelationDataWrapper), new UIPropertyMetadata(string.Empty, OnKeyChanged));
+
+
+        public static readonly DependencyProperty ValueProperty =
+            DependencyProperty.Register("Value", typeof(ModelItem), typeof(CorrelationDataWrapper));
+
+        bool isValidating;
+        public ModelItem Value
+        {
+            get { return (ModelItem)GetValue(ValueProperty); }
+            set { SetValue(ValueProperty, value); }
+        }
+       
+        public string Key
+        {
+            get { return (string)GetValue(KeyProperty); }
+            set { SetValue(KeyProperty, value); }
+        }
+
+        public static CorrelationDataDesigner Editor
+        {
+            get;
+            set;
+        }
+
+        public CorrelationDataWrapper()
+        {
+            throw FxTrace.Exception.AsError(new NotSupportedException());
+        }
+
+        internal CorrelationDataWrapper(string key, ModelItem value)            
+        {
+            //Skip validation when first populate the collection
+            this.isValidating = true;
+            this.Key = key;
+            this.Value = value;
+            this.isValidating = false;
+        }
+
+        static void OnKeyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
+        {
+            CorrelationDataWrapper wrapper = sender as CorrelationDataWrapper;
+            if ((wrapper != null) && (!wrapper.isValidating))
+            {                
+                wrapper.isValidating = true;
+                CorrelationDataWrapper.Editor.ValidateKey(wrapper, (string)e.OldValue);
+                wrapper.isValidating = false;
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..9790956
--- /dev/null
@@ -0,0 +1,255 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Collections;
+    using System.Collections.ObjectModel;
+    using System.Collections.Specialized;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Input;
+    using System.Globalization;
+    using System.Collections.Generic;
+
+    internal partial class CorrelationInitializerDesigner 
+    {
+        DataGridHelper correlationInitializerDGHelper;
+
+        const string CorrelationInitializersKey = "CorrelationInitializers";
+
+        public static readonly DependencyProperty ActivityProperty = DependencyProperty.Register(
+            "Activity", 
+            typeof(ModelItem), 
+            typeof(CorrelationInitializerDesigner), 
+            new UIPropertyMetadata(OnActivityChanged));
+
+        static readonly ICommand AddNewInitializerCommand = new RoutedCommand();
+
+        public CorrelationInitializerDesigner()
+        {
+            this.InitializeComponent();
+        }
+
+        public ModelItem Activity
+        {
+            get { return (ModelItem)GetValue(ActivityProperty); }
+            set { SetValue(ActivityProperty, value); }
+        }
+
+        ModelItemCollection CorrelationInitializers
+        {
+            get { return this.Activity.Properties[CorrelationInitializersKey].Collection; }
+        }
+
+        protected override void OnInitialized(EventArgs args)
+        {
+            base.OnInitialized(args);
+
+            this.CommandBindings.Add(new CommandBinding(AddNewInitializerCommand, this.OnAddNewInitializerExecuted));
+
+            //create data grid helper
+            this.correlationInitializerDGHelper = new DataGridHelper(this.correlationInitializers, this);
+            this.correlationInitializerDGHelper.ShowValidationErrorAsToolTip = true;
+            this.correlationInitializerDGHelper.AddNewRowContent = (string)this.FindResource("addNewInitializer");
+            this.correlationInitializerDGHelper.AddNewRowCommand = CorrelationInitializerDesigner.AddNewInitializerCommand;            
+        }
+
+        void OnAddNewInitializerExecuted(object sender, ExecutedRoutedEventArgs e)
+        {
+            var initializer = (CanUseQueryCorrelationInitializer(this.Activity) ? 
+                (CorrelationInitializer)new QueryCorrelationInitializer() : (CorrelationInitializer)new ContextCorrelationInitializer());
+            var result = this.CorrelationInitializers.Add(initializer);
+            var wrapper = new CorrelationInitializerEntry(result);
+            this.correlationInitializerDGHelper.Source<IList>().Add(wrapper);
+            this.correlationInitializerDGHelper.BeginRowEdit(wrapper);
+        }
+
+        static bool CanUseQueryCorrelationInitializer(ModelItem activity)
+        {
+            bool result = true;
+            if (null != activity)
+            {
+                if (activity.IsAssignableFrom<Receive>() || activity.IsAssignableFrom<Send>())
+                {
+                    ModelItem serializationOption;
+                    activity.TryGetPropertyValue(out serializationOption, "SerializerOption");
+                    result = SerializerOption.XmlSerializer != (SerializerOption)serializationOption.GetCurrentValue();
+                }
+                else if (activity.IsAssignableFrom<SendReply>() || activity.IsAssignableFrom<ReceiveReply>())
+                {
+                    ModelItem request;
+                    activity.TryGetPropertyValue(out request, "Request");
+                    result = CanUseQueryCorrelationInitializer(request);
+                }
+            }
+            return result;
+        }
+
+        void OnDataCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+        {
+            switch (e.Action)
+            {
+                case NotifyCollectionChangedAction.Remove:
+                    foreach (CorrelationInitializerEntry entry in e.OldItems)
+                    {
+                        this.CorrelationInitializers.Remove(entry.ReflectedObject);
+                        entry.Dispose();
+                    }
+                    break;
+            }
+        }
+
+
+        internal void CleanupObjectMap()
+        {
+        }
+
+        void OnActivityChanged()
+        {
+            if (null != this.Activity)
+            {
+                var source = new ObservableCollection<CorrelationInitializerEntry>();
+
+                foreach (var entry in this.CorrelationInitializers)
+                {
+                    var wrapper = new CorrelationInitializerEntry(entry);
+                    source.Add(wrapper);
+                }
+
+                this.correlationInitializers.ItemsSource = source;
+                source.CollectionChanged += this.OnDataCollectionChanged;
+            }
+        }
+
+        static void OnActivityChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
+        {
+            var activity = e.NewValue as ModelItem;
+            if (null != activity && !activity.IsMessagingActivity())
+            {
+                throw FxTrace.Exception.AsError(new NotSupportedException(activity.ItemType.FullName));
+            }
+            ((CorrelationInitializerDesigner)sender).OnActivityChanged();
+        }
+
+        void OnEditingControlLoaded(object sender, RoutedEventArgs args)
+        {
+            DataGridHelper.OnEditingControlLoaded(sender, args);
+        }
+
+        void OnEditingControlUnloaded(object sender, RoutedEventArgs args)
+        {
+            DataGridHelper.OnEditingControlUnloaded(sender, args);
+        }
+
+        internal sealed class CorrelationInitializerEntry : DesignObjectWrapper
+        {
+            internal static readonly string HandleProperty = "CorrelationHandle";
+            internal static readonly string CorrelationTypeProperty = "CorrelationType";
+            internal static readonly string MessageQuerySetModelPropertyProperty = "MessageQuerySet";
+
+            static readonly string[] Properties = new string[] { HandleProperty, CorrelationTypeProperty, MessageQuerySetModelPropertyProperty };
+
+            #region Initialize type properties code
+            public static PropertyDescriptorData[] InitializeTypeProperties()
+            {
+                return new PropertyDescriptorData[]
+                {
+                    new PropertyDescriptorData()
+                    {
+                        PropertyName = HandleProperty,
+                        PropertyType = typeof(InArgument),
+                        PropertySetter = (instance, newValue) =>
+                            {
+                                ((CorrelationInitializerEntry)instance).SetHandle(newValue);
+                            },
+                        PropertyGetter = (instance) => (((CorrelationInitializerEntry)instance).GetHandle()),
+                    },
+                    new PropertyDescriptorData()
+                    {
+                        PropertyName = CorrelationTypeProperty,
+                        PropertyType = typeof(Type),
+                        PropertyValidator = (instance, newValue, errors) => (((CorrelationInitializerEntry)instance).ValidateCorrelationType(newValue, errors)),
+                        PropertySetter = (instance, newValue) =>
+                            {
+                                ((CorrelationInitializerEntry)instance).SetCorrelationType(newValue);                                
+                            },
+                        PropertyGetter = (instance) => (((CorrelationInitializerEntry)instance).GetCorrelationType()),
+                    },
+                    new PropertyDescriptorData()
+                    {
+                        PropertyName = MessageQuerySetModelPropertyProperty,
+                        PropertyType = typeof(ModelProperty),
+                        PropertyGetter = (instance) => (((CorrelationInitializerEntry)instance).GetMessageQuerySetModelProperty()),
+                    },
+                };
+            }
+            #endregion
+
+
+            public CorrelationInitializerEntry()
+            {
+                throw FxTrace.Exception.AsError(new NotSupportedException());
+            }
+
+            public CorrelationInitializerEntry(ModelItem initializer) : base(initializer)
+            {
+            }
+
+            protected override string AutomationId
+            {
+                get { return ((ModelItemCollection)this.ReflectedObject.Parent).IndexOf(this.ReflectedObject).ToString(CultureInfo.InvariantCulture); }
+            }
+
+            internal object GetHandle()
+            {
+                return this.ReflectedObject.Properties[HandleProperty].ComputedValue;
+            }
+
+            void SetHandle(object value)
+            {
+                InArgument handle = (InArgument)(value is ModelItem ? ((ModelItem)value).GetCurrentValue() : value);
+                this.ReflectedObject.Properties[HandleProperty].SetValue(handle);
+            }
+
+            internal Type GetCorrelationType()
+            {
+                return this.ReflectedObject.ItemType;
+            }
+
+            void SetCorrelationType(object value)
+            {
+                Type type = (Type)(value is ModelItem ? ((ModelItem)value).GetCurrentValue() : value);
+                var source = (ModelItemCollection)this.ReflectedObject.Parent;
+                int index = source.IndexOf(this.ReflectedObject);
+                var oldInitalizer = (CorrelationInitializer)this.ReflectedObject.GetCurrentValue();
+                var newInitializer = (CorrelationInitializer)Activator.CreateInstance(type);
+                newInitializer.CorrelationHandle = oldInitalizer.CorrelationHandle;
+                this.Dispose();
+                source.RemoveAt(index);
+                this.Initialize(source.Insert(index, newInitializer));
+                this.RaisePropertyChangedEvent(MessageQuerySetModelPropertyProperty);
+            }
+
+            bool ValidateCorrelationType(object value, List<string> errors)
+            {
+                Type type = (Type)(value is ModelItem ? ((ModelItem)value).GetCurrentValue() : value);
+                var activity = this.ReflectedObject.Parent.Parent;
+                if (typeof(QueryCorrelationInitializer).IsAssignableFrom(type) && !CorrelationInitializerDesigner.CanUseQueryCorrelationInitializer(activity))
+                {
+                    errors.Add(System.Activities.Core.Presentation.SR.CorrelationInitializerNotSupported);
+                }
+                return 0 == errors.Count;
+            }
+
+            internal ModelProperty GetMessageQuerySetModelProperty()
+            {
+                return this.ReflectedObject.Properties[MessageQuerySetModelPropertyProperty];
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerValueEditor.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerValueEditor.cs
new file mode 100644 (file)
index 0000000..186fff2
--- /dev/null
@@ -0,0 +1,85 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.View;
+    using System.Runtime;
+    using System.Windows;
+
+    sealed class CorrelationInitializerValueEditor : DialogPropertyValueEditor
+    {
+        public CorrelationInitializerValueEditor()
+        {
+            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("CorrelationInitializer_InlineTemplate");
+        }
+
+        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
+        {
+            ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = new ModelPropertyEntryToOwnerActivityConverter();
+
+            ModelItem modelItem = (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
+            EditingContext context = modelItem.GetEditingContext();
+
+            this.ShowDialog(modelItem, context);
+        }
+
+        public void ShowDialog(ModelItem modelItem, EditingContext context)
+        {
+            Fx.Assert(modelItem != null, "Activity model item shouldn't be null!");
+            Fx.Assert(context != null, "EditingContext shouldn't be null!");
+
+
+            string bookmarkTitle = (string)this.InlineEditorTemplate.Resources["bookmarkTitle"];
+
+            UndoEngine undoEngine = context.Services.GetService<UndoEngine>();
+            Fx.Assert(null != undoEngine, "UndoEngine should be available");
+
+            using (ModelEditingScope editingScope = modelItem.BeginEdit(bookmarkTitle, shouldApplyChangesImmediately: true))
+            {
+                if ((new EditorWindow(modelItem, context)).ShowOkCancel())
+                {
+                    editingScope.Complete();
+                }
+                else
+                {
+                    editingScope.Revert();
+                }
+            }
+        }
+
+        sealed class EditorWindow : WorkflowElementDialog
+        {
+            public EditorWindow(ModelItem activity, EditingContext context)
+            {
+                this.ModelItem = activity;
+                this.Context = context;
+                this.Owner = activity.View;
+                this.EnableMaximizeButton = false;
+                this.EnableMinimizeButton = false;
+                this.MinWidth = 450;
+                this.MinHeight = 250; 
+                this.WindowResizeMode = ResizeMode.CanResize;
+                this.WindowSizeToContent = SizeToContent.Manual;
+                var content = new CorrelationInitializerDesigner() { Activity = activity };
+                this.Title = (string)content.Resources["controlTitle"];
+                this.Content = content;
+                this.HelpKeyword = HelpKeywords.AddCorrelationInitializersDialog;
+            }
+
+            protected override void OnWorkflowElementDialogClosed(bool? dialogResult)
+            {
+                if (dialogResult.HasValue && dialogResult.Value)
+                {
+                    ((CorrelationInitializerDesigner)this.Content).CleanupObjectMap();
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationScopeDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationScopeDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..f761166
--- /dev/null
@@ -0,0 +1,26 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System;
+    using System.Activities.Presentation.Metadata;
+    using System.ComponentModel;
+    using System.Activities.Presentation;
+
+    partial class CorrelationScopeDesigner 
+    {
+        public CorrelationScopeDesigner()
+        {
+            InitializeComponent();
+        }
+
+        internal static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(CorrelationScope);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CorrelationScopeDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/EndpointDesigner.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/EndpointDesigner.cs
new file mode 100644 (file)
index 0000000..d961618
--- /dev/null
@@ -0,0 +1,32 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System;
+    using System.ComponentModel;
+    using System.ServiceModel;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.PropertyEditing;
+
+    sealed class EndpointDesigner
+    {
+        internal static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type endpointType = typeof(Endpoint);
+
+            var browsableAttribute = new BrowsableAttribute(false);
+            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("BehaviorConfigurationName"), browsableAttribute);
+            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Headers"), browsableAttribute);
+            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Identity"), browsableAttribute);
+            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Name"), browsableAttribute);
+            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("ListenUri"), browsableAttribute);
+            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("ServiceContractName"), browsableAttribute);
+
+            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Binding"),
+                PropertyValueEditor.CreateEditorAttribute(typeof(BindingPropertyValueEditor)));
+        }
+
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/ReceiveAndSendReplyFactory.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/ReceiveAndSendReplyFactory.cs
new file mode 100644 (file)
index 0000000..ffb611f
--- /dev/null
@@ -0,0 +1,61 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation.Factories
+{
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Activities.Statements;
+    using System.ServiceModel.Activities;
+    using System.Windows;
+    using System.Xml.Linq;
+    using Microsoft.VisualBasic.Activities;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.Services;
+    using System.Activities.Expressions;
+
+    public sealed class ReceiveAndSendReplyFactory : IActivityTemplateFactory
+    {
+        const string correlationHandleNamePrefix = "__handle";
+        static string requiredAssemblyName = typeof(CorrelationHandle).Assembly.GetName().Name;
+        static string requiredNamespace = typeof(CorrelationHandle).Namespace;
+
+        public Activity Create(DependencyObject target)
+        {            
+            string correlationHandleName = ActivityDesignerHelper.GenerateUniqueVariableNameForContext(target, correlationHandleNamePrefix);
+
+            Variable<CorrelationHandle> requestReplyCorrelation = new Variable<CorrelationHandle> { Name = correlationHandleName };
+
+            Receive receive = new Receive
+            {
+                OperationName = "Operation1",
+                ServiceContractName = XName.Get("IService", "http://tempuri.org/"),
+                CorrelationInitializers =
+                {
+                    new RequestReplyCorrelationInitializer
+                    {
+                        CorrelationHandle = new VariableValue<CorrelationHandle> { Variable = requestReplyCorrelation }
+                    }
+                }
+            };
+
+
+            Sequence sequence = new Sequence()
+            {
+                Variables = { requestReplyCorrelation },
+                Activities =
+                {
+                    receive,
+                    new SendReply
+                    {    
+                        DisplayName = "SendReplyToReceive",
+                        Request = receive,
+                    },
+                }
+            };
+
+            return sequence;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/SendAndReceiveReplyFactory.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/SendAndReceiveReplyFactory.cs
new file mode 100644 (file)
index 0000000..f899fba
--- /dev/null
@@ -0,0 +1,59 @@
+//------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation.Factories
+{
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Activities.Statements;
+    using System.ServiceModel.Activities;
+    using System.Windows;
+    using System.Xml.Linq;
+    using Microsoft.VisualBasic.Activities;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.Services;
+    using System.Activities.Expressions;
+
+    public sealed class SendAndReceiveReplyFactory : IActivityTemplateFactory
+    {
+        const string correlationHandleNamePrefix = "__handle";
+        static string requiredAssemblyName = typeof(CorrelationHandle).Assembly.GetName().Name;
+        static string requiredNamespace = typeof(CorrelationHandle).Namespace;
+
+        public Activity Create(DependencyObject target)
+        {
+            string correlationHandleName = ActivityDesignerHelper.GenerateUniqueVariableNameForContext(target, correlationHandleNamePrefix);
+
+            Variable<CorrelationHandle> requestReplyCorrelation = new Variable<CorrelationHandle> { Name = correlationHandleName };
+           
+            Send send = new Send
+            {
+                OperationName = "Operation1",
+                ServiceContractName = XName.Get("IService", "http://tempuri.org/"),
+                CorrelationInitializers =
+                {
+                    new RequestReplyCorrelationInitializer
+                    {
+                        CorrelationHandle = new VariableValue<CorrelationHandle> { Variable = requestReplyCorrelation }
+                    }
+                }
+            };
+
+            Sequence sequence = new Sequence()
+            {
+                Variables = { requestReplyCorrelation },
+                Activities =
+                {
+                    send,
+                    new ReceiveReply
+                    {      
+                        DisplayName = "ReceiveReplyForSend",
+                        Request = send,
+                    },
+                }
+            };
+            return sequence;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/InitializeCorrelationDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/InitializeCorrelationDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..e92af45
--- /dev/null
@@ -0,0 +1,147 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System;
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.View;
+    using System.ComponentModel;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Runtime;
+    using System.Windows;
+    using System.Collections.ObjectModel;
+
+    partial class InitializeCorrelationDesigner 
+    {
+        public const string CorrelationPropertyName = "Correlation";
+        public const string CorrelationDataPropertyName = "CorrelationData";
+
+        public InitializeCorrelationDesigner()
+        {
+            InitializeComponent();            
+        }
+
+        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline,
+            Justification = "PropertyValueEditors association needs to be done in the static constructor.")]
+        static InitializeCorrelationDesigner()
+        {
+            Type type = typeof(InitializeCorrelation);
+            AttributeTableBuilder builder = new AttributeTableBuilder();
+
+            builder.AddCustomAttributes(type, type.GetProperty("Correlation"),
+                new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingCorrelatesWithHint")));
+
+            builder.AddCustomAttributes(type, type.GetProperty("CorrelationData"),
+                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationDataValueEditor)),
+                new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingCorrelationDataHint")));
+
+            builder.AddCustomAttributes(type, "CorrelationData", BrowsableAttribute.Yes);
+            MetadataStore.AddAttributeTable(builder.CreateTable());
+        }
+
+        void OnEditCorrelationData(object sender, RoutedEventArgs e)
+        {
+            var dlg = new CorrelationDataValueEditor();
+            dlg.ShowDialog(this.ModelItem, this.ModelItem.GetEditingContext());
+            this.UpdateButton();
+        }
+
+        protected override void OnReadOnlyChanged(bool isReadOnly)
+        {
+            this.btnCorrelationData.IsEnabled = !isReadOnly;
+            base.OnReadOnlyChanged(isReadOnly);
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            base.OnModelItemChanged(newItem);
+            this.UpdateButton();
+        }
+
+        void UpdateButton()
+        {
+            this.btnCorrelationData.Content =
+                this.ModelItem.Properties[CorrelationDataPropertyName].IsSet ? this.FindResource("viewTitle") : this.FindResource("defineTitle");
+        }
+
+        internal sealed class CorrelationDataValueEditor : DialogPropertyValueEditor
+        {
+            public CorrelationDataValueEditor()
+            {
+                this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("CorrelationDataValueEditor_InlineTemplate");
+            }
+
+            public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
+            {
+                ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = new ModelPropertyEntryToOwnerActivityConverter();
+
+                ModelItem modelItem = (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
+                EditingContext context = modelItem.GetEditingContext();
+
+                this.ShowDialog(modelItem, context);
+            }
+
+            public void ShowDialog(ModelItem modelItem, EditingContext context)
+            {
+                Fx.Assert(modelItem != null, "Activity model item shouldn't be null!");
+                Fx.Assert(context != null, "EditingContext shouldn't be null!");
+                
+                new EditorWindow(modelItem, modelItem.Properties[CorrelationPropertyName].Value, this.GetCorrelationDataWrapperCollection(modelItem), context).ShowOkCancel();
+            }
+
+            ObservableCollection<CorrelationDataWrapper> GetCorrelationDataWrapperCollection(ModelItem modelItem)
+            {
+                ObservableCollection<CorrelationDataWrapper> wrapperCollection = null;
+                if (modelItem.ItemType == typeof(InitializeCorrelation))
+                {
+                    wrapperCollection = new ObservableCollection<CorrelationDataWrapper>();
+                    foreach (ModelItem entry in modelItem.Properties[CorrelationDataPropertyName].Dictionary.Properties["ItemsCollection"].Collection)
+                    { 
+                        wrapperCollection.Add(new CorrelationDataWrapper((string)entry.Properties["Key"].ComputedValue, entry.Properties["Value"].Value));
+                    }
+                }
+                return wrapperCollection;
+            }
+
+            sealed class EditorWindow : WorkflowElementDialog
+            {
+                public EditorWindow(ModelItem activity, ModelItem correlationHandler, ObservableCollection<CorrelationDataWrapper> correlationData, EditingContext context)
+                {
+                    this.ModelItem = activity;
+                    this.Context = context;
+                    this.Owner = activity.View;
+                    this.MinHeight = 250;
+                    this.MinWidth = 450;
+                    this.EnableMaximizeButton = false;
+                    this.EnableMinimizeButton = false;
+                    this.WindowResizeMode = ResizeMode.CanResize;
+                    this.WindowSizeToContent = SizeToContent.Manual;
+                    var content = new CorrelationDataDesigner() 
+                    { 
+                        Activity = activity,
+                        CorrelationHandle = correlationHandler,
+                        CorrelationInitializeData = correlationData
+                    };
+                    this.Title = (string)content.Resources["controlTitle"];
+                    this.Content = content;
+                    this.HelpKeyword = HelpKeywords.InitializeCorrelationDialog;
+                }
+
+                protected override void OnWorkflowElementDialogClosed(bool? dialogResult)
+                {
+                    if ((dialogResult.HasValue) && (dialogResult.Value))
+                    {
+                        (this.Content as CorrelationDataDesigner).CommitEdit();
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQueryEditor.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQueryEditor.xaml.cs
new file mode 100644 (file)
index 0000000..d1b5161
--- /dev/null
@@ -0,0 +1,249 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities.Presentation.Model;
+    using System.Activities.Core.Presentation;
+    using System.Collections.Generic;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Reflection;
+    using System.Runtime.Serialization;
+    using System.ServiceModel;
+    using System.ServiceModel.Dispatcher;
+    using System.Text;
+    using System.Windows;
+    using System.Windows.Controls;
+    using System.Windows.Input;
+    using System.Xml;
+    using System.Xml.Linq;
+    using System.ServiceModel.Description;
+    using System.Runtime;
+
+    partial class MessageQueryEditor
+    {
+        public static readonly DependencyProperty TypeCollectionProperty = DependencyProperty.Register(
+            "TypeCollection",
+            typeof(IList<KeyValuePair<string, Type>>), 
+            typeof(MessageQueryEditor), 
+            new UIPropertyMetadata(null, OnTypeCollectionChanged));
+
+        static readonly DependencyPropertyKey QueryPropertyKey = DependencyProperty.RegisterReadOnly(
+            "Query",
+            typeof(XPathMessageQuery),
+            typeof(MessageQueryEditor),
+            new UIPropertyMetadata(null));
+
+        static readonly DependencyProperty ActivityProperty = DependencyProperty.Register(
+            "Activity",
+            typeof(ModelItem),
+            typeof(MessageQueryEditor),
+            new UIPropertyMetadata(null));
+
+        public static readonly DependencyProperty QueryProperty = QueryPropertyKey.DependencyProperty;
+
+        public static readonly RoutedEvent XPathCreatedEvent = EventManager.RegisterRoutedEvent(
+            "XPathCreated", 
+            RoutingStrategy.Bubble, 
+            typeof(RoutedEventHandler), 
+            typeof(MessageQueryEditor));
+      
+        public MessageQueryEditor()
+        {
+            InitializeComponent();
+        }
+
+        //a collection of name and type (argument name + argument type) to expand
+        public IList<KeyValuePair<string, Type>> TypeCollection
+        {
+            get { return (IList<KeyValuePair<string, Type>>)GetValue(TypeCollectionProperty); }
+            set { SetValue(TypeCollectionProperty, value); }
+        }
+
+        public XPathMessageQuery Query
+        {
+            get { return (XPathMessageQuery)GetValue(QueryProperty); }
+            private set { SetValue(QueryPropertyKey, value); }
+        }
+
+        internal ModelItem Activity
+        {
+            get { return (ModelItem)GetValue(ActivityProperty); }
+            set { SetValue(ActivityProperty, value); }
+        }
+
+        //event raised whenever user creates a xpath
+        public event RoutedEventHandler XPathCreated
+        {
+            add { this.AddHandler(XPathCreatedEvent, value); }
+            remove { this.RemoveHandler(XPathCreatedEvent, value); }
+        }
+
+        //override default combo box item with my own implementation and style
+        protected override DependencyObject GetContainerForItemOverride()
+        {
+            return new MessageQueryComboBoxItem() { Style = (Style)this.FindResource("comboBoxStyle") };
+        }
+
+        protected override void OnKeyDown(KeyEventArgs e)
+        {
+            if (e.Key == Key.Enter && Keyboard.Modifiers == ModifierKeys.None)
+            {
+                e.Handled = true;
+                if (!this.IsDropDownOpen && !string.IsNullOrEmpty(this.Text))
+                {
+                    this.Query = new XPathMessageQuery(this.Text);
+                    this.RaiseEvent(new RoutedEventArgs(XPathCreatedEvent, this));
+                }
+            }
+            base.OnKeyDown(e);
+        }
+
+        //user double clicked on the expanded type, create a xpath
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes",
+            Justification = "Propagating exceptions might lead to VS crash.")]
+        [SuppressMessage("Reliability", "Reliability108:IsFatalRule",
+            Justification = "Propagating exceptions might lead to VS crash.")]
+        void OnTypeSelectionChanged(object sender, RoutedEventArgs e)
+        {
+            var contentCorrelationDesigner = (ContentCorrelationTypeExpander)sender;
+            //is selection valid (valid type or property)
+            if (contentCorrelationDesigner.IsSelectionValid)
+            {
+                var path = contentCorrelationDesigner.GetMemberPath();
+                var type = contentCorrelationDesigner.GetSelectedType();
+                try
+                {
+                    XmlNamespaceManager namespaceManager = null;
+                    string xpathQuery = string.Empty;
+                    var content = this.Activity.Properties["Content"].Value;
+                    if (content.IsAssignableFrom<ReceiveMessageContent>() || content.IsAssignableFrom<SendMessageContent>())
+                    {
+                        //generating xpath for message content
+                        xpathQuery = XPathQueryGenerator.CreateFromDataContractSerializer(type, path, out namespaceManager);
+                    }
+                    else
+                    {
+                        //generating xpath for parameter content
+                        XName serviceContractName = null;
+                        string operationName = null;
+                        string parameterName = contentCorrelationDesigner.SelectedTypeEntry.Name;
+                        bool isReply = this.Activity.IsAssignableFrom<SendReply>() || this.Activity.IsAssignableFrom<ReceiveReply>();
+                        if (isReply)
+                        {
+                            operationName = (string)this.Activity.Properties["Request"].Value.Properties["OperationName"].ComputedValue;
+                            serviceContractName = (XName)this.Activity.Properties["Request"].Value.Properties["ServiceContractName"].ComputedValue;
+
+                            if (string.IsNullOrEmpty(operationName) || null == serviceContractName)
+                            {
+                                ModelItem requestDisplayName;
+                                this.Activity.TryGetPropertyValue(out requestDisplayName, "Request", "DisplayName");
+                                throw FxTrace.Exception.AsError(new InvalidOperationException(
+                                        string.Format(CultureInfo.CurrentUICulture, (string)this.FindResource("parametersRequiredText"), requestDisplayName.GetCurrentValue())));
+                            }
+                        }
+                        else
+                        {
+                            operationName = (string)this.Activity.Properties["OperationName"].ComputedValue;
+                            serviceContractName = (XName)this.Activity.Properties["ServiceContractName"].ComputedValue;
+
+                            if (string.IsNullOrEmpty(operationName) || null == serviceContractName)
+                            {
+                                throw FxTrace.Exception.AsError(new InvalidOperationException(
+                                        string.Format(CultureInfo.CurrentUICulture, (string)this.FindResource("parametersRequiredText"), this.Activity.Properties["DisplayName"].ComputedValue)));
+                            }
+                        }
+                        xpathQuery = ParameterXPathQueryGenerator.CreateFromDataContractSerializer(serviceContractName, operationName, parameterName, isReply, type, path, out namespaceManager);
+                    }
+                    //use CDF api to build a xpath out of type and its properties
+                    string xpath = string.Format(CultureInfo.InvariantCulture, "sm:body(){0}", xpathQuery);
+
+                    //get the context
+                    //We need to copy over the namespaces from the manager's table 1 by 1. According to MSDN:
+                    //If you specify an existing name table, any namespaces in the name table are not automatically added to XmlNamespaceManager.
+                    //You must use AddNamespace and RemoveNamespace to add or remove namespaces.
+                    XPathMessageContext messageContext = new XPathMessageContext();
+                    foreach (string prefix in namespaceManager)
+                    {
+                        if (!string.IsNullOrEmpty(prefix) && !messageContext.HasNamespace(prefix) && prefix != "xmlns")
+                        {
+                            messageContext.AddNamespace(prefix, namespaceManager.LookupNamespace(prefix));
+                        }
+                    }
+
+                    var typeEntry = (ExpanderTypeEntry)contentCorrelationDesigner.Tag;
+                    //construct xpath 
+                    XPathMessageQuery query = new XPathMessageQuery(xpath, messageContext);
+                    //store the xpath in the Tag property; this combo's selectedValue is bound to i
+                    typeEntry.Tag = query;
+                    this.SelectedIndex = 0;
+                    this.IsDropDownOpen = false;
+                    this.Query = query;
+                    this.RaiseEvent(new RoutedEventArgs(XPathCreatedEvent, this));
+                }
+                catch (Exception err)
+                {
+                    MessageBox.Show(
+                        err.Message,
+                        (string)this.Resources["controlTitle"],
+                        MessageBoxButton.OK, MessageBoxImage.Error);
+                }
+            }
+        }
+
+        void OnTypeCollectionChanged()
+        {
+            //user provided a list of types to expand
+            var items = new List<ExpanderTypeEntry>();
+            if (null != this.TypeCollection)
+            {
+                StringBuilder text = new StringBuilder((string)this.FindResource("selectedDisplayText"));
+                bool addComma = false;
+                //copy all of then into ExpanderTypeEntry
+                foreach (var entry in this.TypeCollection)
+                {
+                    if (addComma)
+                    {
+                        text.Append(", ");
+                    }
+                    items.Add(new ExpanderTypeEntry() { TypeToExpand = entry.Value, Name = entry.Key });
+                    text.Append(entry.Key);
+                    addComma = true;
+                }
+                //requirement of combo box is that data source must be enumerable, so provide one elemnt array 
+                this.ItemsSource = new object[] { new TypeEntryContainer() { Items = items, DisplayText = text.ToString() } };
+            }
+            else
+            {
+                this.ItemsSource = null;
+            }
+        }
+
+        static void OnTypeCollectionChanged(object sender, DependencyPropertyChangedEventArgs e)
+        {
+            ((MessageQueryEditor)sender).OnTypeCollectionChanged();
+        }
+
+        //ComboBox item subclass 
+        sealed class MessageQueryComboBoxItem : ComboBoxItem
+        {
+            public MessageQueryComboBoxItem()
+            {
+                //i don't want it to be focusable - its conent is
+                this.Focusable = false;
+            }
+
+            //do not notify parent ComboBox about mouse down & up events - i don't want to close popup too early
+            //i handle closing myself
+            protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
+            {                
+            }
+            protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
+            {
+            }
+        }
+
+    }
+
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQuerySetDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQuerySetDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..8205196
--- /dev/null
@@ -0,0 +1,341 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Collections.ObjectModel;
+    using System.Collections.Specialized;
+    using System.ComponentModel;
+    using System.Globalization;
+    using System.Linq;
+    using System.Runtime;
+    using System.ServiceModel;
+    using System.Windows;
+
+    partial class MessageQuerySetDesigner : INotifyPropertyChanged
+    {
+        static readonly string key = "key";
+        DataGridHelper messageQueriesDGHelper;
+        string querySetPropertyName = string.Empty;
+        ObservableCollection<MessageQueryEntry> dataSource = new ObservableCollection<MessageQueryEntry>();
+        public event PropertyChangedEventHandler PropertyChanged;
+
+        public static readonly DependencyProperty ActivityProperty = DependencyProperty.Register(
+            "Activity",
+            typeof(ModelItem),
+            typeof(MessageQuerySetDesigner),
+            new UIPropertyMetadata(OnActivityChanged));
+
+        public static readonly DependencyProperty MessageQuerySetContainerProperty = DependencyProperty.Register(
+            "MessageQuerySetContainer",
+            typeof(ModelItem),
+            typeof(MessageQuerySetDesigner),
+            new UIPropertyMetadata(null, OnMessageQuerySetContainerChanged));
+
+        static readonly DependencyPropertyKey IsTypeExpanderEnabledPropertyKey = DependencyProperty.RegisterReadOnly(
+            "IsTypeExpanderEnabled",
+            typeof(bool),
+            typeof(MessageQuerySetDesigner),
+            new UIPropertyMetadata(false));
+
+        public static readonly DependencyProperty IsTypeExpanderEnabledProperty =
+            IsTypeExpanderEnabledPropertyKey.DependencyProperty;
+
+        public MessageQuerySetDesigner()
+        {
+            InitializeComponent();
+        }
+
+        //reference to messaging activity containing given message query set
+        public ModelItem Activity
+        {
+            get { return (ModelItem)GetValue(ActivityProperty); }
+            set { SetValue(ActivityProperty, value); }
+        }
+
+        //reference to model item which contains edited message query set (may be the same as Activty)
+        public ModelItem MessageQuerySetContainer
+        {
+            get { return (ModelItem)GetValue(MessageQuerySetContainerProperty); }
+            set { SetValue(MessageQuerySetContainerProperty, value); }
+        }
+
+        public bool IsTypeExpanderEnabled
+        {
+            get { return (bool)GetValue(IsTypeExpanderEnabledProperty); }
+            private set { SetValue(IsTypeExpanderEnabledPropertyKey, value); }
+        }
+
+        public IList<KeyValuePair<string, Type>> ActivityParameters
+        {
+            get
+            {
+                return null != this.Activity ? this.GetActivityParameters() : null;
+            }
+        }
+
+        protected override void OnInitialized(EventArgs e)
+        {
+            base.OnInitialized(e);
+            //create data grid helper and provide drop down with type expander as new row template
+            this.messageQueriesDGHelper = new DataGridHelper(this.messageQueries, this);
+            this.messageQueriesDGHelper.AddNewRowContent = this.FindResource("newRowTemplate");
+            this.messageQueriesDGHelper.ShowValidationErrorAsToolTip = true;
+            this.messageQueries.ItemsSource = this.dataSource;
+            this.dataSource.CollectionChanged += this.OnDataCollectionChanged;
+        }
+
+        void OnXpathCreated(object sender, RoutedEventArgs e)
+        {
+            //user created a xpath
+            var editor = (MessageQueryEditor)sender;
+            //get its value
+            var query = editor.Query;
+            if (null != query)
+            {
+                //get reference to message query set dictionary
+                var messageQuerySet = this.MessageQuerySetContainer.Properties[this.querySetPropertyName].Dictionary;
+                //create unique key name
+                var name = messageQuerySet.GetUniqueName(key, p => (string)p.GetCurrentValue());
+                //add new entry with created key and query
+                messageQuerySet.Add(name, query);
+                //look for created key value pair
+                var entry = messageQuerySet.First(p => string.Equals(p.Key.GetCurrentValue(), name));
+                //wrap it 
+                var wrapper = new MessageQueryEntry(entry);
+                //and add it to the ui
+                this.messageQueriesDGHelper.Source<IList>().Add(wrapper);
+            }
+            //reset editor, so new query can be created
+            editor.SelectedItem = null;
+        }
+
+        void OnActivityChanged()
+        {
+            if (null != this.PropertyChanged)
+            {
+                this.PropertyChanged(this, new PropertyChangedEventArgs("ActivityParameters"));
+            }
+            this.OnInitialzeView();
+        }
+
+        //method called whenever Activity or MessageQuerySetContainer changes
+        void OnInitialzeView()
+        {
+            //cleanup previous ui binding
+            this.dataSource.Clear();
+
+            //if we have activity and valid message query set container
+            if (null != this.Activity && null != this.MessageQuerySetContainer && !string.IsNullOrEmpty(this.querySetPropertyName))
+            {
+                //check if message query set is initialized
+                if (!this.MessageQuerySetContainer.Properties[this.querySetPropertyName].IsSet)
+                {
+                    //initialize if required
+                    this.MessageQuerySetContainer.Properties[this.querySetPropertyName].SetValue(new MessageQuerySet());
+                }
+                //get reference to message query set
+                var input = this.MessageQuerySetContainer.Properties[this.querySetPropertyName].Dictionary;
+
+                if (null != input)
+                {
+                    //create all model objects into ux collection
+                    foreach (var entry in input)
+                    {
+                        var wrapper = new MessageQueryEntry(entry);
+                        this.dataSource.Add(wrapper);
+                    }
+                    this.IsTypeExpanderEnabled = true;
+                }
+            }
+        }
+
+        void OnDataCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+        {
+            //whenever user removes an entry from ux, reflect that change into underlying model
+            switch (e.Action)
+            {
+                case NotifyCollectionChangedAction.Remove:
+                    var messageQuerySet = this.MessageQuerySetContainer.Properties[this.querySetPropertyName].Dictionary;
+                    foreach (MessageQueryEntry entry in e.OldItems)
+                    {
+                        messageQuerySet.Remove(entry.GetKey());
+                        entry.Dispose();
+                    }
+                    break;
+
+                case NotifyCollectionChangedAction.Reset:
+                    this.IsTypeExpanderEnabled = false;
+                    break;
+            }
+        }
+
+        //helper method - used to pull activity's parameters 
+        IList<KeyValuePair<string, Type>> GetActivityParameters()
+        {
+            var result = new List<KeyValuePair<string, Type>>();
+            //get activity's content
+            var content = this.Activity.Properties["Content"].Value;
+            if (null != content)
+            {
+                //simple scenario - content is just one argument - get its type
+                if ((content.IsAssignableFrom<ReceiveMessageContent>() || content.IsAssignableFrom<SendMessageContent>()) &&
+                    content.Properties["Message"].IsSet)
+                {
+                    ModelItem type = null;
+                    content.TryGetPropertyValue(out type, "Message", "ArgumentType");
+                    result.Add(new KeyValuePair<string, Type>((string)this.FindResource("defaultParameterName"), (Type)type.GetCurrentValue()));
+                }
+                //complex scenario - content is a collection of parameters, for each one get its name and type
+                else if (content.IsAssignableFrom<ReceiveParametersContent>() && content.Properties["Parameters"].IsSet)
+                {
+                    var source = (IDictionary<string, OutArgument>)content.Properties["Parameters"].ComputedValue;
+                    foreach (var entry in source)
+                    {
+                        result.Add(new KeyValuePair<string, Type>(entry.Key, entry.Value.ArgumentType));
+                    }
+                }
+                else if (content.IsAssignableFrom<SendParametersContent>() && content.Properties["Parameters"].IsSet)
+                {
+                    var source = (IDictionary<string, InArgument>)content.Properties["Parameters"].ComputedValue;
+                    foreach (var entry in source)
+                    {
+                        result.Add(new KeyValuePair<string, Type>(entry.Key, entry.Value.ArgumentType));
+                    }
+                }
+            }
+            return result;
+        }
+
+        static void OnActivityChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
+        {
+            var activity = e.NewValue as ModelItem;
+            //throw if activity is not valid messaging activity type
+            if (null != activity && !activity.IsMessagingActivity())
+            {
+                throw FxTrace.Exception.AsError(new NotSupportedException(activity.ItemType.FullName));
+            }
+            ((MessageQuerySetDesigner)sender).OnActivityChanged();
+        }
+
+        static void OnMessageQuerySetContainerChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
+        {
+            var control = (MessageQuerySetDesigner)sender;
+            var container = e.NewValue as ModelItem;
+            //throw if query set container is not derived from correlation initializer or doesn't have required property
+            if (null != container)
+            {
+                var property = container.Properties.FirstOrDefault(p => typeof(MessageQuerySet).IsAssignableFrom(p.PropertyType));
+                if (!container.IsAssignableFrom<CorrelationInitializer>() && null == property)
+                {
+                    throw FxTrace.Exception.AsError(new NotSupportedException(container.ItemType.FullName));
+                }
+                control.querySetPropertyName = null != property ? property.Name : string.Empty;
+            }
+            control.OnInitialzeView();
+        }
+
+        void OnEditingControlLoaded(object sender, RoutedEventArgs args)
+        {
+            DataGridHelper.OnEditingControlLoaded(sender, args);
+        }
+
+        void OnEditingControlUnloaded(object sender, RoutedEventArgs args)
+        {
+            DataGridHelper.OnEditingControlUnloaded(sender, args);
+        }
+
+        internal sealed class MessageQueryEntry : DesignObjectWrapper
+        {
+            internal static string KeyProperty = "Key";
+            internal static string ValueProperty = "Expression";
+
+            string keyValue;
+
+            public MessageQueryEntry()
+            {
+                throw FxTrace.Exception.AsError(new NotSupportedException());
+            }
+
+            public MessageQueryEntry(KeyValuePair<ModelItem, ModelItem> entry)
+                : base(entry.Value)
+            {
+                this.keyValue = (string)entry.Key.GetCurrentValue();
+            }
+
+            #region Initialize type properties code
+            public static PropertyDescriptorData[] InitializeTypeProperties()
+            {
+                return new PropertyDescriptorData[]
+                {
+                    new PropertyDescriptorData()
+                    {
+                         PropertyType = typeof(string),
+                         PropertyName = KeyProperty,
+                         PropertyGetter = (instance) => ( ((MessageQueryEntry)instance).GetKey() ),
+                         PropertyValidator = (instance, value, errors) => (((MessageQueryEntry)instance).ValidateKey(value, errors)),
+                         PropertySetter = (instance, value) => { ((MessageQueryEntry)instance).SetKey(value); },
+                    },
+                    new PropertyDescriptorData()
+                    {
+                        PropertyType = typeof(string),
+                        PropertyName = ValueProperty,
+                        PropertyGetter = (instance) => (((MessageQueryEntry)instance).ReflectedObject.Properties[ValueProperty].ComputedValue),
+                        PropertySetter = (instance, value) => { ((MessageQueryEntry)instance).ReflectedObject.Properties[ValueProperty].SetValue( value ); },
+                    }
+                };
+            }
+            #endregion
+
+            internal string GetKey()
+            {
+                return this.keyValue;
+            }
+
+            void SetKey(object value)
+            {
+                string name = (string)(value is ModelItem ? ((ModelItem)value).GetCurrentValue() : value);
+                name = name.Trim();
+
+                var source = (ModelItemDictionary)this.ReflectedObject.Parent;
+                ModelItem newKeyMI = null;
+                source.SwitchKeys(this.keyValue, name, out newKeyMI);
+                this.keyValue = name;
+            }
+
+            bool ValidateKey(object newValue, List<string> errors)
+            {
+                string name = (string)(newValue is ModelItem ? ((ModelItem)newValue).GetCurrentValue() : newValue);
+                if (null != name)
+                {
+                    name = name.Trim();
+                }
+
+                if (string.IsNullOrEmpty(name))
+                {
+                    errors.Add(System.Activities.Core.Presentation.SR.NullOrEmptyKeyName);
+                }
+                else
+                {
+                    var source = (ModelItemDictionary)this.ReflectedObject.Parent;
+                    if (source.Keys.Any(p => string.Equals(p.GetCurrentValue(), name)))
+                    {
+                        errors.Add(string.Format(CultureInfo.CurrentUICulture, System.Activities.Core.Presentation.SR.DuplicateKeyName, name));
+                    }
+                }
+                return errors.Count == 0;
+            }
+
+            protected override string AutomationId
+            {
+                get { return this.keyValue; }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessagingContentPropertyEditorResources.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessagingContentPropertyEditorResources.xaml.cs
new file mode 100644 (file)
index 0000000..0ab3eba
--- /dev/null
@@ -0,0 +1,32 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Linq;
+    using System.Text;
+    using System.Windows;
+    using System.Runtime;
+
+    class MessagingContentPropertyEditorResources
+    {
+        private static ResourceDictionary resources;
+        internal static ResourceDictionary GetResources()
+        {
+            if (resources == null)
+            {
+                Uri resourceLocator = new Uri(
+                    string.Concat(
+                    typeof(MessagingContentPropertyEditorResources).Assembly.GetName().Name,
+                    @";component/System/ServiceModel/Activities/Presentation/MessagingContentPropertyEditorResources.xaml"),
+                    UriKind.RelativeOrAbsolute);
+                resources = (ResourceDictionary)Application.LoadComponent(resourceLocator);
+            }
+            Fx.Assert(resources != null, "Could not load argument value editor resources.");
+            return resources;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentDialog.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentDialog.xaml.cs
new file mode 100644 (file)
index 0000000..cac5cc7
--- /dev/null
@@ -0,0 +1,62 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Hosting;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Windows;
+    using System.Windows.Input;
+
+    partial class ReceiveContentDialog : WorkflowElementDialog
+    {
+        public static readonly DependencyProperty ViewModelProperty =
+            DependencyProperty.Register("ViewModel", typeof(ContentDialogViewModel<ReceiveMessageContent, ReceiveParametersContent>), typeof(ReceiveContentDialog));
+
+        ReceiveContentDialog()
+        {
+            InitializeComponent();
+        }
+
+        [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors",
+            Justification = "This values must be set before this constructor complete to ensure ShowOkCancel() can consume that immediately")]
+        ReceiveContentDialog(ModelItem activity, EditingContext context, DependencyObject owner)
+            : this()
+        {
+            this.ModelItem = activity;
+            this.Context = context;
+            this.HelpKeyword = HelpKeywords.MessageContentDialog;
+            this.Owner = owner;
+            this.ViewModel = new ContentDialogViewModel<ReceiveMessageContent, ReceiveParametersContent>(this.ModelItem);
+            if (!this.Context.Items.GetValue<ReadOnlyState>().IsReadOnly)
+            {
+                this.OnOk = this.ViewModel.OnOk;
+            }
+        }
+
+        public ContentDialogViewModel<ReceiveMessageContent, ReceiveParametersContent> ViewModel
+        {
+            get { return (ContentDialogViewModel<ReceiveMessageContent, ReceiveParametersContent>)GetValue(ViewModelProperty); }
+            set { SetValue(ViewModelProperty, value); }
+        }
+
+        public static bool ShowDialog(ModelItem activity, EditingContext context, DependencyObject owner)
+        {
+            return new ReceiveContentDialog(activity, context, owner).ShowOkCancel();
+        }
+
+        void OnDynamicArgumentDesignerLoaded(object sender, RoutedEventArgs args)
+        {
+            ((DynamicArgumentDesigner)sender).ParentDialog = this;
+        }
+
+        void OnExpressionTextBoxLoaded(object sender, RoutedEventArgs args)
+        {
+            ((ExpressionTextBox)sender).IsIndependentExpression = true;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentPropertyEditor.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentPropertyEditor.cs
new file mode 100644 (file)
index 0000000..33d3cdc
--- /dev/null
@@ -0,0 +1,26 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Windows;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.View;
+
+    sealed class ReceiveContentPropertyEditor : DialogPropertyValueEditor
+    {
+        public ReceiveContentPropertyEditor()
+        {
+            this.InlineEditorTemplate = (DataTemplate)MessagingContentPropertyEditorResources.GetResources()["ReceiveContentPresenter_InlineEditorTemplate"];
+        }
+
+        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
+        {
+            ModelPropertyEntryToModelItemConverter converter = new ModelPropertyEntryToModelItemConverter();
+            ModelPropertyEntryToModelItemConverter.Container container = (ModelPropertyEntryToModelItemConverter.Container)converter.Convert(propertyValue, null, null, null);
+            ReceiveContentDialog.ShowDialog(container.ModelItem, container.Context, container.WorkflowViewElement);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..b5fafb4
--- /dev/null
@@ -0,0 +1,246 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using Microsoft.VisualBasic.Activities;
+    using System;
+    using System.Activities;
+    using System.Activities.Statements;
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Core.Presentation;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Reflection;
+    using System.Windows;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Runtime;
+    using System.Activities.Presentation.Services;
+    using System.Activities.Expressions;
+
+    partial class ReceiveDesigner
+    {
+        const string CorrelationsCategoryLabelKey = "correlationsCategoryLabel";
+        const string MiscellaneousCategoryLabelKey = "miscellaneousCategoryLabel";
+        const string AdvancedCategoryLabelKey = "advancedCategoryLabel";
+        static string CorrelationHandleTypeNamespace = typeof(CorrelationHandle).Namespace;
+        static string Message;
+        static string Action;
+        static string DeclaredMessageType;
+
+        public static readonly RoutedCommand CreateSendReplyCommand = new RoutedCommand("CreateSendReply", typeof(ReceiveDesigner));
+
+        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline,
+            Justification = "PropertyValueEditors association needs to be done in the static constructor.")]
+        static ReceiveDesigner()
+        {
+            AttributeTableBuilder builder = new AttributeTableBuilder();
+            Type receiveType = typeof(Receive);
+
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelationInitializers"), PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
+
+            var categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(CorrelationsCategoryLabelKey));
+            var descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingCorrelatesWithHint", "<Correlation handle>"));
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelatesWith"), categoryAttribute, descriptionAttribute);
+
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelatesOn"), categoryAttribute, BrowsableAttribute.Yes,
+                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelatesOnValueEditor)));
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelationInitializers"), categoryAttribute, BrowsableAttribute.Yes,
+                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
+
+            categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(MiscellaneousCategoryLabelKey));
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("DisplayName"), categoryAttribute);
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("OperationName"), categoryAttribute);
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("ServiceContractName"), categoryAttribute, new TypeConverterAttribute(typeof(XNameConverter)));
+            descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingValueHint", "<Value to bind>"));
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("Content"), categoryAttribute, descriptionAttribute, PropertyValueEditor.CreateEditorAttribute(typeof(ReceiveContentPropertyEditor)));
+
+            var advancedAttribute = new EditorBrowsableAttribute(EditorBrowsableState.Advanced);
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("Action"), advancedAttribute, categoryAttribute);
+            builder.AddCustomAttributes(
+                receiveType,
+                "KnownTypes",
+                advancedAttribute,
+                categoryAttribute,
+                PropertyValueEditor.CreateEditorAttribute(typeof(TypeCollectionPropertyEditor)),
+                new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.AllowDuplicate, Value = false });
+
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("ProtectionLevel"), advancedAttribute, categoryAttribute);
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("SerializerOption"), advancedAttribute, categoryAttribute);
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CanCreateInstance"), advancedAttribute, categoryAttribute);
+
+            Action = receiveType.GetProperty("Action").Name;
+
+            Type receiveMessageContentType = typeof(ReceiveMessageContent);
+            Message = receiveMessageContentType.GetProperty("Message").Name;
+            DeclaredMessageType = receiveMessageContentType.GetProperty("DeclaredMessageType").Name;
+            MetadataStore.AddAttributeTable(builder.CreateTable());
+
+            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) => new ArgumentAccessor[]
+            {
+                new ArgumentAccessor
+                {
+                    Getter = (ownerActivity) =>
+                    {
+                        Receive receive = (Receive)ownerActivity;
+                        ReceiveMessageContent content = receive.Content as ReceiveMessageContent;
+                        return content != null ? content.Message : null;
+                    },
+                    Setter = (ownerActivity, arg) =>
+                    {
+                        Receive receive = (Receive)ownerActivity;
+                        ReceiveMessageContent content = receive.Content as ReceiveMessageContent;
+                        if (content != null)
+                        {
+                            content.Message = arg as OutArgument;
+                        }
+                    },
+                },
+            };
+            ActivityArgumentHelper.RegisterAccessorsGenerator(receiveType, argumentAccessorGenerator);
+        }
+
+        public ReceiveDesigner()
+        {
+            InitializeComponent();
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            base.OnModelItemChanged(newItem);
+            if (null != this.ModelItem)
+            {
+                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
+            }
+        }
+
+        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (string.Equals(e.PropertyName, Message))
+            {
+                ReceiveMessageContent messageContent = ((Receive)this.ModelItem.GetCurrentValue()).Content as ReceiveMessageContent;
+                this.ModelItem.Properties[DeclaredMessageType].SetValue(null == messageContent ? null : messageContent.Message.ArgumentType);
+            }
+        }
+
+        protected override void OnReadOnlyChanged(bool isReadOnly)
+        {
+            this.txtOperationName.IsReadOnly = isReadOnly;
+        }
+
+        void OnCreateSendReplyExecute(object sender, ExecutedRoutedEventArgs e)
+        {
+            ModelItem container;
+            ModelItem flowStepContainer;
+
+            using (ModelEditingScope scope = this.ModelItem.BeginEdit((string)this.FindResource("createSendReplyDescription")))
+            {                    
+                //special case handling for Sequence
+                if (this.ModelItem.IsItemInSequence(out container))
+                {
+                    //get activities collection
+                    ModelItemCollection activities = container.Properties["Activities"].Collection;
+                    //get index of Send within collection and increment by one
+                    int index = activities.IndexOf(this.ModelItem) + 1;
+                    //insert created reply just after the Receive
+                    activities.Insert(index, ReceiveDesigner.CreateSendReply(container, this.ModelItem));                 
+                }
+                //special case handling for Flowchart
+                else if (this.ModelItem.IsItemInFlowchart(out container, out flowStepContainer))
+                {
+                    Activity replyActivity = ReceiveDesigner.CreateSendReply(container, this.ModelItem);
+                    FlowchartDesigner.DropActivityBelow(this.ViewStateService, this.ModelItem, replyActivity, 30);
+                }
+                else
+                {
+                    ErrorReporting.ShowAlertMessage(string.Format(CultureInfo.CurrentUICulture, System.Activities.Core.Presentation.SR.CannotPasteSendReplyOrReceiveReply, typeof(SendReply).Name));
+                }
+                scope.Complete();
+            }
+            //always copy reply to clipboard
+            Func<ModelItem, object, object> callback = CreateSendReply;
+            CutCopyPasteHelper.PutCallbackOnClipBoard(callback, typeof(SendReply), this.ModelItem);
+            e.Handled = true;
+        }
+
+        static SendReply CreateSendReply(ModelItem target, object context)
+        {
+            SendReply reply = null;
+            ModelItem receive = (ModelItem)context;
+            if (null != receive)
+            {
+                Receive receiveInstance = (Receive)receive.GetCurrentValue();
+                string name = null;
+                //if no correlation is set - create one
+                if (null == receiveInstance.CorrelatesWith)
+                {
+                    Variable handleVariable = null;
+                    //first, look for nearest variable scope 
+                    ModelItemCollection variableScope = VariableHelper.FindRootVariableScope(receive).GetVariableCollection();
+                    if (null != variableScope)
+                    {
+                        ModelItemCollection correlations = receive.Properties["CorrelationInitializers"].Collection;
+                        bool hasRequestReplyHandle = false;
+                        foreach (ModelItem item in correlations)
+                        {
+                            if (item.ItemType.IsAssignableFrom(typeof(RequestReplyCorrelationInitializer)))
+                            {
+                                hasRequestReplyHandle = true;
+                                break;
+                            }
+                        }
+
+                        if (!hasRequestReplyHandle)
+                        {
+                            //create unique variable name
+                            name = variableScope.CreateUniqueVariableName("__handle", 1);
+                            //create variable
+                            handleVariable = Variable.Create(name, typeof(CorrelationHandle), VariableModifiers.None);
+                            //add it to the scope
+                            variableScope.Add(handleVariable);
+                            //setup correlation
+                            ImportDesigner.AddImport(CorrelationHandleTypeNamespace, receive.GetEditingContext());
+                            VariableValue<CorrelationHandle> expression = new VariableValue<CorrelationHandle> { Variable = handleVariable };
+                            InArgument<CorrelationHandle> handle = new InArgument<CorrelationHandle>(expression);
+                            correlations.Add(new RequestReplyCorrelationInitializer { CorrelationHandle = handle });
+                        }
+                    }
+                }
+
+                reply = new SendReply()
+                {
+                    DisplayName = string.Format(CultureInfo.CurrentUICulture, "SendReplyTo{0}", receive.Properties["DisplayName"].ComputedValue),
+                    Request = (Receive)receive.GetCurrentValue(),
+                };
+            }
+            else
+            {
+                MessageBox.Show(
+                    (string)StringResourceDictionary.Instance["receiveActivityCreateReplyErrorLabel"] ?? "Source 'Reply' element not found!",
+                    (string)StringResourceDictionary.Instance["MessagingActivityTitle"] ?? "Send",
+                    MessageBoxButton.OK, MessageBoxImage.Error);
+            }
+            return reply;
+        }
+
+        void OnDefineButtonClicked(object sender, RoutedEventArgs args)
+        {
+            using (EditingScope scope = this.Context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(StringResourceDictionary.Instance.GetString("editReceiveContent"), true))
+            {
+                if (ReceiveContentDialog.ShowDialog(this.ModelItem, this.Context, this))
+                {
+                    scope.Complete();
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..0ff2023
--- /dev/null
@@ -0,0 +1,124 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System;
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Input;
+    using System.Activities;
+
+
+    partial class ReceiveReplyDesigner
+    {
+        const string CorrelationsCategoryLabelKey = "correlationsCategoryLabel";
+        const string EndpointCategoryLabelKey = "endpointCategoryLabel";
+        const string MiscellaneousCategoryLabelKey = "miscellaneousCategoryLabel";
+        const string AdvancedCategoryLabelKey = "advancedCategoryLabel";
+        static string Message;
+        static string Action;
+        static string DeclaredMessageType;
+
+        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline,
+            Justification = "PropertyValueEditors association needs to be done in the static constructor.")]
+        static ReceiveReplyDesigner()
+        {
+            AttributeTableBuilder builder = new AttributeTableBuilder();
+            Type receiveType = typeof(ReceiveReply);
+
+
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelationInitializers"), PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
+
+            var categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(CorrelationsCategoryLabelKey));
+
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelationInitializers"), categoryAttribute, BrowsableAttribute.Yes,
+                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));            
+
+            categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(MiscellaneousCategoryLabelKey));
+
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("DisplayName"), categoryAttribute);
+            var descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingValueHint", "<Value to bind>"));
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("Content"), categoryAttribute, descriptionAttribute, PropertyValueEditor.CreateEditorAttribute(typeof(ReceiveContentPropertyEditor)));
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("Request"),
+                categoryAttribute,
+                PropertyValueEditor.CreateEditorAttribute(typeof(ActivityXRefPropertyEditor)));
+
+            var advancedAttribute = new EditorBrowsableAttribute(EditorBrowsableState.Advanced);
+            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("Action"), advancedAttribute, categoryAttribute);
+
+            Action = receiveType.GetProperty("Action").Name;
+
+            Type receiveMessageContentType = typeof(ReceiveMessageContent);
+            Message = receiveMessageContentType.GetProperty("Message").Name;
+            DeclaredMessageType = receiveMessageContentType.GetProperty("DeclaredMessageType").Name;
+            MetadataStore.AddAttributeTable(builder.CreateTable());
+
+            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) => new ArgumentAccessor[]
+            {
+                new ArgumentAccessor
+                {
+                    Getter = (ownerActivity) =>
+                    {
+                        ReceiveReply receiveReply = (ReceiveReply)ownerActivity;
+                        ReceiveMessageContent content = receiveReply.Content as ReceiveMessageContent;
+                        return content != null ? content.Message : null;
+                    },
+                    Setter = (ownerActivity, arg) =>
+                    {
+                        ReceiveReply receiveReply = (ReceiveReply)ownerActivity;
+                        ReceiveMessageContent content = receiveReply.Content as ReceiveMessageContent;
+                        if (content != null)
+                        {
+                            content.Message = arg as OutArgument;
+                        }
+                    },
+                },
+            };
+            ActivityArgumentHelper.RegisterAccessorsGenerator(receiveType, argumentAccessorGenerator);
+        }
+
+        public ReceiveReplyDesigner()
+        {
+            InitializeComponent();
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            base.OnModelItemChanged(newItem);
+            if (null != this.ModelItem)
+            {
+                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
+            }
+        }
+
+        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (string.Equals(e.PropertyName, Message))
+            {
+                ReceiveMessageContent messageContent = ((ReceiveReply)this.ModelItem.GetCurrentValue()).Content as ReceiveMessageContent;
+                this.ModelItem.Properties[DeclaredMessageType].SetValue(null == messageContent ? null : messageContent.Message.ArgumentType);
+            }
+        }
+
+        void OnDefineButtonClicked(object sender, RoutedEventArgs args)
+        {
+            using (EditingScope scope = this.Context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(StringResourceDictionary.Instance.GetString("editReceiveContent"), true))
+            {
+                if (ReceiveContentDialog.ShowDialog(this.ModelItem, this.Context, this))
+                {
+                    scope.Complete();
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyValidationFeature.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyValidationFeature.cs
new file mode 100644 (file)
index 0000000..578a8b7
--- /dev/null
@@ -0,0 +1,97 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Runtime;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Validation;
+    using System.Activities.Validation;
+    using System.Collections.Generic;
+    using System.Activities;
+    using System.Activities.Statements;
+    using System.Globalization;
+
+    class ReceiveReplyValidationFeature : DesignTimeValidationFeature
+    {
+        List<Constraint> constraints;
+
+        protected override Type ApplyTo
+        {
+            get { return typeof(ReceiveReply); }
+        }
+
+        protected override IList<Constraint> DesignTimeConstraints
+        {
+            get
+            {
+                if (this.constraints == null)
+                {
+                    this.constraints = new List<Constraint> { UnrootedRequestRule() };
+                }
+                return this.constraints;
+            }
+        }
+
+        Constraint UnrootedRequestRule()
+        {
+            DelegateInArgument<ReceiveReply> receiveReply = new DelegateInArgument<ReceiveReply>();
+            DelegateInArgument<ValidationContext> context = new DelegateInArgument<ValidationContext>();
+            DelegateInArgument<Activity> activityInTree = new DelegateInArgument<Activity>();
+            Variable<bool> requestInTree = new Variable<bool> { Default = false };
+
+            return new Constraint<ReceiveReply>
+            {
+                Body = new ActivityAction<ReceiveReply, ValidationContext>
+                {
+                    Argument1 = receiveReply,
+                    Argument2 = context,
+                    Handler = new Sequence
+                    {
+                        Variables = { requestInTree },
+                        Activities =
+                        {
+                            new If
+                            {
+                                Condition = new InArgument<bool>(ctx => receiveReply.Get(ctx).Request != null),
+                                Then = new Sequence
+                                {
+                                    Activities = 
+                                    {
+                                        new ForEach<Activity>
+                                        {
+                                            Values = new GetWorkflowTree
+                                            {
+                                                ValidationContext = context,
+                                            },
+                                            Body = new ActivityAction<Activity>
+                                            {
+                                                Argument = activityInTree,
+                                                Handler = new If
+                                                {
+                                                    Condition = new InArgument<bool>(ctx => activityInTree.Get(ctx) == receiveReply.Get(ctx).Request),
+                                                    Then = new Assign<bool>
+                                                    {
+                                                        To = requestInTree,
+                                                        Value = true,
+                                                    }                                                    
+                                                }
+                                            }
+                                        },                            
+                                        new AssertValidation
+                                        {                                
+                                            Assertion = new InArgument<bool>(ctx => requestInTree.Get(ctx)),
+                                            IsWarning = false,
+                                            Message = new InArgument<string>(ctx => string.Format(CultureInfo.CurrentCulture, System.Activities.Core.Presentation.SR.UnrootedRequestInReceiveReply, receiveReply.Get(ctx).DisplayName))
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            };
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentDialog.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentDialog.xaml.cs
new file mode 100644 (file)
index 0000000..1954b73
--- /dev/null
@@ -0,0 +1,62 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Hosting;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.View;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Windows;
+    using System.Windows.Input;
+
+    partial class SendContentDialog : WorkflowElementDialog
+    {
+        public static readonly DependencyProperty ViewModelProperty =
+            DependencyProperty.Register("ViewModel", typeof(ContentDialogViewModel<SendMessageContent, SendParametersContent>), typeof(SendContentDialog));
+
+        SendContentDialog()
+        {
+            InitializeComponent();
+        }
+
+        [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors",
+            Justification = "This values must be set before this constructor complete to ensure ShowOkCancel() can consume that immediately")]
+        SendContentDialog(ModelItem activity, EditingContext context, DependencyObject owner)
+            : this()
+        {
+            this.ModelItem = activity;
+            this.Context = context;
+            this.HelpKeyword = HelpKeywords.MessageContentDialog;
+            this.Owner = owner;
+            this.ViewModel = new ContentDialogViewModel<SendMessageContent, SendParametersContent>(this.ModelItem);
+            if (!this.Context.Items.GetValue<ReadOnlyState>().IsReadOnly)
+            {
+                this.OnOk = this.ViewModel.OnOk;
+            }
+        }
+
+        public ContentDialogViewModel<SendMessageContent, SendParametersContent> ViewModel
+        {
+            get { return (ContentDialogViewModel<SendMessageContent, SendParametersContent>)GetValue(ViewModelProperty); }
+            set { SetValue(ViewModelProperty, value); }
+        }
+
+        public static bool ShowDialog(ModelItem activity, EditingContext context, DependencyObject owner)
+        {
+            return new SendContentDialog(activity, context, owner).ShowOkCancel();
+        }
+
+        void OnDynamicArgumentDesignerLoaded(object sender, RoutedEventArgs args)
+        {
+            ((DynamicArgumentDesigner)sender).ParentDialog = this;
+        }
+
+        void OnExpressionTextBoxLoaded(object sender, RoutedEventArgs args)
+        {
+            ((ExpressionTextBox)sender).IsIndependentExpression = true;
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentPropertyEditor.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentPropertyEditor.cs
new file mode 100644 (file)
index 0000000..de6c8ed
--- /dev/null
@@ -0,0 +1,26 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Windows;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.Converters;
+    using System.Activities.Presentation.View;
+
+    sealed class SendContentPropertyEditor : DialogPropertyValueEditor
+    {
+        public SendContentPropertyEditor()
+        {
+            this.InlineEditorTemplate = (DataTemplate)MessagingContentPropertyEditorResources.GetResources()["SendContentPresenter_InlineEditorTemplate"];
+        }
+
+        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
+        {
+            ModelPropertyEntryToModelItemConverter converter = new ModelPropertyEntryToModelItemConverter();
+            ModelPropertyEntryToModelItemConverter.Container container = (ModelPropertyEntryToModelItemConverter.Container)converter.Convert(propertyValue, null, null, null);
+            SendContentDialog.ShowDialog(container.ModelItem, container.Context, container.WorkflowViewElement);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..a90e089
--- /dev/null
@@ -0,0 +1,249 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using Microsoft.VisualBasic.Activities;
+    using System;
+    using System.Activities;
+    using System.Activities.Core.Presentation;
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Activities.Presentation.View;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Globalization;
+    using System.Reflection;
+    using System.Windows;
+    using System.Windows.Input;
+    using System.Windows.Media;
+    using System.Runtime;
+    using System.Activities.Presentation.Services;
+    using System.Activities.Expressions;
+
+    partial class SendDesigner
+    {
+        const string CorrelationsCategoryLabelKey = "correlationsCategoryLabel";
+        const string EndpointCategoryLabelKey = "endpointCategoryLabel";
+        const string MiscellaneousCategoryLabelKey = "miscellaneousCategoryLabel";
+        const string AdvancedCategoryLabelKey = "advancedCategoryLabel";
+        static string CorrelationHandleTypeNamespace = typeof(CorrelationHandle).Namespace;
+        static string Message;
+        static string Action;
+        static string DeclaredMessageType;
+
+        public static readonly RoutedCommand CreateReceiveReplyCommand = new RoutedCommand("CreateReceiveReply", typeof(SendDesigner));
+
+        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline,
+            Justification = "PropertyValueEditors association needs to be done in the static constructor.")]
+        static SendDesigner()
+        {
+            AttributeTableBuilder builder = new AttributeTableBuilder();
+            Type sendType = typeof(Send);
+
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("CorrelationInitializers"), PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
+
+            var categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(CorrelationsCategoryLabelKey));
+            var descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingCorrelatesWithHint", "Correlation handle"));
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("CorrelatesWith"), categoryAttribute, descriptionAttribute);
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("CorrelationInitializers"), categoryAttribute, BrowsableAttribute.Yes,
+                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
+
+            categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(EndpointCategoryLabelKey));
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("Endpoint"), categoryAttribute, new TypeConverterAttribute(typeof(ExpandableObjectConverter)));
+            descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingEndpointAddressHint", "<Address>"));
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("EndpointAddress"), categoryAttribute, descriptionAttribute);
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("EndpointConfigurationName"), categoryAttribute);
+
+            categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(MiscellaneousCategoryLabelKey));
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("DisplayName"), categoryAttribute);
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("OperationName"), categoryAttribute);
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("ServiceContractName"), categoryAttribute, new TypeConverterAttribute(typeof(XNameConverter)));
+            descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingValueHint", "<Value to bind>"));
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("Content"), categoryAttribute, descriptionAttribute, PropertyValueEditor.CreateEditorAttribute(typeof(SendContentPropertyEditor)));
+
+            var advancedAttribute = new EditorBrowsableAttribute(EditorBrowsableState.Advanced);
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("Action"), advancedAttribute, categoryAttribute);
+            builder.AddCustomAttributes(
+                sendType,
+                "KnownTypes",
+                advancedAttribute,
+                categoryAttribute,
+                PropertyValueEditor.CreateEditorAttribute(typeof(TypeCollectionPropertyEditor)),
+                new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.AllowDuplicate, Value = false });
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("ProtectionLevel"), advancedAttribute, categoryAttribute);
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("SerializerOption"), advancedAttribute, categoryAttribute);
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("TokenImpersonationLevel"), advancedAttribute, categoryAttribute);
+
+            Action = sendType.GetProperty("Action").Name;
+
+            Type sendMessageContentType = typeof(SendMessageContent);
+            Message = sendMessageContentType.GetProperty("Message").Name;
+            DeclaredMessageType = sendMessageContentType.GetProperty("DeclaredMessageType").Name;
+            MetadataStore.AddAttributeTable(builder.CreateTable());
+
+            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) => new ArgumentAccessor[]
+            {
+                new ArgumentAccessor
+                {
+                    Getter = (ownerActivity) =>
+                    {
+                        Send send = (Send)ownerActivity;
+                        SendMessageContent content = send.Content as SendMessageContent;
+                        return content != null ? content.Message : null;
+                    },
+                    Setter = (ownerActivity, arg) =>
+                    {
+                        Send send = (Send)ownerActivity;
+                        SendMessageContent content = send.Content as SendMessageContent;
+                        if (content != null)
+                        {
+                            content.Message = arg as InArgument;
+                        }
+                    },
+                },
+            };
+            ActivityArgumentHelper.RegisterAccessorsGenerator(sendType, argumentAccessorGenerator);
+        }
+
+        public SendDesigner()
+        {
+            InitializeComponent();
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            base.OnModelItemChanged(newItem);
+            if (null != this.ModelItem)
+            {
+                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
+            }
+        }
+
+        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (string.Equals(e.PropertyName, Message))
+            {
+                SendMessageContent messageContent = ((Send)this.ModelItem.GetCurrentValue()).Content as SendMessageContent;
+                this.ModelItem.Properties[DeclaredMessageType].SetValue(null == messageContent ? null : messageContent.Message.ArgumentType);
+            }
+        }
+
+        protected override void OnReadOnlyChanged(bool isReadOnly)
+        {
+            this.txtOperationName.IsReadOnly = isReadOnly;
+        }
+
+        void OnCreateReceiveReplyExecute(object sender, ExecutedRoutedEventArgs e)
+        {
+            ModelItem container;
+            ModelItem flowStepContainer;
+
+            using (ModelEditingScope scope = this.ModelItem.BeginEdit((string)this.FindResource("createReceiveReplyDescription")))
+            {
+                //special case handling for Sequence
+                if (this.ModelItem.IsItemInSequence(out container))
+                {            
+                    //get activities collection
+                    ModelItemCollection activities = container.Properties["Activities"].Collection;
+                    //get index of Send within collection and increment by one
+                    int index = activities.IndexOf(this.ModelItem) + 1;
+                    //insert created reply just after the Send
+                    activities.Insert(index, SendDesigner.CreateReceiveReply(container, this.ModelItem));                 
+                }
+                //special case handling for Flowchart
+                else if (this.ModelItem.IsItemInFlowchart(out container, out flowStepContainer))
+                {
+                    Activity replyActivity = SendDesigner.CreateReceiveReply(container, this.ModelItem);
+                    FlowchartDesigner.DropActivityBelow(this.ViewStateService, this.ModelItem, replyActivity, 30);
+                }
+                else
+                {
+                    ErrorReporting.ShowAlertMessage(string.Format(CultureInfo.CurrentUICulture, System.Activities.Core.Presentation.SR.CannotPasteSendReplyOrReceiveReply, typeof(ReceiveReply).Name));
+                }
+                scope.Complete();
+            }            
+            //always copy reply to clipboard            
+            Func<ModelItem, object, object> callback = CreateReceiveReply;
+            CutCopyPasteHelper.PutCallbackOnClipBoard(callback, typeof(ReceiveReply), this.ModelItem);
+            e.Handled = true;
+        }
+
+        static ReceiveReply CreateReceiveReply(ModelItem target, object context)
+        {
+            ReceiveReply reply = null;
+            ModelItem send = (ModelItem)context;
+            if (null != send)
+            {
+                Send sendInstance = (Send)send.GetCurrentValue();
+                string name = null;
+                //if no correlation is set - create one
+                if (null == sendInstance.CorrelatesWith)
+                {
+                    Variable handleVariable = null;
+                    //first, look for root variable scope
+                    ModelItemCollection variableScope = VariableHelper.FindRootVariableScope(send).GetVariableCollection();
+                    if (null != variableScope)
+                    {
+                        ModelItemCollection correlations = send.Properties["CorrelationInitializers"].Collection;
+                        bool hasRequestReplyHandle = false;
+                        foreach (ModelItem item in correlations)
+                        {
+                            if (item.ItemType.IsAssignableFrom(typeof(RequestReplyCorrelationInitializer)))
+                            {
+                                hasRequestReplyHandle = true;
+                                break;
+                            }
+                        }
+
+                        if (!hasRequestReplyHandle)
+                        {
+                            //create unique variable name
+                            name = variableScope.CreateUniqueVariableName("__handle", 1);
+                            //create variable
+                            handleVariable = Variable.Create(name, typeof(CorrelationHandle), VariableModifiers.None);
+                            //add it to the scope
+                            variableScope.Add(handleVariable);
+                            //setup correlation
+                            ImportDesigner.AddImport(CorrelationHandleTypeNamespace, send.GetEditingContext());                            
+                            VariableValue<CorrelationHandle> expression = new VariableValue<CorrelationHandle> { Variable = handleVariable };
+                            InArgument<CorrelationHandle> handle = new InArgument<CorrelationHandle>(expression);
+                            correlations.Add(new RequestReplyCorrelationInitializer { CorrelationHandle = handle });
+                        }
+                    }
+                }
+                //create receive reply
+                reply = new ReceiveReply()
+                {
+                    DisplayName = string.Format(CultureInfo.CurrentUICulture, "ReceiveReplyFor{0}", send.Properties["DisplayName"].ComputedValue),
+                    Request = (Send)send.GetCurrentValue(),
+                };
+            }
+            else
+            {
+                MessageBox.Show(
+                    (string)StringResourceDictionary.Instance["sendActivityCreateReplyErrorLabel"] ?? "Source 'Send' element not found!",
+                    (string)StringResourceDictionary.Instance["MessagingActivityTitle"] ?? "Send",
+                    MessageBoxButton.OK, MessageBoxImage.Error);
+            }
+            return reply;
+        }
+
+        void OnDefineButtonClicked(object sender, RoutedEventArgs args)
+        {
+            using (EditingScope scope = this.Context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(StringResourceDictionary.Instance.GetString("editSendContent"), true))
+            {
+                if (SendContentDialog.ShowDialog(this.ModelItem, this.Context, this))
+                {
+                    scope.Complete();
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..449ce20
--- /dev/null
@@ -0,0 +1,123 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System;
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Runtime;
+    using System.Windows;
+    using System.Windows.Input;
+    using System.Activities;
+
+    partial class SendReplyDesigner
+    {
+        const string CorrelationsCategoryLabelKey = "correlationsCategoryLabel";
+        const string EndpointCategoryLabelKey = "endpointCategoryLabel";
+        const string MiscellaneousCategoryLabelKey = "miscellaneousCategoryLabel";
+        const string AdvancedCategoryLabelKey = "advancedCategoryLabel";
+        static string Message;
+        static string Action;
+        static string DeclaredMessageType;
+
+        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline,
+            Justification = "PropertyValueEditors association needs to be done in the static constructor.")]
+        static SendReplyDesigner()
+        {
+            AttributeTableBuilder builder = new AttributeTableBuilder();
+            Type sendType = typeof(SendReply);
+
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("CorrelationInitializers"), PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
+
+            var categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(CorrelationsCategoryLabelKey));
+
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("CorrelationInitializers"), categoryAttribute, BrowsableAttribute.Yes,
+                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
+
+            categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(MiscellaneousCategoryLabelKey));
+
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("DisplayName"), categoryAttribute);
+            var descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingValueHint", "<Value to bind>"));
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("Content"), categoryAttribute, descriptionAttribute, PropertyValueEditor.CreateEditorAttribute(typeof(SendContentPropertyEditor)));
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("Request"),
+                categoryAttribute,
+                PropertyValueEditor.CreateEditorAttribute(typeof(ActivityXRefPropertyEditor)));
+
+            var advancedAttribute = new EditorBrowsableAttribute(EditorBrowsableState.Advanced);
+            builder.AddCustomAttributes(sendType, sendType.GetProperty("Action"), categoryAttribute, advancedAttribute);
+
+            Action = sendType.GetProperty("Action").Name;
+
+            Type sendMessageContentType = typeof(SendMessageContent);
+            Message = sendMessageContentType.GetProperty("Message").Name;
+            DeclaredMessageType = sendMessageContentType.GetProperty("DeclaredMessageType").Name;
+
+            MetadataStore.AddAttributeTable(builder.CreateTable());
+
+            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) => new ArgumentAccessor[]
+            {
+                new ArgumentAccessor
+                {
+                    Getter = (ownerActivity) =>
+                    {
+                        SendReply sendReply = (SendReply)ownerActivity;
+                        SendMessageContent content = sendReply.Content as SendMessageContent;
+                        return content != null ? content.Message : null;
+                    },
+                    Setter = (ownerActivity, arg) =>
+                    {
+                        SendReply sendReply = (SendReply)ownerActivity;
+                        SendMessageContent content = sendReply.Content as SendMessageContent;
+                        if (content != null)
+                        {
+                            content.Message = arg as InArgument;
+                        }
+                    },
+                },
+            };
+            ActivityArgumentHelper.RegisterAccessorsGenerator(sendType, argumentAccessorGenerator);
+        }
+
+        public SendReplyDesigner()
+        {
+            InitializeComponent();
+        }
+
+        protected override void OnModelItemChanged(object newItem)
+        {
+            base.OnModelItemChanged(newItem);
+            if (null != this.ModelItem)
+            {
+                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
+            }
+        }
+
+        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (string.Equals(e.PropertyName, Message))
+            {
+                SendMessageContent messageContent = ((SendReply)this.ModelItem.GetCurrentValue()).Content as SendMessageContent;
+                this.ModelItem.Properties[DeclaredMessageType].SetValue(null == messageContent ? null : messageContent.Message.ArgumentType);
+            }
+        }
+
+        void OnDefineButtonClicked(object sender, RoutedEventArgs args)
+        {
+            using (EditingScope scope = this.Context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(StringResourceDictionary.Instance.GetString("editSendContent"), true))
+            {
+                if (SendContentDialog.ShowDialog(this.ModelItem, this.Context, this))
+                {
+                    scope.Complete();
+                }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyValidationFeature.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyValidationFeature.cs
new file mode 100644 (file)
index 0000000..f217d68
--- /dev/null
@@ -0,0 +1,97 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Runtime;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Validation;
+    using System.Activities.Validation;
+    using System.Collections.Generic;
+    using System.Activities;
+    using System.Activities.Statements;
+    using System.Globalization;
+
+    class SendReplyValidationFeature : DesignTimeValidationFeature
+    {
+        List<Constraint> constraints;
+
+        protected override Type ApplyTo
+        {
+            get { return typeof(SendReply); }
+        }
+
+        protected override IList<Constraint> DesignTimeConstraints
+        {
+            get
+            {
+                if (this.constraints == null)
+                {
+                    this.constraints = new List<Constraint> { UnrootedRequestRule() };
+                }
+                return this.constraints;
+            }
+        }
+
+        Constraint UnrootedRequestRule()
+        {
+            DelegateInArgument<SendReply> sendReply = new DelegateInArgument<SendReply>();
+            DelegateInArgument<ValidationContext> context = new DelegateInArgument<ValidationContext>();
+            DelegateInArgument<Activity> activityInTree = new DelegateInArgument<Activity>();
+            Variable<bool> requestInTree = new Variable<bool> { Default = false };
+
+            return new Constraint<SendReply>
+            {
+                Body = new ActivityAction<SendReply, ValidationContext>
+                {
+                    Argument1 = sendReply,
+                    Argument2 = context,
+                    Handler = new Sequence
+                    {
+                        Variables = { requestInTree },
+                        Activities =
+                        {
+                            new If
+                            {
+                                Condition = new InArgument<bool>(ctx => sendReply.Get(ctx).Request != null),
+                                Then = new Sequence
+                                {
+                                    Activities = 
+                                    {
+                                        new ForEach<Activity>
+                                        {
+                                            Values = new GetWorkflowTree
+                                            {
+                                                ValidationContext = context,
+                                            },
+                                            Body = new ActivityAction<Activity>
+                                            {
+                                                Argument = activityInTree,
+                                                Handler = new If
+                                                {
+                                                    Condition = new InArgument<bool>(ctx => activityInTree.Get(ctx) == sendReply.Get(ctx).Request),
+                                                    Then = new Assign<bool>
+                                                    {
+                                                        To = requestInTree,
+                                                        Value = true,
+                                                    }                                                    
+                                                }
+                                            }
+                                        },                            
+                                        new AssertValidation
+                                        {                                
+                                            Assertion = new InArgument<bool>(ctx => requestInTree.Get(ctx)),
+                                            IsWarning = false,
+                                            Message = new InArgument<string>(ctx => string.Format(CultureInfo.CurrentCulture, System.Activities.Core.Presentation.SR.UnrootedRequestInSendReply, sendReply.Get(ctx).DisplayName))
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            };
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ServiceContractImporter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ServiceContractImporter.cs
new file mode 100644 (file)
index 0000000..97317b0
--- /dev/null
@@ -0,0 +1,204 @@
+// <copyright>
+//   Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Hosting;
+    using System.Activities.Presentation.Toolbox;
+    using System.Activities.Presentation.View;
+    using System.Activities.Presentation.Xaml;
+    using System.Activities.Statements;
+    using System.Collections.Generic;
+    using System.Globalization;
+    using System.IO;
+    using System.Linq;
+    using System.Reflection;
+    using System.ServiceModel.Description;
+    using System.Xaml;
+    using System.Xml;
+    using Microsoft.Activities.Presentation.Xaml;
+
+    /// <summary>
+    /// ServiceContractImporter is an activity template generator that generate Receive/ReceiveAndSendReply based on ContractDescription
+    /// </summary>
+    public static class ServiceContractImporter
+    {
+        /// <summary>
+        /// The key used to store the contract type view state.
+        /// </summary>
+        public const string ContractTypeViewStateKey = "contractType";
+
+        private const string ReceiveSuffix = "_Receive";
+        private const string SendReplySuffix = "_SendReply";
+        private const string SendFaultReply = "SendFaultReply";
+        private const string SendFaultReplySuffix = "_" + SendFaultReply;
+        private const string ReceiveAndSendReplySuffix = "_ReceiveAndSendReply";
+
+        /// <summary>
+        /// Gets the filter function for screening out non service contract types.
+        /// </summary>
+        internal static Func<Type, bool> FilterFunction
+        {
+            get
+            {
+                return t => t.IsDefined(typeof(ServiceContractAttribute), true) && !t.IsGenericType;
+            }
+        }
+
+        /// <summary>
+        /// Launch the user interface for developer to pick a contract type.
+        /// </summary>
+        /// <param name="localAssemblyName">The local assembly name.</param>
+        /// <param name="referencedAssemblies">The list of referenced assembly names.</param>
+        /// <param name="editingContext">The editing context.</param>
+        /// <returns>The contract type selected by user or null if user cancels.</returns>
+        public static Type SelectContractType(AssemblyName localAssemblyName, IList<AssemblyName> referencedAssemblies, EditingContext editingContext)
+        {
+            AssemblyContextControlItem assemblyContextControlItem = new AssemblyContextControlItem { LocalAssemblyName = localAssemblyName, ReferencedAssemblyNames = referencedAssemblies };
+            TypeBrowser typeBrowser = new TypeBrowser(assemblyContextControlItem, editingContext, FilterFunction);
+            bool? dialogResult = typeBrowser.ShowDialog(/* owner = */ null);
+            if (dialogResult.HasValue && dialogResult.Value)
+            {
+                return typeBrowser.ConcreteType;
+            }
+            else
+            {
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Generate activity templates based on contract
+        /// </summary>
+        /// <param name="contractType">The contract type</param>
+        /// <returns>The list of all activity templates, each represent an operation.</returns>
+        public static IEnumerable<ActivityTemplateFactoryBuilder> GenerateActivityTemplates(Type contractType)
+        {
+            if (contractType == null)
+            {
+                throw FxTrace.Exception.ArgumentNull("contractType");
+            }
+
+            ContractDescription contract = null;
+            try
+            {
+                contract = ContractDescription.GetContract(contractType);
+            }
+            catch (InvalidOperationException e)
+            {
+                if (e.InnerException != null)
+                {
+                    throw new InvalidOperationException(e.Message + Environment.NewLine + Environment.NewLine + e.InnerException.GetType().ToString() + Environment.NewLine + e.InnerException.Message, e);
+                }
+                else
+                {
+                    throw;
+                }
+            }
+            
+            // 
+            if (contract.Operations != null)
+            {
+                foreach (OperationDescription operation in contract.Operations)
+                {
+                    Activity generatedActivity = GenerateActivity(operation);
+
+                    WorkflowViewStateService.SetViewState(
+                        generatedActivity,
+                        new Dictionary<string, object>
+                        {
+                             { ContractTypeViewStateKey, contractType },
+                        });
+                    yield return new ActivityTemplateFactoryBuilder
+                    {
+                        Name = contractType.Name + "." + generatedActivity.DisplayName,
+                        TargetType = generatedActivity.GetType(),
+                        Implementation = generatedActivity,
+                    };
+                }
+            }
+        }
+
+        /// <summary>
+        /// Save the activity template into its XAML representation.
+        /// </summary>
+        /// <param name="activityTemplate">The activity template to be saved.</param>
+        /// <returns>The XAML representation of the activity template.</returns>
+        public static string SaveActivityTemplate(ActivityTemplateFactoryBuilder activityTemplate)
+        {
+            XamlSchemaContext xsc = new XamlSchemaContext();
+            using (XamlReader reader = new XamlObjectReader(activityTemplate, xsc))
+            {
+                using (StringWriter textWriter = new StringWriter(CultureInfo.InvariantCulture))
+                {
+                    using (XmlWriter xmlWriter = XmlWriter.Create(textWriter, new XmlWriterSettings { Indent = true }))
+                    {
+                        using (XamlWriter xamlWriter = new XamlXmlWriter(xmlWriter, xsc))
+                        {
+                            using (ActivityTemplateFactoryBuilderWriter builderWriter = new ActivityTemplateFactoryBuilderWriter(xamlWriter, xsc))
+                            {
+                                XamlServices.Transform(reader, builderWriter);
+                            }
+                        }
+                    }
+
+                    return textWriter.ToString();
+                }
+            }
+        }
+
+        internal static Activity GenerateActivity(OperationDescription operation)
+        {
+            if (operation == null)
+            {
+                throw FxTrace.Exception.ArgumentNull("operation");
+            }
+
+            Receive receive = Receive.FromOperationDescription(operation);
+            receive.DisplayName = receive.OperationName + ReceiveSuffix;
+            IEnumerable<SendReply> faultReplies;
+            SendReply reply = SendReply.FromOperationDescription(operation, out faultReplies);
+            if (reply != null)
+            {
+                reply.DisplayName = receive.OperationName + SendReplySuffix;
+                Variable<CorrelationHandle> handle = new Variable<CorrelationHandle> { Name = "__handle" };
+                receive.CorrelationInitializers.Add(new RequestReplyCorrelationInitializer { CorrelationHandle = new InArgument<CorrelationHandle>(handle) });
+                reply.Request = receive;
+
+                Activity replyActivity = reply;
+
+                Switch<string> replySelector = null;
+                foreach (SendReply faultReply in faultReplies)
+                {
+                    if (replySelector == null)
+                    {
+                        replySelector = new Switch<string>
+                        {
+                            Default = reply
+                        };
+                        replyActivity = replySelector;
+                    }
+
+                    faultReply.Request = receive;
+                    string faultName = faultReply.DisplayName.Substring(0, faultReply.DisplayName.Length - SendFaultReply.Length);
+                    faultReply.DisplayName = receive.OperationName + SendFaultReplySuffix;
+                    replySelector.Cases.Add(faultName, faultReply);
+                }
+
+                return new Sequence
+                {
+                    DisplayName = receive.OperationName + ReceiveAndSendReplySuffix,
+                    Variables = { handle },
+                    Activities = { receive, replyActivity },
+                };
+            }
+            else
+            {
+                return receive;
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TransactedReceiveScope.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TransactedReceiveScope.xaml.cs
new file mode 100644 (file)
index 0000000..d6de081
--- /dev/null
@@ -0,0 +1,27 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System.Activities.Presentation.Metadata;
+    using System.ComponentModel;
+    using System.ServiceModel.Activities;
+
+    partial class TransactedReceiveScopeDesigner
+    {
+        public TransactedReceiveScopeDesigner()
+        {
+            this.InitializeComponent();
+        }
+
+        public static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            Type type = typeof(TransactedReceiveScope);
+            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(TransactedReceiveScopeDesigner)));
+            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Request"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TypeToTreeConverter.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TypeToTreeConverter.cs
new file mode 100644 (file)
index 0000000..6fb59ad
--- /dev/null
@@ -0,0 +1,103 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+namespace System.ServiceModel.Activities.Presentation
+{
+    using System;
+    using System.Globalization;
+    using System.Linq;
+    using System.Reflection;
+    using System.Windows.Data;
+    using System.Activities.Presentation.Model;
+    using System.Collections;
+    using System.Activities.Core.Presentation;
+    using System.Xml;
+    using System.Runtime.Serialization;
+    using System.Xml.Serialization;
+
+    sealed class TypeToTreeConverter : IValueConverter
+    {
+        object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            Type type = null;
+            if (value is ModelItem)
+            {
+                value = ((ModelItem)value).GetCurrentValue();
+            }
+            if (value is Type)
+            {
+                type = (Type)value;
+            }
+            else if (value is PropertyInfo)
+            {
+                type = ((PropertyInfo)value).PropertyType;
+            }
+            else if (value is FieldInfo)
+            {
+                type = ((FieldInfo)value).FieldType;
+            }
+
+            //1) Dead-ends (not expand any more)
+            //  a. CLR built-in types 
+            //  b. Byte array, DateTime, TimeSpan, GUID, Uri, XmlQualifiedName, XmlElement and XmlNode array [This includes XElement and XNode array from .NET 3.5] 
+            //  c. Enums 
+            //  d. Arrays and Collection classes including List<T>, Dictionary<K,V> and Hashtable(Anything that implements IEnumerable or IDictionary or is an array is treated as a collection)
+            //  e. Types marked with [CollectionDataContract] attribute
+            //2) Show nothing (Xpath generator cannot generate XPath according to member info), but user should be able to manually input query string
+            //  a. Types that implement IXmlSerializable
+            //  b. Types that implement ISerializable.
+            //3) Show all fields  without [NonSerializable] regardless of visibility
+            //  a. Types marked with Serializable attribute
+            //4) Show all [DataMembers]
+            //  a. Types marked with DataContract attribute
+            //5) Show all public fields and properties without [IgnoreDataMember]
+            //  a. Types with none of the above attributes (POCO) but with a default constructor (can be non-public).
+            //
+            //
+            //Priority of those interfaces or attributes:
+            //IXmlSerializable -> ISerializable -> DataContract -> Serializable
+            //Type cannot be Iserializable/IXmlSerializable and have DataContractAttribute attribute.
+            IEnumerable result = null;
+            if ((null != type) && (!ContentCorrelationTypeExpander.IsPrimitiveTypeInXPath(type)))
+            {
+                if (type.GetInterface("IXmlSerializable", false) != null)
+                {
+                    result = null;
+                }
+                else if (type.GetInterface("ISerializable", false) != null)
+                {
+                    result = null;
+                }
+                else if (type.GetCustomAttributes(typeof(DataContractAttribute), false).Length > 0)
+                {
+                    result = type
+                        .GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
+                        .Where(member => member.GetCustomAttributes(typeof(DataMemberAttribute), false).Length > 0)
+                        .OrderBy(member => member.Name);
+                }
+                else if (type.GetCustomAttributes(typeof(SerializableAttribute), false).Length > 0)
+                {
+                    result = type
+                        .GetMembers(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
+                        .Where(member => member.MemberType == MemberTypes.Field && member.GetCustomAttributes(typeof(NonSerializedAttribute), false).Length == 0)
+                        .OrderBy(member => member.Name);
+                }
+                else if (type.GetConstructor(new Type[0] { }) != null)
+                {
+                    result = type
+                        .GetMembers(BindingFlags.Instance | BindingFlags.Public)
+                        .Where(member => (member.MemberType == MemberTypes.Field || member.MemberType == MemberTypes.Property) &&
+                        (member.GetCustomAttributes(typeof(IgnoreDataMemberAttribute), false).Length == 0))
+                        .OrderBy(member => member.Name);
+                }
+            }
+            return result;
+        }
+
+
+        object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            throw FxTrace.Exception.AsError(new NotSupportedException());
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Presentation/ServiceDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Core.Presentation/System/ServiceModel/Presentation/ServiceDesigner.xaml.cs
new file mode 100644 (file)
index 0000000..fd39064
--- /dev/null
@@ -0,0 +1,59 @@
+//----------------------------------------------------------------
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+//----------------------------------------------------------------
+
+namespace System.ServiceModel.Presentation
+{
+    using System.Activities.Core.Presentation.Themes;
+    using System.Activities.Presentation;
+    using System.Activities.Presentation.Metadata;
+    using System.Activities.Presentation.Model;
+    using System.Activities.Presentation.PropertyEditing;
+    using System.ComponentModel;
+    using System.ServiceModel.Activities;
+    using System.ServiceModel.Activities.Presentation;
+
+    partial class ServiceDesigner : IExpandChild
+    {
+        const string MiscellaneousCategoryLabelKey = "miscellaneousCategoryLabel";
+
+        public ServiceDesigner()
+        {
+            InitializeComponent();
+        }
+
+        public ModelItem ExpandedChild
+        {
+            get 
+            {
+                ModelItem modelItemToSelect = null;
+                if (this.ModelItem != null)
+                {
+                    modelItemToSelect = this.ModelItem.Properties["Body"].Value;
+                }
+                return modelItemToSelect;
+            }
+        }
+
+        internal static void RegisterMetadata(AttributeTableBuilder builder)
+        {
+            var serviceType = typeof(WorkflowService);
+            var advancedAttribute = new EditorBrowsableAttribute(EditorBrowsableState.Advanced);
+            var categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(MiscellaneousCategoryLabelKey));
+
+            builder.AddCustomAttributes(serviceType, new DesignerAttribute(typeof(ServiceDesigner)));
+            builder.AddCustomAttributes(serviceType, "Name", new TypeConverterAttribute(typeof(XNameConverter)));
+            builder.AddCustomAttributes(serviceType, serviceType.GetProperty("Endpoints"), BrowsableAttribute.No);
+            builder.AddCustomAttributes(
+                serviceType,
+                "ImplementedContracts", 
+                advancedAttribute, 
+                categoryAttribute, 
+                PropertyValueEditor.CreateEditorAttribute(typeof(TypeCollectionPropertyEditor)), 
+                new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.AllowDuplicate, Value = false },
+                new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.Filter, Value = ServiceContractImporter.FilterFunction },
+                new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.DefaultType, Value = null });
+            builder.AddCustomAttributes(serviceType, serviceType.GetProperty("Body"), BrowsableAttribute.No);
+        }
+    }
+}
index b7b1bcd90ef859d59100312a4c2ef1370a49e075..8335154acf1f3340ec331606fd45539e00277904 100644 (file)
@@ -35,6 +35,8 @@ namespace System.Activities.DurableInstancing
                 new RetryErrorCode(10054, RetryErrorOptions.RetryBeginOrEnd | RetryErrorOptions.RetryWhenTransaction), // Severed tcp connection drawn from the pool
                 new RetryErrorCode(10060, RetryErrorOptions.RetryBeginOrEnd | RetryErrorOptions.RetryWhenTransaction), // The server was not found or was not accessible. 
                 new RetryErrorCode(10061, RetryErrorOptions.RetryBeginOrEnd | RetryErrorOptions.RetryWhenTransaction), // SQL Server not started
+                new RetryErrorCode(10928, RetryErrorOptions.RetryBeginOrEnd | RetryErrorOptions.RetryWhenTransaction), // SQL Azure error - The limit for the database resource has been reached.
+                new RetryErrorCode(10929, RetryErrorOptions.RetryBeginOrEnd | RetryErrorOptions.RetryWhenTransaction), // SQL Azure error - The server is currently too busy to support requests up to the maximum limit.
                 new RetryErrorCode(40143, RetryErrorOptions.RetryBeginOrEnd | RetryErrorOptions.RetryWhenTransaction), // SQL Azure error - server encountered error processing the request.
                 new RetryErrorCode(40197, RetryErrorOptions.RetryBeginOrEnd | RetryErrorOptions.RetryWhenTransaction), // SQL Azure error - server encountered error processing the request.
                 new RetryErrorCode(40501, RetryErrorOptions.RetryBeginOrEnd | RetryErrorOptions.RetryWhenTransaction), // SQL Azure error - server is currently busy.
@@ -116,7 +118,7 @@ namespace System.Activities.DurableInstancing
             SqlCommandAsyncResult thisPtr = (SqlCommandAsyncResult) state;
             try
             {
-                // this can throw on the sync path - we need to signal the callback
+                // this can throw on the [....] path - we need to signal the callback
                 thisPtr.StartCommandInternal(false);
             }
             catch (Exception e)
@@ -169,7 +171,7 @@ namespace System.Activities.DurableInstancing
                     this.sqlCommand.Connection.Close();
                 }
 
-                // If we completed sync then any retry is done by the original caller.
+                // If we completed [....] then any retry is done by the original caller.
                 if (!result.CompletedSynchronously)
                 {
                     if (this.CheckRetryCountAndTimer() && ShouldRetryForSqlError(exception.Number, RetryErrorOptions.RetryOnEnd))
index 8728eccd08fc14f1d9000f69f21117f576d85fc7..8b73e31c731c583d685fafa6836e3fa82dbd889c 100644 (file)
@@ -26,7 +26,7 @@ namespace Microsoft.Activities.Presentation.Xaml
             consumer.SetLineInfo(lineNumber, linePosition);
         }
 
-        // This method is a workaround for TFS 
+        // This method is a workaround for TFS bug #788190, since XamlReader.ReadSubtree() should (but doesn't) preserve IXamlLineInfo on the subreader
         public static void Transform(XamlReader reader, XamlWriter writer, IXamlLineInfo readerLineInfo, bool closeWriter)
         {
             IXamlLineInfoConsumer consumer = writer as IXamlLineInfoConsumer;
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/AssemblyInfo.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/AssemblyInfo.cs
deleted file mode 100644 (file)
index 7c86584..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-using System.Runtime.CompilerServices;
-using System.Diagnostics.CodeAnalysis;
-
-[assembly: InternalsVisibleTo("CIT.System.Activities.Core.Design, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
-[assembly: SuppressMessage("Microsoft.MSInternal", "CA904:DeclareTypesInMicrosoftOrSystemNamespace", Scope = "namespace", Target = "XamlGeneratedNamespace", Justification = "Xaml Generated")]
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/SR.Designer.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/SR.Designer.cs
deleted file mode 100644 (file)
index d61d6e6..0000000
+++ /dev/null
@@ -1,850 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.235
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation {
-    using System;
-    
-    
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class SR {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal SR() {
-        }
-        
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("System.Activities.Core.Presentation.SR", typeof(SR).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Add an activity.
-        /// </summary>
-        internal static string AddActivityHintText {
-            get {
-                return ResourceManager.GetString("AddActivityHintText", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Add new case.
-        /// </summary>
-        internal static string AddNewCase {
-            get {
-                return ResourceManager.GetString("AddNewCase", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Connect items automatically.
-        /// </summary>
-        internal static string AutoConnect {
-            get {
-                return ResourceManager.GetString("AutoConnect", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Split connector automatically.
-        /// </summary>
-        internal static string AutoSplit {
-            get {
-                return ResourceManager.GetString("AutoSplit", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot construct line segment between point {0} and point {1}..
-        /// </summary>
-        internal static string CannotConstructConnectionSegment {
-            get {
-                return ResourceManager.GetString("CannotConstructConnectionSegment", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot create link..
-        /// </summary>
-        internal static string CannotCreateLink {
-            get {
-                return ResourceManager.GetString("CannotCreateLink", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot create transition from a state to its descendant..
-        /// </summary>
-        internal static string CannotCreateTransitionFromAncestorToDescendant {
-            get {
-                return ResourceManager.GetString("CannotCreateTransitionFromAncestorToDescendant", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot create transition to a composite state..
-        /// </summary>
-        internal static string CannotCreateTransitionToCompositeState {
-            get {
-                return ResourceManager.GetString("CannotCreateTransitionToCompositeState", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to {0} activity is copied to the clipboard. Please paste it in your workflow as appropriate..
-        /// </summary>
-        internal static string CannotPasteSendReplyOrReceiveReply {
-            get {
-                return ResourceManager.GetString("CannotPasteSendReplyOrReceiveReply", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot set a composite state as the initial state..
-        /// </summary>
-        internal static string CannotSetCompositeStateAsInitialState {
-            get {
-                return ResourceManager.GetString("CannotSetCompositeStateAsInitialState", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot set a final state as the initial state..
-        /// </summary>
-        internal static string CannotSetFinalStateAsInitialState {
-            get {
-                return ResourceManager.GetString("CannotSetFinalStateAsInitialState", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Case{0}.
-        /// </summary>
-        internal static string CaseFormat {
-            get {
-                return ResourceManager.GetString("CaseFormat", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Change Case Value.
-        /// </summary>
-        internal static string ChangeCaseValue {
-            get {
-                return ResourceManager.GetString("ChangeCaseValue", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Change type collection.
-        /// </summary>
-        internal static string ChangeTypeCollectionEditingScopeDesc {
-            get {
-                return ResourceManager.GetString("ChangeTypeCollectionEditingScopeDesc", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Clear initial state.
-        /// </summary>
-        internal static string ClearInitialState {
-            get {
-                return ResourceManager.GetString("ClearInitialState", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Transition.
-        /// </summary>
-        internal static string ConnectionAutomationPropertiesName {
-            get {
-                return ResourceManager.GetString("ConnectionAutomationPropertiesName", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to ConnectionConfigurationName &apos;{0}&apos; does not exist in configuration file..
-        /// </summary>
-        internal static string ConnectionNotFoundInConfig {
-            get {
-                return ResourceManager.GetString("ConnectionNotFoundInConfig", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select and press Ctrl-C to copy the transition..
-        /// </summary>
-        internal static string CopyTransitionToolTip {
-            get {
-                return ResourceManager.GetString("CopyTransitionToolTip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot use a query correlation initializer when a message is XmlSerializable..
-        /// </summary>
-        internal static string CorrelationInitializerNotSupported {
-            get {
-                return ResourceManager.GetString("CorrelationInitializerNotSupported", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Add parameter.
-        /// </summary>
-        internal static string CreateParameter {
-            get {
-                return ResourceManager.GetString("CreateParameter", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Create transition.
-        /// </summary>
-        internal static string CreateTransition {
-            get {
-                return ResourceManager.GetString("CreateTransition", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to (Custom).
-        /// </summary>
-        internal static string CustomConnectionStringLabel {
-            get {
-                return ResourceManager.GetString("CustomConnectionStringLabel", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Default case already exists..
-        /// </summary>
-        internal static string DefaultCaseExists {
-            get {
-                return ResourceManager.GetString("DefaultCaseExists", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Define....
-        /// </summary>
-        internal static string DefineContent {
-            get {
-                return ResourceManager.GetString("DefineContent", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Expected argument named &apos;{0}&apos; was not found.
-        ///.
-        /// </summary>
-        internal static string DelegateArgumentMissing {
-            get {
-                return ResourceManager.GetString("DelegateArgumentMissing", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to The directionality of activity delegate argument &apos;{0}&apos; in DelegateArguments dictionary is &apos;{1}&apos;. The expected directionality is &apos;{2}&apos;.
-        ///.
-        /// </summary>
-        internal static string DelegateArgumentsDirectionalityMismatch {
-            get {
-                return ResourceManager.GetString("DelegateArgumentsDirectionalityMismatch", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to The argument provided for the delegate input named &apos;{0}&apos; had an invalid type.  The delegate input is of type &apos;{1}&apos; and the argument is of type &apos;{2}&apos;.  The argument&apos;s type must be coercible to the delegate input&apos;s type.
-        ///.
-        /// </summary>
-        internal static string DelegateInArgumentTypeMismatch {
-            get {
-                return ResourceManager.GetString("DelegateInArgumentTypeMismatch", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to The argument provided for the delegate output named &apos;{0}&apos; had an invalid type.  The delegate output is of type &apos;{1}&apos; and the argument is of type &apos;{2}&apos;.  The delegate output&apos;s type must be coercible to the argument&apos;s type.
-        ///.
-        /// </summary>
-        internal static string DelegateOutArgumentTypeMismatch {
-            get {
-                return ResourceManager.GetString("DelegateOutArgumentTypeMismatch", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to A switch case with the key &apos;{0}&apos; already exists. Choose a different key..
-        /// </summary>
-        internal static string DuplicateCaseKey {
-            get {
-                return ResourceManager.GetString("DuplicateCaseKey", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to The collection already contains the key &apos;{0}&apos;. Please choose a different key..
-        /// </summary>
-        internal static string DuplicateKeyName {
-            get {
-                return ResourceManager.GetString("DuplicateKeyName", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Editing Command.
-        /// </summary>
-        internal static string EditingCommand {
-            get {
-                return ResourceManager.GetString("EditingCommand", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Editing Connection Settings.
-        /// </summary>
-        internal static string EditingConnectionSettings {
-            get {
-                return ResourceManager.GetString("EditingConnectionSettings", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Editing Parameters.
-        /// </summary>
-        internal static string EditingParameters {
-            get {
-                return ResourceManager.GetString("EditingParameters", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Edit Parameters.
-        /// </summary>
-        internal static string EditParametersUndoUnitName {
-            get {
-                return ResourceManager.GetString("EditParametersUndoUnitName", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Double-click to edit state details..
-        /// </summary>
-        internal static string EditStateToolTip {
-            get {
-                return ResourceManager.GetString("EditStateToolTip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Double-click to edit transition details.
-        /// </summary>
-        internal static string EditTransitionTooltip {
-            get {
-                return ResourceManager.GetString("EditTransitionTooltip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to (empty).
-        /// </summary>
-        internal static string EmptyName {
-            get {
-                return ResourceManager.GetString("EmptyName", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Equals() and/or GetHashCode() on type &apos;{0}&apos; were not overridden correctly..
-        /// </summary>
-        internal static string EqualityError {
-            get {
-                return ResourceManager.GetString("EqualityError", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Workflow Designer.
-        /// </summary>
-        internal static string ErrorMessageBoxTitle {
-            get {
-                return ResourceManager.GetString("ErrorMessageBoxTitle", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to &lt;Enter an expression&gt;.
-        /// </summary>
-        internal static string ExpressionDefaultText {
-            get {
-                return ResourceManager.GetString("ExpressionDefaultText", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Create Link(s).
-        /// </summary>
-        internal static string FCCreateLink {
-            get {
-                return ResourceManager.GetString("FCCreateLink", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Delete Link(s).
-        /// </summary>
-        internal static string FCDeleteLink {
-            get {
-                return ResourceManager.GetString("FCDeleteLink", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Delete Flowchart node.
-        /// </summary>
-        internal static string FCDeleteShape {
-            get {
-                return ResourceManager.GetString("FCDeleteShape", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to False branch already exists..
-        /// </summary>
-        internal static string FCFalseBranchExists {
-            get {
-                return ResourceManager.GetString("FCFalseBranchExists", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Connection can only be from True or False branch..
-        /// </summary>
-        internal static string FCFlowConditionLinkError {
-            get {
-                return ResourceManager.GetString("FCFlowConditionLinkError", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to The True and False branches have already been defined..
-        /// </summary>
-        internal static string FCFlowConditionLinksExist {
-            get {
-                return ResourceManager.GetString("FCFlowConditionLinksExist", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to False.
-        /// </summary>
-        internal static string FCFlowDecisionFalseMarker {
-            get {
-                return ResourceManager.GetString("FCFlowDecisionFalseMarker", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to True.
-        /// </summary>
-        internal static string FCFlowDecisionTrueMarker {
-            get {
-                return ResourceManager.GetString("FCFlowDecisionTrueMarker", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot connect to the connection point..
-        /// </summary>
-        internal static string FCInvalidLink {
-            get {
-                return ResourceManager.GetString("FCInvalidLink", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Move Flowchart Link.
-        /// </summary>
-        internal static string FCLinkMove {
-            get {
-                return ResourceManager.GetString("FCLinkMove", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot create more than one outgoing connection for this activity..
-        /// </summary>
-        internal static string FCNextLinkDefined {
-            get {
-                return ResourceManager.GetString("FCNextLinkDefined", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Resize Flowchart.
-        /// </summary>
-        internal static string FCResizeUndoUnitName {
-            get {
-                return ResourceManager.GetString("FCResizeUndoUnitName", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to True branch already exists..
-        /// </summary>
-        internal static string FCTrueBranchExists {
-            get {
-                return ResourceManager.GetString("FCTrueBranchExists", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Fill Delegate Arguments.
-        /// </summary>
-        internal static string FillDelegateArguments {
-            get {
-                return ResourceManager.GetString("FillDelegateArguments", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to FlowSwitch case rename.
-        /// </summary>
-        internal static string FlowSwitchCaseRenameEditingScopeDesc {
-            get {
-                return ResourceManager.GetString("FlowSwitchCaseRenameEditingScopeDesc", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to FlowSwitch DefaultCaseDisplayName change.
-        /// </summary>
-        internal static string FlowSwitchDefaultCaseDisplayNameEditingScopeDesc {
-            get {
-                return ResourceManager.GetString("FlowSwitchDefaultCaseDisplayNameEditingScopeDesc", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Drag a line to connect to the initial state.
-        /// </summary>
-        internal static string InitialStateConnectionPointTooltip {
-            get {
-                return ResourceManager.GetString("InitialStateConnectionPointTooltip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to FlowSwitch cases must be unique..
-        /// </summary>
-        internal static string InvalidFlowSwitchCaseMessage {
-            get {
-                return ResourceManager.GetString("InvalidFlowSwitchCaseMessage", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Item Move.
-        /// </summary>
-        internal static string ItemMove {
-            get {
-                return ResourceManager.GetString("ItemMove", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Move link.
-        /// </summary>
-        internal static string MoveLink {
-            get {
-                return ResourceManager.GetString("MoveLink", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to &lt;Input case here&gt;.
-        /// </summary>
-        internal static string NewCaseHint {
-            get {
-                return ResourceManager.GetString("NewCaseHint", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Case key value cannot be converted from/to type string..
-        /// </summary>
-        internal static string NotSupportedCaseKeyStringConversion {
-            get {
-                return ResourceManager.GetString("NotSupportedCaseKeyStringConversion", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to The Encoding with code page &apos;{0}&apos; is not supported..
-        /// </summary>
-        internal static string NotSupportedEncoding {
-            get {
-                return ResourceManager.GetString("NotSupportedEncoding", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to (null).
-        /// </summary>
-        internal static string NullName {
-            get {
-                return ResourceManager.GetString("NullName", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to The entered key is invalid.
-        /// </summary>
-        internal static string NullOrEmptyKeyName {
-            get {
-                return ResourceManager.GetString("NullOrEmptyKeyName", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Parameters.
-        /// </summary>
-        internal static string ParameterDialogTitle {
-            get {
-                return ResourceManager.GetString("ParameterDialogTitle", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot paste the transition if one of the selected source states is a Final state..
-        /// </summary>
-        internal static string PasteTransitionOnFinalState {
-            get {
-                return ResourceManager.GetString("PasteTransitionOnFinalState", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot paste the transition if the selection contains any item that is not a State..
-        /// </summary>
-        internal static string PasteTransitionOnNonStateItem {
-            get {
-                return ResourceManager.GetString("PasteTransitionOnNonStateItem", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select and press Ctrl-V to paste the transition..
-        /// </summary>
-        internal static string PasteTransitionToolTip {
-            get {
-                return ResourceManager.GetString("PasteTransitionToolTip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot paste the transition because &apos;{0}&apos; has all connection points occupied..
-        /// </summary>
-        internal static string PasteTransitionWithoutAvailableConnectionPoints {
-            get {
-                return ResourceManager.GetString("PasteTransitionWithoutAvailableConnectionPoints", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot paste the transition if the destination state of the copied transition is removed or not in the StateMachine..
-        /// </summary>
-        internal static string PasteTransitionWithoutDestinationState {
-            get {
-                return ResourceManager.GetString("PasteTransitionWithoutDestinationState", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to &apos;{0}&apos; is not a concrete type of ActivityDelegate..
-        /// </summary>
-        internal static string PropertyIsNotAConcreteActivityDelegate {
-            get {
-                return ResourceManager.GetString("PropertyIsNotAConcreteActivityDelegate", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to &apos;{0}&apos; is not an ActivityDelegate..
-        /// </summary>
-        internal static string PropertyIsNotAnActivityDelegate {
-            get {
-                return ResourceManager.GetString("PropertyIsNotAnActivityDelegate", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Property Reference Change.
-        /// </summary>
-        internal static string PropertyReferenceChange {
-            get {
-                return ResourceManager.GetString("PropertyReferenceChange", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to &apos;{0}&apos; cannot be resolved..
-        /// </summary>
-        internal static string PropertyReferenceNotResolved {
-            get {
-                return ResourceManager.GetString("PropertyReferenceNotResolved", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Reorder items.
-        /// </summary>
-        internal static string ReorderItems {
-            get {
-                return ResourceManager.GetString("ReorderItems", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Set initial state.
-        /// </summary>
-        internal static string SetInitialState {
-            get {
-                return ResourceManager.GetString("SetInitialState", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Drag a line to create a new transition that shares the same trigger.
-        /// </summary>
-        internal static string SharedTriggerToolTip {
-            get {
-                return ResourceManager.GetString("SharedTriggerToolTip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Go to {0}.
-        /// </summary>
-        internal static string StateLinkButtonToolTip {
-            get {
-                return ResourceManager.GetString("StateLinkButtonToolTip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Resize StateMachine.
-        /// </summary>
-        internal static string StateMachineResize {
-            get {
-                return ResourceManager.GetString("StateMachineResize", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Resize State.
-        /// </summary>
-        internal static string StateResize {
-            get {
-                return ResourceManager.GetString("StateResize", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Drag a line to create a transition.
-        /// </summary>
-        internal static string TransitionConnectionPointTooltip {
-            get {
-                return ResourceManager.GetString("TransitionConnectionPointTooltip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Request in ReceiveReply &apos;{0}&apos; does not belong to the workflow..
-        /// </summary>
-        internal static string UnrootedRequestInReceiveReply {
-            get {
-                return ResourceManager.GetString("UnrootedRequestInReceiveReply", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Request in SendReply &apos;{0}&apos; does not belong to the workflow..
-        /// </summary>
-        internal static string UnrootedRequestInSendReply {
-            get {
-                return ResourceManager.GetString("UnrootedRequestInSendReply", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to View message....
-        /// </summary>
-        internal static string ViewMessageContent {
-            get {
-                return ResourceManager.GetString("ViewMessageContent", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to View parameter....
-        /// </summary>
-        internal static string ViewParameterContent {
-            get {
-                return ResourceManager.GetString("ViewParameterContent", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to ActivityDelegate arguments don&apos;t match. Check your activity configuration to make sure it is in [....] with the declared ActivityDelegate..
-        /// </summary>
-        internal static string WrongNumberOfArgumentsForActivityDelegate {
-            get {
-                return ResourceManager.GetString("WrongNumberOfArgumentsForActivityDelegate", resourceCulture);
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ArgumentIdentifierTrimConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ArgumentIdentifierTrimConverter.cs
deleted file mode 100644 (file)
index dd2f590..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Converters;
-    using System.Windows.Data;
-    
-    internal sealed class ArgumentIdentifierTrimConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            if (value != null)
-            {
-                return value;
-            }
-            
-            return string.Empty;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            // delegate to VBIdentifierTrimConverter.ConvertBack, because VBIdentifierTrimConverter is internal and cannot be directly referenced from XAML.
-            VBIdentifierTrimConverter converter = new VBIdentifierTrimConverter();
-            return converter.ConvertBack(value, targetType, parameter, culture);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/AssignDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/AssignDesigner.xaml.cs
deleted file mode 100644 (file)
index 57be3c6..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Activities.Presentation.Model;
-    using System.Runtime;
-    using Microsoft.VisualBasic.Activities;
-    using System.Reflection;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.View;
-    using System.Collections.Generic;
-
-    partial class AssignDesigner
-    {
-        const string ToPropertyName = "To";
-        const string ValuePropertyName = "Value";
-
-        PropertyChangedEventHandler modelItemPropertyChangedHandler;
-
-        public AssignDesigner()
-        {
-            this.InitializeComponent();
-        }
-
-        PropertyChangedEventHandler ModelItemPropertyChangedHandler
-        {
-            get
-            {
-                if (this.modelItemPropertyChangedHandler == null)
-                {
-                    this.modelItemPropertyChangedHandler = new PropertyChangedEventHandler(modelItem_PropertyChanged);
-                }
-
-                return this.modelItemPropertyChangedHandler;
-            }
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-
-            this.Unloaded += (sender, eventArgs) =>
-            {
-                AssignDesigner designer = sender as AssignDesigner;
-                if (designer != null && designer.ModelItem != null)
-                {
-                    designer.ModelItem.PropertyChanged -= designer.ModelItemPropertyChangedHandler;
-                }
-            };            
-        }
-
-        internal static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type assignType = typeof(Assign);
-            builder.AddCustomAttributes(assignType, new DesignerAttribute(typeof(AssignDesigner)));
-            builder.AddCustomAttributes(assignType, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-
-            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) =>
-            {
-                return new ArgumentAccessor[]
-                {
-                    new ArgumentAccessor
-                    {
-                        Getter = (ownerActivity) => ((Assign)ownerActivity).To,
-                        Setter = (ownerActivity, arg) => ((Assign)ownerActivity).To = arg as OutArgument,
-                    },
-                    new ArgumentAccessor
-                    {
-                        Getter = (ownerActivity) => ((Assign)ownerActivity).Value,
-                        Setter = (ownerActivity, arg) => ((Assign)ownerActivity).Value = arg as InArgument,
-                    },
-                };
-            };
-            ActivityArgumentHelper.RegisterAccessorsGenerator(assignType, argumentAccessorGenerator);
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            ModelItem modelItem = newItem as ModelItem;
-            if (modelItem != null)
-            {
-                modelItem.PropertyChanged += ModelItemPropertyChangedHandler;
-            }
-            base.OnModelItemChanged(newItem);
-        }
-
-        void modelItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            //if the To argument has changed, we may need to update the Value argument's type
-            if (e.PropertyName == ToPropertyName)
-            {
-                Fx.Assert(this.ModelItem != null, "modelItem could not be null if we recent property changed event from it");
-
-                ModelProperty valueProperty = this.ModelItem.Properties[ValuePropertyName];
-                ModelProperty toProperty = this.ModelItem.Properties[ToPropertyName];
-
-                Fx.Assert(valueProperty != null, "Value model property could not be null");
-                Fx.Assert(toProperty != null, "To model property could not be null");
-
-                Argument value = valueProperty.ComputedValue as Argument;
-                Argument to = toProperty.ComputedValue as Argument;
-
-                if (value != null)
-                {
-                    Type targetType = to == null ? typeof(object) : to.ArgumentType;
-                    if (value.ArgumentType != targetType)
-                    {
-                        valueProperty.SetValue(MorphHelpers.MorphArgument(valueProperty.Value, targetType));
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CancellationScopeDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CancellationScopeDesigner.xaml.cs
deleted file mode 100644 (file)
index baaa101..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Statements;
-
-    using System.ComponentModel;
-
-    partial class CancellationScopeDesigner
-    {
-        public CancellationScopeDesigner()
-        {
-            this.InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(CancellationScope);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CancellationScopeDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("CancellationHandler"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseDesigner.xaml.cs
deleted file mode 100644 (file)
index a7ab19d..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Annotations;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Input;
-
-    partial class CaseDesigner
-    {
-        public CaseDesigner()
-        {
-            this.InitializeComponent();
-            this.DragHandle = null;
-            this.Loaded += (sender, e) =>
-            {
-                Selection selection = this.Context.Items.GetValue<Selection>();
-                if (selection != null)
-                {
-                    ModelItem primarySelection = selection.PrimarySelection;
-                    this.ExpandState = SwitchDesigner.IsDescendantOfCase(this.ModelItem, primarySelection);
-
-                    if (this.ExpandState)
-                    {
-                        // If current focus is at another part, we need to focus this designer
-                        // to trigger selection changed, then this part will expand and another
-                        // expanded part will collapse. Then we focus on the activity it contains
-                        // if there is one.
-
-                        this.ModelItem.Highlight();
-                        if (this.ModelItem != primarySelection && primarySelection.View != null)
-                        {
-                            primarySelection.Highlight();
-                        }
-                    }
-                }
-            };
-        }
-
-        // When the CaseDesigner is collapsed, its CaseKeyBox will be disabled. Thus CaseKeyBox.RegainFocus() doesn't
-        // work in such situation, we must re-focus the CaseDesigner to expand it first to re-enable the CaseKeyBox. 
-        // This situation happens when inputting and invalid case key value and clicking on another Case or Default in 
-        // the same parent SwitchDesigner.
-        public Action<CaseKeyBox> FocusSelf
-        {
-            get
-            {
-                return (ckb) =>
-                    {
-                        Keyboard.Focus((IInputElement)this);
-                    };
-            }
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(ModelItemKeyValuePair<,>);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CaseDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Value"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-        }
-
-        void AttachDisplayName()
-        {
-            AttachedPropertiesService attachedPropertiesService = this.Context.Services.GetService<AttachedPropertiesService>();
-            Fx.Assert(attachedPropertiesService != null, "AttachedPropertiesService is not available.");
-            Type modelItemType = this.ModelItem.ItemType;
-            foreach (AttachedProperty property in attachedPropertiesService.GetAttachedProperties(modelItemType))
-            {
-                if (property.Name == "DisplayName" && property.OwnerType == modelItemType)
-                {
-                    return;
-                }
-            }
-            AttachedProperty<string> displayNameProperty = new AttachedProperty<string>
-            {
-                Name = "DisplayName",
-                OwnerType = modelItemType,
-                Getter = (modelItem) => { return "Case"; }
-            };
-            attachedPropertiesService.AddProperty(displayNameProperty);
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            base.OnModelItemChanged(newItem);
-            this.AttachDisplayName();
-        }
-
-        protected override void OnMouseDown(MouseButtonEventArgs e)
-        {
-            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
-            {
-                SwitchTryCatchDesignerHelper.MakeParentRootDesigner<SwitchDesigner>(this);
-                e.Handled = true;
-            }
-            else if (e.LeftButton == MouseButtonState.Pressed)
-            {
-                Keyboard.Focus(this);
-                e.Handled = true;
-                this.Designer.ShouldStillAllowRubberBandEvenIfMouseLeftButtonDownIsHandled = true;
-            }
-            else if (e.RightButton == MouseButtonState.Pressed)
-            {
-                if (this.ShowExpanded)
-                {
-                    Keyboard.Focus(this);
-                }
-                e.Handled = true;
-            }
-        }
-
-        protected override void OnMouseUp(MouseButtonEventArgs e)
-        {
-            // avoid context menu upon right-click when it's collapsed
-            if (!this.ShowExpanded && e.RightButton == MouseButtonState.Released)
-            {
-                e.Handled = true;
-            }
-        }
-
-        void OnAddAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
-            {
-                ContextMenuUtilities.OnAddAnnotationCommandCanExecute(e, this.Context, this.FindSwitch());
-            }
-        }
-
-        void OnAddAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            ContextMenuUtilities.OnAddAnnotationCommandExecuted(e, this.FindSwitch());
-        }
-
-        void OnEditAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
-            {
-                // call the same method as delete annotation command
-                ContextMenuUtilities.OnDeleteAnnotationCommandCanExecute(e, this.Context, this.FindSwitch());
-            }
-        }
-
-        void OnEditAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            ContextMenuUtilities.OnEditAnnotationCommandExecuted(e, this.FindSwitch());
-        }
-
-        void OnDeleteAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
-            {
-                ContextMenuUtilities.OnDeleteAnnotationCommandCanExecute(e, this.Context, this.FindSwitch());
-            }
-        }
-
-        void OnDeleteAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            ContextMenuUtilities.OnDeleteAnnotationCommandExecuted(e, this.FindSwitch());
-        }
-
-        private ModelItem FindSwitch()
-        {
-            return this.ModelItem.FindParent((ModelItem item) =>
-                {
-                    return item.ItemType.IsGenericType && item.ItemType.GetGenericTypeDefinition() == typeof(Switch<>);
-                });
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewInterface.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewInterface.cs
deleted file mode 100644 (file)
index dfe7afa..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-
-    delegate bool CaseKeyValidationCallbackDelegate(object obj, out string reason);
-
-    interface ICaseKeyBoxView
-    {
-        // Some view level functionalities required (i.e. cannot be done by data binding)
-        void RegainFocus();
-
-        // Allow ViewModel to raise View events
-        void OnValueCommitted();
-        void OnEditCancelled();
-
-        // Pass public interface of this control to the ViewModel
-        bool DisplayHintText { get; }
-        object Value { get; set; }
-        Type ValueType { get; }
-        CaseKeyValidationCallbackDelegate CaseKeyValidationCallback { get; }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewModel.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.ViewModel.cs
deleted file mode 100644 (file)
index ab276e3..0000000
+++ /dev/null
@@ -1,365 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Collections.ObjectModel;
-    using System.Windows;
-    using System.Linq;
-    using System.ComponentModel;
-    using System.Runtime;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Activities.Presentation.Model;
-
-    class CaseKeyBoxViewModel : DependencyObject
-    {
-        static readonly string Null = "(null)";
-        static readonly string Empty = "(empty)";
-
-        public static readonly DependencyProperty ComboBoxIsEditableProperty =
-            DependencyProperty.Register("ComboBoxIsEditable", typeof(bool), typeof(CaseKeyBoxViewModel), new UIPropertyMetadata(false));
-
-        public static readonly DependencyProperty ComboBoxVisibilityProperty =
-            DependencyProperty.Register("ComboBoxVisibility", typeof(Visibility), typeof(CaseKeyBoxViewModel), new UIPropertyMetadata(Visibility.Collapsed));
-
-        public static readonly DependencyProperty ComboBoxItemsProperty =
-            DependencyProperty.Register("ComboBoxItems", typeof(ObservableCollection<string>), typeof(CaseKeyBoxViewModel));
-
-        public static readonly DependencyProperty DataTemplateNameProperty =
-            DependencyProperty.Register("DataTemplateName", typeof(string), typeof(CaseKeyBoxViewModel), new UIPropertyMetadata("Label"));
-
-        public static readonly DependencyProperty TextProperty =
-            DependencyProperty.Register("Text", typeof(string), typeof(CaseKeyBoxViewModel), new UIPropertyMetadata(String.Empty));
-
-        public static readonly DependencyProperty TextBoxVisibilityProperty =
-            DependencyProperty.Register("TextBoxVisibility", typeof(Visibility), typeof(CaseKeyBoxViewModel), new UIPropertyMetadata(Visibility.Visible));
-
-        public const string BoxesTemplate = "Boxes";
-        public const string LabelTemplate = "Label";
-
-        string oldText = String.Empty;
-
-        public CaseKeyBoxViewModel(ICaseKeyBoxView view)
-        {
-            this.View = view;
-        }
-
-        public bool ComboBoxIsEditable
-        {
-            get { return (bool)GetValue(ComboBoxIsEditableProperty); }
-            set { SetValue(ComboBoxIsEditableProperty, value); }
-        }
-
-        public ObservableCollection<string> ComboBoxItems
-        {
-            get { return (ObservableCollection<string>)GetValue(ComboBoxItemsProperty); }
-            set { SetValue(ComboBoxItemsProperty, value); }
-        }
-
-        public Visibility ComboBoxVisibility
-        {
-            get { return (Visibility)GetValue(ComboBoxVisibilityProperty); }
-            set { SetValue(ComboBoxVisibilityProperty, value); }
-        }
-
-        public string DataTemplateName
-        {
-            get { return (string)GetValue(DataTemplateNameProperty); }
-            set { SetValue(DataTemplateNameProperty, value); }
-        }
-
-        public string Text
-        {
-            get { return (string)GetValue(TextProperty); }
-            set { SetValue(TextProperty, value); }
-        }
-
-        public Visibility TextBoxVisibility
-        {
-            get { return (Visibility)GetValue(TextBoxVisibilityProperty); }
-            set { SetValue(TextBoxVisibilityProperty, value); }
-        }
-
-        public bool IsBoxOnly
-        {
-            get;
-            set;
-        }
-
-        public bool OnEnterPressed()
-        {
-            return this.CommitChanges();
-        }
-
-        public void OnEscapePressed()
-        {
-            this.Text = oldText;
-            if (!this.IsBoxOnly)
-            {
-                this.DataTemplateName = CaseKeyBoxViewModel.LabelTemplate;
-            }
-            this.View.OnEditCancelled();
-        }
-
-        public void OnLabelGotFocus()
-        {
-            this.DataTemplateName = CaseKeyBoxViewModel.BoxesTemplate;
-        }
-
-        public bool OnLostFocus()
-        {
-            return CommitChanges();
-        }
-
-        public void OnValueChanged()
-        {
-            if (this.Value is ModelItem)
-            {
-                // Since Value is a DP, this code will trigger OnValueChanged once more.
-                this.Value = ((ModelItem)this.Value).GetCurrentValue();
-                return;
-            }
-
-            if (this.DataTemplateName != LabelTemplate && !this.IsBoxOnly)
-            {
-                this.DataTemplateName = LabelTemplate;
-            }
-
-            if (this.DisplayHintText)
-            {
-                this.Text = string.Empty;
-                return;
-            }
-            if (this.ValueType == null)
-            {
-                return;
-            }
-            if (this.ValueType.IsValueType)
-            {
-                if (this.Value == null)
-                {
-                    this.Value = Activator.CreateInstance(this.ValueType);
-                }
-            }
-            if (this.Value == null)
-            {
-                this.Text = Null;
-            }
-            else if ((this.ValueType == typeof(string)) && string.Equals(this.Value, String.Empty))
-            {
-                this.Text = Empty;
-            }
-            else
-            {
-                TypeConverter converter = XamlUtilities.GetConverter(this.ValueType);
-                Fx.Assert(converter != null, "TypeConverter is not available");
-                try
-                {
-                    this.Text = converter.ConvertToString(this.Value);
-                }
-                catch (ArgumentException)
-                {
-                    this.Text = this.Value.ToString();
-                }
-            }
-        }
-
-        public void OnValueTypeChanged()
-        {
-            if (this.ValueType == null)
-            {
-                return;
-            }
-            bool isBool = this.ValueType == typeof(bool);
-            bool isEnum = this.ValueType.IsEnum;
-            if (isBool || isEnum)
-            {
-                this.ComboBoxVisibility = Visibility.Visible;
-                this.TextBoxVisibility = Visibility.Collapsed;
-                this.ComboBoxIsEditable = false;
-                if (isBool)
-                {
-                    this.ComboBoxItems = new ObservableCollection<string> { "True", "False" };
-                }
-                else
-                {
-                    this.ComboBoxItems = new ObservableCollection<string>(Enum.GetNames(this.ValueType).ToList());
-                }
-            }
-            else if (this.ValueType.IsValueType)
-            {
-                this.ComboBoxVisibility = Visibility.Collapsed;
-                this.TextBoxVisibility = Visibility.Visible;
-                this.ComboBoxIsEditable = false;
-            }
-            else
-            {
-                this.ComboBoxVisibility = Visibility.Visible;
-                this.TextBoxVisibility = Visibility.Collapsed;
-                this.ComboBoxIsEditable = true;
-                this.ComboBoxItems = new ObservableCollection<string> { Null };
-                if (this.ValueType == typeof(string))
-                {
-                    this.ComboBoxItems.Add(Empty);
-                }
-            }
-            OnValueChanged();
-        }
-
-        public void SaveOldText()
-        {
-            this.oldText = this.Text;
-        }
-
-        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes",
-            Justification = "If conversion fails, the exception type is System.Exception.So we must catch all types of exceptions here.")]
-        [SuppressMessage("Reliability", "Reliability108:IsFatalRule",
-            Justification = "Catch all exceptions to prevent crash.")]
-        bool CommitChanges()
-        {
-            object result = null;
-
-            try
-            {
-                result = ResolveInputText();
-            }
-            catch
-            {
-                // ---- all
-                Fx.Assert(false, "Result should have been valid. Preview event handler should have handled the validation.");
-                return false;
-            }
-
-            this.Value = result;
-            if (this.DataTemplateName != CaseKeyBoxViewModel.LabelTemplate && !this.IsBoxOnly)
-            {
-                // this is for the case when setting this.Value to null. It looks like
-                // OnValueChanged won't get called because NULL is a default value for
-                // the CaseKeyBox instance in SwitchDesigner.
-                this.DataTemplateName = CaseKeyBoxViewModel.LabelTemplate;
-            }
-            this.View.OnValueCommitted();
-
-            return true;
-        }
-
-        object ResolveInputText()
-        {
-            object result = null;
-            if (this.ValueType == typeof(string))
-            {
-                if (this.Text.Equals(Null))
-                {
-                    result = null;
-                }
-                else if (this.Text.Equals(Empty))
-                {
-                    result = string.Empty;
-                }
-                else
-                {
-                    result = this.Text;
-                }
-            }
-            else if (!this.ValueType.IsValueType && this.Text.Equals(Null))
-            {
-                result = null;
-            }
-            else
-            {
-                TypeConverter converter = XamlUtilities.GetConverter(this.ValueType);
-                Fx.Assert(converter != null, "TypeConverter is not available");
-
-                if (!converter.CanConvertFrom(typeof(string)) || !converter.CanConvertTo(typeof(string)))
-                {
-                    throw FxTrace.Exception.AsError(new NotSupportedException(SR.NotSupportedCaseKeyStringConversion));
-                }
-
-                result = converter.ConvertFromString(this.Text);
-                // See if the result can be converted back to a string.
-                // For example, we have a enum Color {Black, White}.
-                // String "3" can be converted to integer 3, but integer 3
-                // cannot be converted back to a valid string for enum Color.
-                // In this case, we disallow string "3".
-                converter.ConvertToString(result);
-            }
-
-            string reason;
-            if (this.CaseKeyValidationCallback != null && !this.CaseKeyValidationCallback(result, out reason))
-            {
-                throw FxTrace.Exception.AsError(new ArgumentException(reason));
-            }
-
-            return result;
-        }
-
-        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes",
-            Justification = "If conversion fails, the exception type is System.Exception.So we must catch all types of exceptions here.")]
-        [SuppressMessage("Reliability", "Reliability108:IsFatalRule",
-            Justification = "Catch all exceptions to prevent crash.")]
-        public bool CanResolveInputText(out string reason)
-        {
-            reason = string.Empty;
-            try
-            {
-                ResolveInputText();
-                return true;
-            }
-            catch (Exception e)
-            {
-                reason = e.Message;
-                return false;
-            }
-        }
-
-        public bool TextHasBeenChanged()
-        {
-            string normalizedOldText = this.oldText;
-            string normalizedNewText = this.Text;
-            
-            // Tricky: this.DisplayHintText = false => This CaseKeyBox is in CaseDesigner
-            // Here, when changing value of string value type from "(empty)" to "", we must
-            // consider the text hasn't been changed, such that we don't do commit-change.
-            // We normalize the strings for empty-string situation before we do comparison.
-            if (this.ValueType == typeof(string) && !this.DisplayHintText)
-            {
-                normalizedOldText = normalizedOldText == Empty ? string.Empty : normalizedOldText;
-                normalizedNewText = normalizedNewText == Empty ? string.Empty : normalizedNewText;
-            }
-
-            return normalizedOldText != normalizedNewText;
-        }
-
-        ICaseKeyBoxView View { get; set; }
-
-        bool DisplayHintText
-        {
-            get { return this.View.DisplayHintText; }
-        }
-        
-        object Value
-        {
-            get { return this.View.Value; }
-            set { this.View.Value = value; }
-        }
-
-        Type ValueType
-        {
-            get { return this.View.ValueType; }
-        }
-
-        CaseKeyValidationCallbackDelegate CaseKeyValidationCallback
-        {
-            get { return this.View.CaseKeyValidationCallback;  }
-        }
-
-        public void ResetText()
-        {
-            this.Text = string.Empty;
-            this.oldText = string.Empty;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBox.xaml.cs
deleted file mode 100644 (file)
index 50fc58a..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Input;
-    using System.Windows.Threading;
-
-    partial class CaseKeyBox : UserControl, ICaseKeyBoxView
-    {
-        public static readonly DependencyProperty DisplayHintTextProperty =
-            DependencyProperty.Register("DisplayHintText", typeof(bool), typeof(CaseKeyBox));
-
-        public static readonly DependencyProperty LabelTextProperty =
-          DependencyProperty.Register("LabelText", typeof(string), typeof(CaseKeyBox), new UIPropertyMetadata(string.Empty));
-
-        public static readonly DependencyProperty ValueProperty =
-            DependencyProperty.Register("Value", typeof(object), typeof(CaseKeyBox), new PropertyMetadata(OnValueChanged));
-
-        public static readonly DependencyProperty ValueTypeProperty =
-            DependencyProperty.Register("ValueType", typeof(Type), typeof(CaseKeyBox), new PropertyMetadata(OnValueTypeChanged));
-        
-        public static RoutedEvent ValueCommittedEvent =
-            EventManager.RegisterRoutedEvent("ValueCommitted", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CaseKeyBox));
-
-        public static RoutedEvent EditCancelledEvent =
-            EventManager.RegisterRoutedEvent("EditCancelled", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CaseKeyBox));
-
-        public static readonly DependencyProperty CaseKeyValidationCallbackProperty =
-            DependencyProperty.Register("CaseKeyValidationCallback", typeof(CaseKeyValidationCallbackDelegate), typeof(CaseKeyBox));
-
-        public static readonly DependencyProperty ErrorCallbackProperty =
-            DependencyProperty.Register("ErrorCallback", typeof(Action<CaseKeyBox>), typeof(CaseKeyBox));
-
-        public static readonly DependencyProperty CommitExplicitlyProperty =
-            DependencyProperty.Register("CommitExplicitly", typeof(bool), typeof(CaseKeyBox), new PropertyMetadata(false));
-
-        Control visibleBox;
-
-
-        public CaseKeyBox()
-        {
-            this.ViewModel = new CaseKeyBoxViewModel(this);
-            InitializeComponent();
-        }
-
-        public event RoutedEventHandler ValueCommitted
-        {
-            add { AddHandler(ValueCommittedEvent, value); }
-            remove { RemoveHandler(ValueCommittedEvent, value); }
-        }
-
-        public virtual void OnValueCommitted()
-        {
-            RoutedEventArgs args = new RoutedEventArgs();
-            args.RoutedEvent = ValueCommittedEvent;
-            RaiseEvent(args);
-        }
-
-        public event RoutedEventHandler EditCancelled
-        {
-            add { AddHandler(EditCancelledEvent, value); }
-            remove { RemoveHandler(EditCancelledEvent, value); }
-        }
-
-        public virtual void OnEditCancelled()
-        {
-            RoutedEventArgs args = new RoutedEventArgs();
-            args.RoutedEvent = EditCancelledEvent;
-            RaiseEvent(args);
-        }
-
-        public CaseKeyValidationCallbackDelegate CaseKeyValidationCallback
-        {
-            get { return (CaseKeyValidationCallbackDelegate)GetValue(CaseKeyValidationCallbackProperty); }
-            set { SetValue(CaseKeyValidationCallbackProperty, value); }
-        }
-
-        public Action<CaseKeyBox> ErrorCallback
-        {
-            get { return (Action<CaseKeyBox>)GetValue(ErrorCallbackProperty); }
-            set { SetValue(ErrorCallbackProperty, value); }
-        }
-
-        public bool CommitExplicitly
-        {
-            get { return (bool)GetValue(CommitExplicitlyProperty); }
-            set { SetValue(CommitExplicitlyProperty, value); }
-        }
-
-        public string LabelText
-        {
-            get { return (string)GetValue(LabelTextProperty); }
-            set { SetValue(LabelTextProperty, value); }
-        }
-
-        void DisableKeyboardLostFocus()
-        {
-            if (this.visibleBox != null)
-            {
-                this.visibleBox.LostKeyboardFocus -= OnLostKeyboardFocus;
-            }
-        }
-
-        void EnableKeyboardLostFocus()
-        {
-            if (!this.CommitExplicitly)
-            {
-                if (this.visibleBox != null)
-                {
-                    this.visibleBox.LostKeyboardFocus += OnLostKeyboardFocus;
-                }
-            }
-        }
-
-        void ReportError(string errorMessage)
-        {
-            // Invoking error message box will cause LostFocus of the control.
-            // Thus we need to disable LostFocus first and then add the handlers back.
-            DisableKeyboardLostFocus();
-            ErrorReporting.ShowErrorMessage(errorMessage);
-
-            this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (Action)(() =>
-            {
-                if (this.ErrorCallback != null)
-                {
-                    this.ErrorCallback(this);
-                    this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (Action)(() =>
-                    {
-                        RegainFocus();
-                        EnableKeyboardLostFocus();
-                    }));
-                }
-                else
-                {
-                    RegainFocus();
-                    EnableKeyboardLostFocus();
-                }
-            }));
-        }
-
-        void OnBoxMouseUp(object sender, MouseButtonEventArgs e)
-        {
-            // disable the context menu for textbox and combobox
-            if (e.ChangedButton == MouseButton.Right && e.RightButton == MouseButtonState.Released)
-            {
-                e.Handled = true;
-            }
-        }
-
-        #region ICaseKeyBoxView Implementation
-
-        public bool DisplayHintText
-        {
-            get { return (bool)GetValue(DisplayHintTextProperty); }
-            set { SetValue(DisplayHintTextProperty, value); }
-        }
-
-        public object Value
-        {
-            get { return (object)GetValue(ValueProperty); }
-            set { SetValue(ValueProperty, value); }
-        }
-
-        public Type ValueType
-        {
-            get { return (Type)GetValue(ValueTypeProperty); }
-            set { SetValue(ValueTypeProperty, value); }
-        }
-
-        public void RegainFocus()
-        {
-            if (this.visibleBox != null)
-            {
-                Keyboard.Focus((IInputElement)this.visibleBox);
-            }
-        }
-
-        #endregion
-
-        #region Delegating Event Handlers
-
-        public CaseKeyBoxViewModel ViewModel { get; set; }
-
-        static void OnValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
-        {
-            ((CaseKeyBox)sender).ViewModel.OnValueChanged();
-        }
-
-        static void OnValueTypeChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
-        {
-            ((CaseKeyBox)sender).ViewModel.OnValueTypeChanged();
-        }
-
-        void OnLabelGotFocus(object sender, RoutedEventArgs e)
-        {
-            this.ViewModel.OnLabelGotFocus();
-            e.Handled = true;
-        }
-
-        void OnLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
-        {
-            e.Handled = true;
-
-            if (ComboBoxHelper.ShouldFilterUnnecessaryComboBoxEvent(sender as ComboBox))
-            {
-                return;
-            }
-
-            CommitChanges();
-        }
-
-        public bool CommitChanges()
-        {
-            UpdateSource(this.visibleBox);
-            if (this.CommitExplicitly || this.ViewModel.TextHasBeenChanged())
-            {
-                string reason = null;
-                if (!this.ViewModel.CanResolveInputText(out reason))
-                {
-                    ReportError(reason);
-                    return false;
-                }
-                else
-                {
-                    return this.ViewModel.OnLostFocus();
-                }
-            }
-            else
-            {
-                CancelChanges();
-                return false;
-            }
-        }
-
-        public void CancelChanges()
-        {
-            DisableKeyboardLostFocus();
-            this.ViewModel.OnEscapePressed(); // simulate cancel
-        }
-
-        void OnBoxLoaded(object sender, RoutedEventArgs e)
-        {
-            UIElement box = (UIElement)sender;
-            ComboBox comboBox = box as ComboBox;
-            if (comboBox != null && comboBox.IsVisible)
-            {
-                ComboBoxHelper.SynchronizeComboBoxSelection(comboBox, this.ViewModel.Text);
-            }
-            if (box.IsVisible)
-            {
-                box.Focus();
-            }
-            Control control = sender as Control;
-            if (control != null && control.Visibility == Visibility.Visible)
-            {
-                this.visibleBox = control;
-                EnableKeyboardLostFocus();
-            }
-
-            this.ViewModel.SaveOldText();
-        }
-
-        void OnBoxUnloaded(object sender, RoutedEventArgs e)
-        {
-            if (this.visibleBox != null)
-            {
-                DisableKeyboardLostFocus();
-                this.visibleBox = null;
-            }
-        }
-
-        void OnBoxKeyDown(object sender, KeyEventArgs e)
-        {
-            if (!CommitExplicitly)
-            {
-                if (e.Key == Key.Escape)
-                {
-                    e.Handled = true;
-                    CancelChanges();
-                }
-                else if (e.Key == Key.Enter)
-                {
-                    e.Handled = true;
-                    CommitChanges();
-                }
-            }
-        }
-
-        void UpdateSource(object sender)
-        {
-            if (sender is TextBox)
-            {
-                BindingExpression binding = ((TextBox)sender).GetBindingExpression(TextBox.TextProperty);
-                if (binding != null)
-                {
-                    binding.UpdateSource();
-                }
-            }
-            else if (sender is ComboBox)
-            {
-                BindingExpression binding = ((ComboBox)sender).GetBindingExpression(ComboBox.TextProperty);
-                if (binding != null)
-                {
-                    binding.UpdateSource();
-                }
-            }
-        }
-
-        #endregion
-
-        public void ResetText()
-        {
-            this.ViewModel.ResetText();
-        }
-    }
-
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBoxIsEnabledConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseKeyBoxIsEnabledConverter.cs
deleted file mode 100644 (file)
index 64ddc16..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Windows.Data;
-    using System.Windows;
-    using System.Globalization;
-
-    class CaseKeyBoxIsEnabledConverter : IMultiValueConverter
-    {
-        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
-        {
-            bool isReadOnly = (bool)values[0];
-            bool showExpanded = (bool)values[1];
-
-            if (isReadOnly)
-            {
-                return false;
-            }
-            else
-            {
-                return showExpanded;
-            }
-        }
-
-        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotImplementedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseLabelVisibilityConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CaseLabelVisibilityConverter.cs
deleted file mode 100644 (file)
index 19a28fa..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Globalization;
-    using System.Windows;
-    using System.Windows.Data;
-
-    class CaseLabelVisibilityConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            bool isDefaultCase = (bool)value;
-
-            if (isDefaultCase)
-            {
-                return Visibility.Collapsed;
-            }
-            else
-            {
-                return Visibility.Visible;
-            }
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotImplementedException());
-        }
-
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CatchDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CatchDesigner.xaml.cs
deleted file mode 100644 (file)
index 0cf9729..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Annotations;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Windows;
-    using System.Windows.Input;
-    using Microsoft.Activities.Presentation;
-    
-
-    /// <summary>
-    /// Interaction logic for CatchDesigner.xaml
-    /// </summary>
-    partial class CatchDesigner
-    {
-        string exceptionTypeShortName = null;
-        string exceptionTypeFullName = null;
-
-        public CatchDesigner()
-        {
-            InitializeComponent();
-            this.DragHandle = null;
-            this.Loaded += (sender, e) =>
-            {
-                Selection selection = this.Context.Items.GetValue<Selection>();
-                if (selection != null)
-                {
-                    ModelItem primarySelection = selection.PrimarySelection;
-                    this.ExpandState = TryCatchDesigner.IsDescendantOfCatch(this.ModelItem, primarySelection);
-
-                    if (this.ExpandState)
-                    {
-                        // If current focus is at another part, we need to focus this designer
-                        // to trigger selection changed, then this part will expand and another
-                        // expanded part will collapse. Then we focus on the activity it contains
-                        // if there is one.
-                        this.ModelItem.Highlight();
-                        if (this.ModelItem != primarySelection && primarySelection.View != null)
-                        {
-                            primarySelection.Highlight();
-                        }
-                    }
-                }
-            };
-        }
-
-        internal static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(Catch<>);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CatchDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Action"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-        }
-
-        public string ExceptionTypeShortName
-        {
-            get
-            {
-                if (this.exceptionTypeShortName == null)
-                {
-                    this.exceptionTypeShortName = TypeNameHelper.GetDisplayName((Type)this.ModelItem.Properties["ExceptionType"].Value.GetCurrentValue(), false);
-                }
-                return this.exceptionTypeShortName;
-            }
-        }
-
-        public string ExceptionTypeFullName
-        {
-            get
-            {
-                if (this.exceptionTypeFullName == null)
-                {
-                    this.exceptionTypeFullName = TypeNameHelper.GetDisplayName((Type)this.ModelItem.Properties["ExceptionType"].Value.GetCurrentValue(), true);
-                }
-                return this.exceptionTypeFullName;
-            }
-        }
-
-        protected override void OnMouseDown(MouseButtonEventArgs e)
-        {
-            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
-            {
-                SwitchTryCatchDesignerHelper.MakeParentRootDesigner<TryCatchDesigner>(this);
-                e.Handled = true;
-            }
-            else if (e.LeftButton == MouseButtonState.Pressed)
-            {
-                Keyboard.Focus(this);
-                e.Handled = true;
-                this.Designer.ShouldStillAllowRubberBandEvenIfMouseLeftButtonDownIsHandled = true;
-            }
-            else if (e.RightButton == MouseButtonState.Pressed)
-            {
-                if (this.ShowExpanded)
-                {
-                    Keyboard.Focus(this);
-                }
-                e.Handled = true;
-            }
-        }
-
-        protected override void OnMouseUp(MouseButtonEventArgs e)
-        {
-            // avoid context menu upon right-click when it's collapsed
-            if (!this.ShowExpanded && e.RightButton == MouseButtonState.Released)
-            {
-                e.Handled = true;
-            }
-        }
-
-        protected override string GetAutomationIdMemberName()
-        {
-            return PropertyNames.ExceptionType;
-        }
-
-        void OnAddAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
-            {
-                ContextMenuUtilities.OnAddAnnotationCommandCanExecute(e, this.Context, this.FindTryCatch());
-            }
-        }
-
-        void OnAddAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            ContextMenuUtilities.OnAddAnnotationCommandExecuted(e, this.FindTryCatch());
-        }
-
-        void OnEditAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
-            {
-                // call the same method as delete annotation command
-                ContextMenuUtilities.OnDeleteAnnotationCommandCanExecute(e, this.Context, this.FindTryCatch());
-            }
-        }
-
-        void OnEditAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            ContextMenuUtilities.OnEditAnnotationCommandExecuted(e, this.FindTryCatch());
-        }
-
-        void OnDeleteAnnotationCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            if (EditingContextUtilities.GetSingleSelectedModelItem(this.Context) == this.ModelItem)
-            {
-                ContextMenuUtilities.OnDeleteAnnotationCommandCanExecute(e, this.Context, this.FindTryCatch());
-            }
-        }
-
-        void OnDeleteAnnotationCommandExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            ContextMenuUtilities.OnDeleteAnnotationCommandExecuted(e, this.FindTryCatch());
-        }
-
-        private ModelItem FindTryCatch()
-        {
-            return this.ModelItem.FindParent((ModelItem item) =>
-                {
-                    return item.ItemType == typeof(TryCatch);
-                });
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ComboBoxHelper.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ComboBoxHelper.cs
deleted file mode 100644 (file)
index 7b89f70..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Windows.Controls;
-
-    static class ComboBoxHelper
-    {
-        public static bool ShouldFilterUnnecessaryComboBoxEvent(ComboBox comboBox)
-        {
-            return comboBox != null && comboBox.IsDropDownOpen;
-        }
-
-        public static void SynchronizeComboBoxSelection(ComboBox comboBox, string value)
-        {
-            foreach (string item in comboBox.Items)
-            {
-                if (string.Equals(item, value))
-                {
-                    comboBox.SelectedItem = item;
-                    return;
-                }
-            }
-            comboBox.SelectedIndex = -1;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CompensableActivityDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/CompensableActivityDesigner.xaml.cs
deleted file mode 100644 (file)
index 1447a4f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Statements;
-
-    using System.ComponentModel;
-
-    /// <summary>
-    /// Interaction logic for TryCatchDesigner.xaml
-    /// </summary>
-    partial class CompensableActivityDesigner
-    {
-        public CompensableActivityDesigner()
-        {
-            InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(CompensableActivity);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CompensableActivityDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("CompensationHandler"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("ConfirmationHandler"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("CancellationHandler"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ConnectionPointType.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ConnectionPointType.cs
deleted file mode 100644 (file)
index 0e1b8fd..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    public enum ConnectionPointType
-    {        
-        Default,
-        Incoming,
-        Outgoing,
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DelegateArgumentsValueEditor.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DelegateArgumentsValueEditor.cs
deleted file mode 100644 (file)
index 33f9cd6..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.PropertyEditing;
-
-    internal class DelegateArgumentsValueEditor : DialogPropertyValueEditor
-    {
-        public DelegateArgumentsValueEditor()
-        {
-            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("DelegateArguments_InlineTemplate");
-        }
-
-        public override void ShowDialog(PropertyValue propertyValue, Windows.IInputElement commandSource)
-        {
-            ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = new ModelPropertyEntryToOwnerActivityConverter();
-            ModelItem parentModelItem = (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), true, null);
-            EditingContext context = ((IModelTreeItem)parentModelItem).ModelTreeManager.Context;
-            ModelItemDictionary inputData = parentModelItem.Properties[propertyValue.ParentProperty.PropertyName].Dictionary;
-            DynamicArgumentDesignerOptions options = new DynamicArgumentDesignerOptions();
-            options.Title = propertyValue.ParentProperty.DisplayName;
-
-            DynamicArgumentDialog.ShowDialog(parentModelItem, inputData, context, parentModelItem.View, options);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DesignerMetadata.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DesignerMetadata.cs
deleted file mode 100644 (file)
index b4cf11a..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.Activities.Validation;
-    using System.Collections.ObjectModel;
-    using System.ComponentModel;
-    using System.ServiceModel;
-    using System.ServiceModel.Activities;
-    using System.ServiceModel.Activities.Presentation;
-    using System.ServiceModel.Activities.Presentation.Converters;
-    using System.ServiceModel.Presentation;
-    using System.Xml.Linq;
-
-    public class DesignerMetadata : IRegisterMetadata
-    {
-        // Called by the designer to register any design-time metadata.
-        //
-        // Be aware of the accidential performance impact when adding things into this method.
-        // In particular, pay attention to calls that will lead to loading extra assemblies.
-        //
-        public void Register()
-        {
-            AttributeTableBuilder builder = new AttributeTableBuilder();
-
-            //shared component
-            builder.AddCustomAttributes(typeof(Collection<Constraint>), new BrowsableAttribute(false));
-            builder.AddCustomAttributes(typeof(string), new EditorReuseAttribute(false));
-            builder.AddCustomAttributes(typeof(ActivityAction), new EditorReuseAttribute(false));
-            builder.AddCustomAttributes(typeof(XName), new EditorReuseAttribute(false));
-
-            //Flowchart activities
-            FlowchartDesigner.RegisterMetadata(builder);
-            FlowSwitchDesigner.RegisterMetadata(builder);
-            FlowDecisionDesigner.RegisterMetadata(builder);
-
-            // Messaging activities
-            ServiceDesigner.RegisterMetadata(builder);
-
-            // Registering inline for designers for InitializeCorrelation, Send, Receive, SendReply, ReceiveReply activities to avoid calling
-            // their static constructors. This will avoid instantiating the ResourceDictionary for their PropertyValueEditors during designer load.
-            builder.AddCustomAttributes(typeof(Send), new DesignerAttribute(typeof(SendDesigner)));
-            builder.AddCustomAttributes(typeof(Send), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-
-            builder.AddCustomAttributes(typeof(Receive), new DesignerAttribute(typeof(ReceiveDesigner)));
-            builder.AddCustomAttributes(typeof(Receive), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-
-            builder.AddCustomAttributes(typeof(SendReply), new FeatureAttribute(typeof(SendReplyValidationFeature)));
-            builder.AddCustomAttributes(typeof(SendReply), new DesignerAttribute(typeof(SendReplyDesigner)));
-            builder.AddCustomAttributes(typeof(SendReply), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-            CutCopyPasteHelper.AddDisallowedTypeForCopy(typeof(SendReply));
-
-            builder.AddCustomAttributes(typeof(ReceiveReply), new FeatureAttribute(typeof(ReceiveReplyValidationFeature)));
-            builder.AddCustomAttributes(typeof(ReceiveReply), new DesignerAttribute(typeof(ReceiveReplyDesigner)));
-            builder.AddCustomAttributes(typeof(ReceiveReply), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-            CutCopyPasteHelper.AddDisallowedTypeForCopy(typeof(ReceiveReply));
-
-            builder.AddCustomAttributes(typeof(InitializeCorrelation), new DesignerAttribute(typeof(InitializeCorrelationDesigner)));
-            builder.AddCustomAttributes(typeof(InitializeCorrelation), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-
-            TransactedReceiveScopeDesigner.RegisterMetadata(builder);
-            CorrelationScopeDesigner.RegisterMetadata(builder);
-
-            //Procedural activities
-            AssignDesigner.RegisterMetadata(builder);
-            IfElseDesigner.RegisterMetadata(builder);
-            InvokeMethodDesigner.RegisterMetadata(builder);
-            DoWhileDesigner.RegisterMetadata(builder);
-            WhileDesigner.RegisterMetadata(builder);
-            ForEachDesigner.RegisterMetadata(builder);
-            TryCatchDesigner.RegisterMetadata(builder);
-            CatchDesigner.RegisterMetadata(builder);
-            ParallelDesigner.RegisterMetadata(builder);
-            SequenceDesigner.RegisterMetadata(builder);
-            SwitchDesigner.RegisterMetadata(builder);
-            CaseDesigner.RegisterMetadata(builder);
-
-            //Compensation/Transaction
-            CancellationScopeDesigner.RegisterMetadata(builder);
-            CompensableActivityDesigner.RegisterMetadata(builder);
-            TransactionScopeDesigner.RegisterMetadata(builder);
-
-            //Misc activities            
-            PickDesigner.RegisterMetadata(builder);
-            PickBranchDesigner.RegisterMetadata(builder);
-            WriteLineDesigner.RegisterMetadata(builder);
-            NoPersistScopeDesigner.RegisterMetadata(builder);
-
-            InvokeDelegateDesigner.RegisterMetadata(builder);
-
-            // StateMachine
-            StateMachineDesigner.RegisterMetadata(builder);
-            StateDesigner.RegisterMetadata(builder);
-            TransitionDesigner.RegisterMetadata(builder);
-
-            builder.AddCustomAttributes(typeof(AddToCollection<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
-            builder.AddCustomAttributes(typeof(RemoveFromCollection<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
-            builder.AddCustomAttributes(typeof(ClearCollection<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
-            builder.AddCustomAttributes(typeof(ExistsInCollection<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
-
-            builder.AddCustomAttributes(typeof(AddToCollection<>), new DefaultTypeArgumentAttribute(typeof(int)));
-            builder.AddCustomAttributes(typeof(RemoveFromCollection<>), new DefaultTypeArgumentAttribute(typeof(int)));
-            builder.AddCustomAttributes(typeof(ClearCollection<>), new DefaultTypeArgumentAttribute(typeof(int)));
-            builder.AddCustomAttributes(typeof(ExistsInCollection<>), new DefaultTypeArgumentAttribute(typeof(int)));
-
-            MetadataStore.AddAttributeTable(builder.CreateTable());
-
-            MorphHelper.AddPropertyValueMorphHelper(typeof(InArgument<>), MorphHelpers.ArgumentMorphHelper);
-            MorphHelper.AddPropertyValueMorphHelper(typeof(OutArgument<>), MorphHelpers.ArgumentMorphHelper);
-            MorphHelper.AddPropertyValueMorphHelper(typeof(InOutArgument<>), MorphHelpers.ArgumentMorphHelper);
-            MorphHelper.AddPropertyValueMorphHelper(typeof(ActivityAction<>), MorphHelpers.ActivityActionMorphHelper);
-            MorphHelper.AddPropertyValueMorphHelper(typeof(ActivityFunc<,>), MorphHelpers.ActivityFuncMorphHelper);
-
-            // There is no need to keep an reference to this delayed worker since the AppDomain event handler will do it.
-            RegisterMetadataDelayedWorker delayedWorker = new RegisterMetadataDelayedWorker();
-            delayedWorker.RegisterMetadataDelayed("System.Workflow.Runtime", InteropDesigner.RegisterMetadata);
-            delayedWorker.RegisterMetadataDelayed("System.ServiceModel", RegisterMetadataForMessagingActivitiesSearchMetadata);
-            delayedWorker.RegisterMetadataDelayed("System.ServiceModel", RegisterMetadataForMessagingActivitiesPropertyEditors);
-            delayedWorker.WorkNowIfApplicable();
-        }
-
-        private static void RegisterMetadataForMessagingActivitiesPropertyEditors(AttributeTableBuilder builder)
-        {
-            EndpointDesigner.RegisterMetadata(builder);
-
-            builder.AddCustomAttributes(typeof(InArgument<CorrelationHandle>), new EditorReuseAttribute(false));
-            builder.AddCustomAttributes(typeof(InArgument<Uri>), new EditorReuseAttribute(false));
-            builder.AddCustomAttributes(typeof(MessageQuerySet), PropertyValueEditor.CreateEditorAttribute(typeof(CorrelatesOnValueEditor)));
-        }
-
-        private static void RegisterMetadataForMessagingActivitiesSearchMetadata(AttributeTableBuilder builder)
-        {
-            builder.AddCustomAttributes(typeof(SendMessageContent),
-                new SearchableStringConverterAttribute(typeof(SendMessageContentSearchableStringConverter)));
-            builder.AddCustomAttributes(typeof(SendParametersContent),
-                new SearchableStringConverterAttribute(typeof(SendParametersContentSearchableStringConverter)));
-            builder.AddCustomAttributes(typeof(ReceiveMessageContent),
-                new SearchableStringConverterAttribute(typeof(ReceiveMessageContentSearchableStringConverter)));
-            builder.AddCustomAttributes(typeof(ReceiveParametersContent),
-                new SearchableStringConverterAttribute(typeof(ReceiveParametersContentSearchableStringConverter)));
-            builder.AddCustomAttributes(typeof(XPathMessageQuery),
-                new SearchableStringConverterAttribute(typeof(XPathMessageQuerySearchableStringConverter)));
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DisplayNameConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DisplayNameConverter.cs
deleted file mode 100644 (file)
index 408d49a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Windows.Data;
-
-    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Justification = "Used in XAML")]
-    internal sealed class DisplayNameConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            string name = value as string;
-            if (name == null)
-            {
-                return SR.NullName;
-            }
-            else if (name == string.Empty)
-            {
-                return SR.EmptyName;
-            }
-
-            return name;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotImplementedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DoWhileDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DoWhileDesigner.xaml.cs
deleted file mode 100644 (file)
index 011d3cb..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-
-    /// <summary>
-    /// Interaction logic for WhileDesigner.xaml
-    /// </summary>
-    partial class DoWhileDesigner
-    {
-        public DoWhileDesigner()
-        {
-            InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(DoWhile);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(DoWhileDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooser.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooser.xaml.cs
deleted file mode 100644 (file)
index 16b9b3a..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.ComponentModel;
-    using System.Windows.Controls;
-
-    internal partial class DynamicActivityPropertyChooser : UserControl
-    {
-        private DynamicActivityPropertyChooserViewModel model;
-
-        public DynamicActivityPropertyChooser()
-        {
-            this.Model = new DynamicActivityPropertyChooserViewModel();
-
-            this.InitializeComponent();
-
-            this.Model.PropertyChanged += new PropertyChangedEventHandler(this.OnModelPropertyChanged);
-            this.comboBox.DropDownOpened += new EventHandler(this.OnComboBoxDropDownOpened);
-        }
-
-        public event SelectedPropertyNameChangedEventHandler SelectedPropertyNameChanged;
-
-        public DynamicActivityPropertyChooserViewModel Model
-        {
-            get
-            {
-                return this.model;
-            }
-
-            set
-            {
-                this.model = value;
-            }
-        }
-
-        public ModelItemCollection Properties
-        {
-            set
-            {
-                this.Model.Properties = value;
-            }
-        }
-
-        public Predicate<DynamicActivityProperty> Filter
-        {
-            set
-            {
-                this.Model.Filter = value;
-            }
-        }
-
-        public string SelectedPropertyName
-        {
-            get
-            {
-                return this.Model.SelectedPropertyName;
-            }
-
-            set
-            {
-                this.Model.SelectedPropertyName = value;
-            }
-        }
-
-        public bool IsUpdatingDropDownItems
-        {
-            get
-            {
-                return this.Model.IsUpdatingDropDownItems;
-            }
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            this.DataContext = this.Model;
-            base.OnInitialized(e);
-        }
-
-        private void OnComboBoxDropDownOpened(object sender, EventArgs e)
-        {
-            this.Model.UpdateDropDownItems();
-        }
-
-        private void OnModelPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            if (e.PropertyName == "SelectedPropertyName")
-            {
-                if (this.SelectedPropertyNameChanged != null)
-                {
-                    this.SelectedPropertyNameChanged(this, new SelectedPropertyNameChangedEventArgs(this.Model.SelectedPropertyName));
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooserViewModel.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyChooserViewModel.cs
deleted file mode 100644 (file)
index 59284fd..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Collections.Generic;
-    using System.Collections.ObjectModel;
-
-    internal class DynamicActivityPropertyChooserViewModel : ViewModel
-    {
-        private string selectedPropertyName;
-        private ModelItemCollection properties;
-        private Predicate<DynamicActivityProperty> filter;
-
-        private ReadOnlyCollection<DynamicActivityProperty> dropDownItems;
-
-        public ModelItemCollection Properties
-        {
-            private get
-            {
-                return this.properties;
-            }
-
-            set
-            {
-                this.properties = value;
-            }
-        }
-
-        public Predicate<DynamicActivityProperty> Filter
-        {
-            private get
-            {
-                return this.filter;
-            }
-
-            set
-            {
-                this.filter = value;
-            }
-        }
-
-        public ReadOnlyCollection<DynamicActivityProperty> DropDownItems
-        {
-            get
-            {
-                if (this.dropDownItems == null)
-                {
-                    this.dropDownItems = new ReadOnlyCollection<DynamicActivityProperty>(new List<DynamicActivityProperty>());
-                }
-
-                return this.dropDownItems;
-            }
-
-            private set
-            {
-                if (this.dropDownItems != value)
-                {
-                    this.dropDownItems = value;
-                    NotifyPropertyChanged("DropDownItems");
-                }
-            }
-        }
-
-        public bool IsUpdatingDropDownItems { get; private set; }
-
-        public string SelectedPropertyName
-        {
-            get
-            {
-                return this.selectedPropertyName;
-            }
-
-            set
-            {
-                if (this.selectedPropertyName != value)
-                {
-                    this.selectedPropertyName = value;
-
-                    this.UpdateDropDownItems();
-
-                    this.NotifyPropertyChanged("SelectedPropertyName");
-                }
-            }
-        }
-
-        public void UpdateDropDownItems()
-        {
-            if (this.IsUpdatingDropDownItems)
-            {
-                return;
-            }
-
-            List<DynamicActivityProperty> list = new List<DynamicActivityProperty>();
-            bool currentSelectionFound = false;
-
-            if (this.Properties != null)
-            {
-                foreach (ModelItem modelItem in this.Properties)
-                {
-                    DynamicActivityProperty property = modelItem.GetCurrentValue() as DynamicActivityProperty;
-
-                    if (property != null)
-                    {
-                        if (this.Filter == null || this.Filter(property))
-                        {
-                            DynamicActivityProperty clone = new DynamicActivityProperty();
-                            clone.Name = property.Name;
-                            clone.Type = property.Type;
-                            list.Add(clone);
-                            if (StringComparer.Ordinal.Equals(this.SelectedPropertyName, property.Name))
-                            {
-                                currentSelectionFound = true;
-                            }
-                        }
-                    }
-                }
-            }
-
-            string savedSelectedPropertyName = this.SelectedPropertyName;
-            if (!currentSelectionFound)
-            {
-                if (!string.IsNullOrEmpty(this.SelectedPropertyName))
-                {
-                    DynamicActivityProperty unresolvedProperty = new DynamicActivityProperty();
-                    unresolvedProperty.Name = this.SelectedPropertyName;
-                    list.Add(unresolvedProperty);
-                }
-            }
-
-            list.Sort(new DynamicaActivityPropertyComparer());
-
-            this.IsUpdatingDropDownItems = true;
-            this.DropDownItems = new ReadOnlyCollection<DynamicActivityProperty>(list);
-            this.SelectedPropertyName = savedSelectedPropertyName;
-            this.IsUpdatingDropDownItems = false;
-        }
-
-        private class DynamicaActivityPropertyComparer : IComparer<DynamicActivityProperty>
-        {
-            public int Compare(DynamicActivityProperty x, DynamicActivityProperty y)
-            {
-                return string.CompareOrdinal(x.Name, y.Name);
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyToTooltipConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/DynamicActivityPropertyToTooltipConverter.cs
deleted file mode 100644 (file)
index e8e9b83..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Globalization;
-    using System.Windows.Data;
-    using Microsoft.Activities.Presentation;
-
-    internal sealed class DynamicActivityPropertyToTooltipConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            DynamicActivityProperty property = value as DynamicActivityProperty;
-
-            if (property == null)
-            {
-                return null;
-            }
-
-            if (property.Type == null)
-            {
-                return string.Format(CultureInfo.CurrentUICulture, SR.PropertyReferenceNotResolved, property.Name);
-            }
-            else
-            {
-                return TypeNameHelper.GetDisplayName(property.Type, false);
-            }
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotImplementedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemShowExpandedMultiValueConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemShowExpandedMultiValueConverter.cs
deleted file mode 100644 (file)
index 8560c4c..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.View;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Windows;
-    using System.Windows.Data;
-
-    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Justification = "Used in XAML")]
-    internal sealed class ExpandableItemShowExpandedMultiValueConverter : IMultiValueConverter
-    {
-        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
-        {
-            if (values[0] != DependencyProperty.UnsetValue && values[1] != DependencyProperty.UnsetValue)
-            {
-                bool isExpanded = (bool)values[0];
-                bool isPinned = (bool)values[1];
-                bool shouldExpandAll = (bool)values[2];
-                bool shouldCollapseAll = (bool)values[3];
-                ExpandableItemWrapper wrapper = (ExpandableItemWrapper)values[4];
-
-                if ((!shouldExpandAll || isExpanded)
-                    && (!shouldCollapseAll || !isExpanded))
-                {
-                    wrapper.SetPinState(false);
-                }
-
-                return ViewUtilities.ShouldShowExpanded(isExpanded, shouldExpandAll, shouldCollapseAll, wrapper.IsPinned);
-            }
-            else
-            {
-                return false;
-            }
-        }
-
-        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotSupportedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemWrapper.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpandableItemWrapper.cs
deleted file mode 100644 (file)
index eb52aa6..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Model;
-    using System.ComponentModel;
-
-    internal class ExpandableItemWrapper : INotifyPropertyChanged
-    {
-        private bool isExpanded = false;
-        private bool isPinned = false;
-
-        public ExpandableItemWrapper()
-        {
-        }
-
-        public event PropertyChangedEventHandler PropertyChanged;
-
-        public bool IsExpanded
-        {
-            get
-            {
-                return this.isExpanded;
-            }
-
-            set
-            {
-                this.isExpanded = value;
-                this.NotifyPropertyChanged("IsExpanded");
-            }
-        }
-
-        public bool IsPinned
-        {
-            get
-            {
-                return this.isPinned;
-            }
-
-            set
-            {
-                this.isPinned = value;
-                this.NotifyPropertyChanged("IsPinned");
-            }
-        }
-
-        public ModelItem Item
-        {
-            get;
-            set;
-        }
-
-        internal void SetPinState(bool isPinned)
-        {
-            this.isPinned = isPinned;
-        }
-
-        private void NotifyPropertyChanged(string propertyName)
-        {
-            if (this.PropertyChanged != null)
-            {
-                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpressionToExpressionTextConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ExpressionToExpressionTextConverter.cs
deleted file mode 100644 (file)
index 27efb89..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Windows.Media;
-    using System.Windows.Data;
-    using System.Windows;
-    using System.Globalization;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-
-    class ExpressionToExpressionTextConverter : IValueConverter
-    {
-
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            string convertedValue = null;
-            ModelItem valueMI = value as ModelItem;
-            if (valueMI != null)
-            {
-                convertedValue = ExpressionHelper.GetExpressionString(valueMI.GetCurrentValue() as Activity, valueMI.Parent);
-            }
-            return convertedValue;
-        }
-
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotSupportedException());
-        }
-
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericForEachWithBodyFactory.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericForEachWithBodyFactory.cs
deleted file mode 100644 (file)
index c660ee2..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation.Factories
-{
-    using System.Activities.Presentation;
-    using System.Windows;
-
-    public sealed class ForEachWithBodyFactory<T> : IActivityTemplateFactory
-    {
-        public Activity Create(DependencyObject target)
-        {
-            return new System.Activities.Statements.ForEach<T>()
-            {
-                Body = new ActivityAction<T>()
-                {
-                    Argument = new DelegateInArgument<T>()
-                    {
-                        Name = "item"
-                    }
-                }
-            };
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericParallelForEachWithBodyFactory.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/GenericParallelForEachWithBodyFactory.cs
deleted file mode 100644 (file)
index 42b22c0..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation.Factories
-{
-    using System.Activities.Presentation;
-    using System.Windows;
-
-    public sealed class ParallelForEachWithBodyFactory<T> : IActivityTemplateFactory
-    {
-        public Activity Create(DependencyObject target)
-        {
-            return new System.Activities.Statements.ParallelForEach<T>()
-            {
-                Body = new ActivityAction<T>()
-                {
-                    Argument = new DelegateInArgument<T>()
-                    {
-                        Name = "item"
-                    }
-                }
-            };
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/PickWithTwoBranchesFactory.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/PickWithTwoBranchesFactory.cs
deleted file mode 100644 (file)
index d0e3c22..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation.Factories
-{
-    using System.Activities.Presentation;
-    using System.Windows;
-
-    public sealed class PickWithTwoBranchesFactory : IActivityTemplateFactory
-    {
-        public Activity Create(DependencyObject target)
-        {
-            return new System.Activities.Statements.Pick
-            {
-                Branches =
-                {
-                    new System.Activities.Statements.PickBranch
-                    {
-                        DisplayName = "Branch1"
-                    },
-                    new System.Activities.Statements.PickBranch
-                    {
-                        DisplayName = "Branch2"
-                    }
-                }
-            };
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/StateMachineWithInitialStateFactory.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Factories/StateMachineWithInitialStateFactory.cs
deleted file mode 100644 (file)
index 6ed316b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation.Factories
-{
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Windows;
-    using System.Activities.Statements;
-
-    /// <summary>
-    /// The type that is added to the toolbox, which defines the factory method 
-    /// that creates an instance of StateMachine Activity with an initial State.
-    /// </summary>
-    public sealed class StateMachineWithInitialStateFactory : IActivityTemplateFactory
-    {
-        /// <summary>
-        /// Creates an instance of StateMachine Activity with an initial State.
-        /// </summary>
-        /// <param name="target">Not used.</param>
-        /// <returns>An instance of StateMachine Activity with an initial State.</returns>
-        public Activity Create(DependencyObject target)
-        {
-            State state = new State()
-            {
-                DisplayName = StateContainerEditor.DefaultStateDisplayName + "1"
-            };
-            return new StateMachine()
-            {
-                States = { state },
-                InitialState = state
-            };
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FakeRoot.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FakeRoot.cs
deleted file mode 100644 (file)
index 48a04cd..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    class FakeRoot
-    {
-        public StartNode StartNode { get; set; }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FinalState.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FinalState.cs
deleted file mode 100644 (file)
index 681ede8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    /// <summary>
-    /// The type that is added to the toolbox, which is used to create an instance 
-    /// of State with the IsFinal property set to true and the DisplayName property 
-    /// set to "Final".
-    /// </summary>
-    public sealed class FinalState
-    {
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionDesigner.xaml.cs
deleted file mode 100644 (file)
index c992957..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Annotations;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Windows;
-    using System.Windows.Automation.Peers;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Documents;
-    using System.Windows.Media;
-    using Microsoft.Activities.Presentation;
-
-    partial class FlowDecisionDesigner
-    {
-        public static readonly DependencyProperty ExpressionButtonVisibilityProperty =
-            DependencyProperty.Register("ExpressionButtonVisibility", typeof(Visibility), typeof(FlowDecisionDesigner));
-
-        public static readonly DependencyProperty ExpressionButtonColorProperty =
-            DependencyProperty.Register("ExpressionButtonColor", typeof(Brush), typeof(FlowDecisionDesigner));
-
-        static readonly DependencyProperty ShowAllConditionsProperty =
-            DependencyProperty.Register("ShowAllConditions", typeof(bool), typeof(FlowDecisionDesigner),
-            new UIPropertyMetadata(new PropertyChangedCallback(OnShowAllConditionsChanged)));
-
-        bool isPinned;
-        bool expressionShown = false;
-
-        private AnnotationManager annotationManager;
-
-        public FlowDecisionDesigner()
-        {
-            InitializeComponent();
-            this.Loaded += (sender, e) =>
-            {
-                //UnRegistering because of 137896: Inside tab control multiple Loaded events happen without an Unloaded event.
-                this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
-                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
-                OnModelItemPropertyChanged(this.ModelItem, new PropertyChangedEventArgs("Condition"));
-
-                SetupBinding();
-
-                if (this.Context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName.IsLessThan45())
-                {
-                    this.displayNameTextBox.IsReadOnly = true;
-                }
-
-                this.annotationManager.Initialize();
-            };
-            this.Unloaded += (sender, e) =>
-            {
-                this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
-                this.annotationManager.Uninitialize();
-            };
-            this.MouseEnter += (sender, e) =>
-            {
-                Update();
-            };
-            this.MouseLeave += (sender, e) =>
-            {
-                Update();
-            };
-
-            this.InitializeAnnotation();
-        }
-
-        private void InitializeAnnotation()
-        {
-            this.annotationManager = new AnnotationManager(this);
-            this.annotationManager.AnnotationVisualProvider = new FlowDecisionDesignerAnnotationVisualProvider(this);
-        }
-
-        void SetupBinding()
-        {
-            Binding showAllConditionsBinding = new Binding();
-            showAllConditionsBinding.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(FlowchartDesigner), 1);
-            showAllConditionsBinding.Path = new PropertyPath(FlowchartDesigner.ShowAllConditionsProperty);
-            showAllConditionsBinding.Mode = BindingMode.OneWay;
-
-            BindingOperations.SetBinding(this, FlowDecisionDesigner.ShowAllConditionsProperty, showAllConditionsBinding);
-        }
-
-        public Visibility ExpressionButtonVisibility
-        {
-            get { return (Visibility)GetValue(ExpressionButtonVisibilityProperty); }
-            set { SetValue(ExpressionButtonVisibilityProperty, value); }
-        }
-
-        public Brush ExpressionButtonColor
-        {
-            get { return (Brush)GetValue(ExpressionButtonColorProperty); }
-            set { SetValue(ExpressionButtonColorProperty, value); }
-        }
-
-        public bool ExpressionShown
-        {
-            get { return this.expressionShown; }
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(FlowDecision);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(FlowDecisionDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("True"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("False"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Condition"), new HidePropertyInOutlineViewAttribute());
-            builder.AddCustomAttributes(type, new FeatureAttribute(typeof(FlowDecisionLabelFeature)));
-            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute
-            {
-                AllowDrillIn = false,
-                OutlineViewIconProvider = (modelItem) =>
-                {
-                    if (modelItem != null)
-                    {
-                        ResourceDictionary icons = EditorResources.GetIcons();
-                        if (icons.Contains("FlowDecisionIcon") && icons["FlowDecisionIcon"] is DrawingBrush)
-                        {
-                            return (DrawingBrush)icons["FlowDecisionIcon"];
-                        }
-                    }
-
-                    return null;
-                }
-            });
-        }
-
-        protected override AutomationPeer OnCreateAutomationPeer()
-        {
-            return new FlowchartExpressionAutomationPeer(this, base.OnCreateAutomationPeer());
-        }
-
-
-        void OnExpressionButtonClicked(object sender, RoutedEventArgs e)
-        {
-            this.isPinned = !this.isPinned;
-            Update();
-        }
-
-        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            if (e.PropertyName == "Condition")
-            {
-                Update();
-            }
-        }
-
-        void Update()
-        {
-            Activity expressionActivity = this.ModelItem.Properties["Condition"].ComputedValue as Activity;
-            string expressionString = ExpressionHelper.GetExpressionString(expressionActivity, this.ModelItem);
-            bool expressionSpecified = !string.IsNullOrEmpty(expressionString);
-            if (!expressionSpecified)
-            {
-                this.isPinned = false;
-            }
-
-            this.ExpressionButtonVisibility = expressionSpecified ? Visibility.Visible : Visibility.Collapsed;
-
-            if (this.isPinned)
-            {
-                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonPressedBrush;
-            }
-            else if (this.IsMouseOver)
-            {
-                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonMouseOverBrush;
-            }
-            else
-            {
-                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonBrush;
-            }
-            expressionShown = false;
-            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);
-            if (adornerLayer != null)
-            {
-                Adorner[] adorners = adornerLayer.GetAdorners(this);
-                if (adorners != null)
-                {
-                    foreach (Adorner adorner in adorners)
-                    {
-                        if (adorner is FlowchartExpressionAdorner)
-                        {
-                            adornerLayer.Remove(adorner);
-                        }
-                    }
-                }
-                if ((this.IsMouseOver && expressionSpecified) || this.isPinned)
-                {
-                    expressionShown = true;
-                    adornerLayer.Add(new FlowchartExpressionAdorner(this));
-                }
-            }
-        }
-
-        static void OnShowAllConditionsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
-        {
-            if (e.NewValue != DependencyProperty.UnsetValue)
-            {
-                FlowDecisionDesigner designer = obj as FlowDecisionDesigner;
-                designer.OnShowAllConditionsChanged((bool)e.NewValue);
-            }
-        }
-
-        void OnShowAllConditionsChanged(bool isOpen)
-        {
-            this.isPinned = isOpen;
-            Update();
-        }
-
-        protected internal override void OnEditAnnotation()
-        {
-            this.annotationManager.OnEditAnnotation();
-        }
-
-        private class FlowDecisionDesignerAnnotationVisualProvider : IAnnotationVisualProvider
-        {
-            private FlowDecisionDesigner designer;
-            private IAnnotationIndicator indicator;
-            private IFloatingAnnotation floatingAnnotation;
-            private IDockedAnnotation dockedAnnotation;
-
-            public FlowDecisionDesignerAnnotationVisualProvider(FlowDecisionDesigner designer)
-            {
-                this.designer = designer;
-            }
-
-            public IAnnotationIndicator GetAnnotationIndicator()
-            {
-                if (this.indicator == null)
-                {
-                    this.indicator = new UIElementToAnnotationIndicatorAdapter(this.designer.defaultAnnotationIndicator);
-                }
-
-                return this.indicator;
-            }
-
-            public IFloatingAnnotation GetFloatingAnnotation()
-            {
-                if (this.floatingAnnotation == null)
-                {
-                    this.floatingAnnotation = new FloatingAnnotationView();
-                }
-
-                return this.floatingAnnotation;
-            }
-
-            public IDockedAnnotation GetDockedAnnotation()
-            {
-                if (this.dockedAnnotation == null)
-                {
-                    DockedAnnotationView view = new DockedAnnotationView();
-                    Binding binding = new Binding("ModelItem.AnnotationText");
-                    view.SetBinding(DockedAnnotationView.AnnotationTextProperty, binding);
-                    view.Visibility = Visibility.Collapsed;
-                    Grid.SetRow(view, 0);
-
-                    this.dockedAnnotation = view;
-                    this.designer.rootGrid.Children.Insert(0, view);
-                }
-
-                return this.dockedAnnotation;
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionLabelFeature.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowDecisionLabelFeature.cs
deleted file mode 100644 (file)
index 0bbcbb5..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Collections.Generic;
-
-    class FlowDecisionLabelFeature : ViewStateAttachedPropertyFeature
-    {
-        protected override IEnumerable<AttachedPropertyInfo> AttachedProperties
-        {
-            get
-            {
-                yield return new AttachedPropertyInfo<string> { PropertyName = "TrueLabel", DefaultValue = SR.FCFlowDecisionTrueMarker };
-                yield return new AttachedPropertyInfo<string> { PropertyName = "FalseLabel", DefaultValue = SR.FCFlowDecisionFalseMarker };
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchCaseEditorDialog.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchCaseEditorDialog.cs
deleted file mode 100644 (file)
index 8073840..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Diagnostics;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Windows.Threading;
-    using System.Runtime;
-    using System.Collections.Generic;
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Presentation.View;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Collections.ObjectModel;
-    using System.Globalization;
-
-    sealed class FlowSwitchCaseEditorDialog : WorkflowElementDialog
-    {
-        static DependencyProperty caseProperty = DependencyProperty.Register("Case", typeof(object), typeof(FlowSwitchCaseEditorDialog), new UIPropertyMetadata(null));
-        Type genericType;
-        CaseKeyBox caseKeyBox;
-
-        public FlowSwitchCaseEditorDialog(ModelItem activity, EditingContext context, DependencyObject owner, string title, Type genericType)
-        {
-            this.WindowSizeToContent = SizeToContent.Manual;
-            this.ModelItem = activity;
-            this.Context = context;
-            this.Owner = owner;
-            this.Title = title;
-            this.genericType = genericType;
-            this.WindowResizeMode = ResizeMode.NoResize;
-            this.MinWidth = 300;
-            this.MaxWidth = 300;
-            this.MinHeight = 120;
-            this.MaxHeight = 120;
-
-            caseKeyBox = new CaseKeyBox()
-            {
-                DisplayHintText = true,
-                Visibility = Visibility.Visible,
-                ValueType = genericType,
-                HorizontalContentAlignment = HorizontalAlignment.Stretch,
-                VerticalAlignment = VerticalAlignment.Center,
-                Width = Double.NaN,
-                CommitExplicitly = true,
-                LabelText = StringResourceDictionary.Instance.GetString("addCaseLabel"),
-            };
-            caseKeyBox.ViewModel.DataTemplateName = CaseKeyBoxViewModel.BoxesTemplate;
-            caseKeyBox.ViewModel.IsBoxOnly = true;
-            caseKeyBox.SetBinding(CaseKeyBox.ValueProperty, new Binding()
-            {
-                Source = this,
-                Path = new PropertyPath(FlowSwitchCaseEditorDialog.caseProperty),
-                Mode = BindingMode.TwoWay
-            });
-            caseKeyBox.CaseKeyValidationCallback = this.ValidateCaseKey;
-            caseKeyBox.ValueCommitted += (sender, e) =>
-                {
-                    this.CloseDialog(true);
-                };
-            caseKeyBox.EditCancelled += (sender, e) =>
-                {
-                    this.CloseDialog(false);
-                };
-
-            this.Content = caseKeyBox;
-
-            this.OnOk = () =>
-                {
-                    caseKeyBox.CommitChanges();
-                    return false; // ValueCommitted event handler will handle CloseDialog
-                };
-        }
-
-        bool ValidateCaseKey(object obj, out string reason)
-        {
-            return GenericFlowSwitchHelper.ValidateCaseKey(obj,
-                this.ModelItem.Properties["Cases"],
-                this.genericType,
-                out reason);
-        }
-
-        protected override void OnKeyDown(KeyEventArgs e)
-        {
-            if (e.Key == Key.Enter)
-            {
-                caseKeyBox.CommitChanges();
-                e.Handled = true;
-            }
-            else if (e.Key == Key.Escape)
-            {
-                caseKeyBox.CancelChanges();
-                e.Handled = true;
-            }
-        }
-
-        public string CaseName
-        {
-            get
-            {
-                return GenericFlowSwitchHelper.GetString(GetValue(caseProperty), this.genericType);
-            }
-        }
-
-        public object Case
-        {
-            get
-            {
-                return GetValue(caseProperty);
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDefaultLinkFeature.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDefaultLinkFeature.cs
deleted file mode 100644 (file)
index cb213de..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.ComponentModel;
-    using System.Runtime.Versioning;
-    using Microsoft.Activities.Presentation;
-
-    internal class FlowSwitchDefaultLinkFeature : Feature
-    {
-        public override void Initialize(EditingContext context, Type modelType)
-        {
-            if (context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName.IsLessThan45())
-            {
-                AttributeTableBuilder builder = new AttributeTableBuilder();
-                builder.AddCustomAttributes(typeof(FlowSwitchDefaultLink<>), "DefaultCaseDisplayName", BrowsableAttribute.No);
-                MetadataStore.AddAttributeTable(builder.CreateTable());
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchDesigner.xaml.cs
deleted file mode 100644 (file)
index 5826525..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Annotations;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.Internal.PropertyEditing;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.ComponentModel;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Automation.Peers;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Documents;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using Microsoft.Activities.Presentation;
-
-    partial class FlowSwitchDesigner
-    {
-        public static readonly DependencyProperty ExpressionButtonVisibilityProperty =
-            DependencyProperty.Register("ExpressionButtonVisibility", typeof(Visibility), typeof(FlowSwitchDesigner));
-
-        public static readonly DependencyProperty ExpressionButtonColorProperty =
-            DependencyProperty.Register("ExpressionButtonColor", typeof(Brush), typeof(FlowSwitchDesigner));
-
-        static readonly DependencyProperty ShowAllConditionsProperty =
-            DependencyProperty.Register("ShowAllConditions", typeof(bool), typeof(FlowSwitchDesigner),
-            new UIPropertyMetadata(new PropertyChangedCallback(OnShowAllConditionsChanged)));
-
-        bool isPinned;
-        bool expressionShown = false;
-
-        private AnnotationManager annotationManager;
-
-        public FlowSwitchDesigner()
-        {
-            InitializeComponent();
-            this.Loaded += (sender, e) =>
-            {
-                //UnRegistering because of 137896: Inside tab control multiple Loaded events happen without an Unloaded event.
-                this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
-                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
-                OnModelItemPropertyChanged(this.ModelItem, new PropertyChangedEventArgs("Expression"));
-
-                SetupBinding();
-
-                if (this.Context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName.IsLessThan45())
-                {
-                    this.displayNameTextBox.IsReadOnly = true;
-                }
-
-                this.annotationManager.Initialize();
-            };
-            this.Unloaded += (sender, e) =>
-            {
-                this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
-                this.annotationManager.Uninitialize();
-            };
-            this.MouseEnter += (sender, e) =>
-            {
-                Update();
-            };
-            this.MouseLeave += (sender, e) =>
-            {
-                Update();
-            };
-
-            this.InitializeAnnotation();
-        }
-
-        private void InitializeAnnotation()
-        {
-            this.annotationManager = new AnnotationManager(this);
-            this.annotationManager.AnnotationVisualProvider = new FlowSwitchDesignerAnnotationVisualProvider(this);
-        }
-
-        void SetupBinding()
-        {
-            Binding showAllConditionsBinding = new Binding();
-            showAllConditionsBinding.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(FlowchartDesigner), 1);
-            showAllConditionsBinding.Path = new PropertyPath(FlowchartDesigner.ShowAllConditionsProperty);
-            showAllConditionsBinding.Mode = BindingMode.OneWay;
-
-            BindingOperations.SetBinding(this, FlowSwitchDesigner.ShowAllConditionsProperty, showAllConditionsBinding);
-        }
-
-        public Visibility ExpressionButtonVisibility
-        {
-            get { return (Visibility)GetValue(ExpressionButtonVisibilityProperty); }
-            set { SetValue(ExpressionButtonVisibilityProperty, value); }
-        }
-
-        public Brush ExpressionButtonColor
-        {
-            get { return (Brush)GetValue(ExpressionButtonColorProperty); }
-            set { SetValue(ExpressionButtonColorProperty, value); }
-        }
-
-        public bool ExpressionShown
-        {
-            get { return this.expressionShown; }
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(System.Activities.Statements.FlowSwitch<>);
-
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(FlowSwitchDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Default"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute
-            {
-                AllowDrillIn = false,
-                OutlineViewIconProvider = (modelItem) =>
-                {
-                    if (modelItem != null)
-                    {
-                        ResourceDictionary icons = EditorResources.GetIcons();
-                        if (icons.Contains("FlowSwitchIcon") && icons["FlowSwitchIcon"] is DrawingBrush)
-                        {
-                            return (DrawingBrush)icons["FlowSwitchIcon"];
-                        }
-                    }
-
-                    return null;
-                }
-            });
-            builder.AddCustomAttributes(type, new FeatureAttribute(typeof(FlowSwitchLabelFeature)));
-            builder.AddCustomAttributes(type, new FeatureAttribute(typeof(FlowSwitchDefaultLinkFeature)));
-
-            builder.AddCustomAttributes(type, type.GetProperty("Cases"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false, ChildNodePrefix = "Case : " });
-            builder.AddCustomAttributes(type, type.GetProperty("Expression"), new HidePropertyInOutlineViewAttribute());
-
-            Type flowSwitchLinkType = typeof(FlowSwitchCaseLink<>);
-            builder.AddCustomAttributes(flowSwitchLinkType, "Case", PropertyValueEditor.CreateEditorAttribute(typeof(FlowSwitchLinkCasePropertyEditor)), new EditorReuseAttribute(false));
-        }
-
-        protected override AutomationPeer OnCreateAutomationPeer()
-        {
-            return new FlowchartExpressionAutomationPeer(this, base.OnCreateAutomationPeer());
-        }
-
-        void OnExpressionButtonClicked(object sender, RoutedEventArgs e)
-        {
-            this.isPinned = !this.isPinned;
-        }
-
-        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            if (e.PropertyName == "Expression")
-            {
-                Update();
-            }
-            else if (e.PropertyName == "DefaultCaseDisplayName")
-            {
-                // To fix 218600 without losing PropertyGrid focus (Bug 210326), the only workaround is to
-                // update the connector label manually, because FlowSwitchLink.ModelItem["DefaultCaseDisplayName"]
-                // is a FakeModelPropertyImpl, and would not generate a Undo unit 
-                // (FakeModelNotifyPropertyChange.GetInverse() returns null).
-                // However, there is a known issue with PropertyGrid bound to a fake ModelItem.  The workaround is 
-                // to shift the focus to the FlowchartDesigner IF the keyboard focus is on the connector when the user
-                // calls Undo/Redo, to avoid the problem of PropertyGrid not refreshable.
-                FlowchartDesigner flowchartDesigner = VisualTreeUtils.FindVisualAncestor<FlowchartDesigner>(this);
-                Fx.Assert(null != flowchartDesigner, "flowchart designer cannot be null because FlowswitchDesigner must exist within the same visual tree ofthe parent Flowchart.");
-
-                if (null != flowchartDesigner &&
-                    null != this.ModelItem.Properties["Default"].Value &&
-                    this.Context.Services.GetService<UndoEngine>().IsUndoRedoInProgress)
-                {
-                    // the designer is available
-                    Connector connector = flowchartDesigner.GetLinkOnCanvas(this.ModelItem, this.ModelItem.Properties["Default"].Value, "Default");
-                    Fx.Assert(null != connector, "Connector should not be null.");
-                    ModelItem linkModelItem = FlowchartDesigner.GetLinkModelItem(connector);
-                    Fx.Assert(linkModelItem is FakeModelItemImpl, "ModelItem of FlowSwitch link is fake.");
-                    IFlowSwitchDefaultLink link = (IFlowSwitchDefaultLink)linkModelItem.GetCurrentValue();
-                    string defaultDisplayName =
-                        (string)this.ModelItem.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].Value.GetCurrentValue();
-
-                    if (link.DefaultCaseDisplayName != defaultDisplayName)
-                    {
-                        // the purpose of re-setting the link value during Undo/Redo is to update the FlowSwitch label
-                        using (ModelEditingScope scope = this.ModelItem.BeginEdit(SR.FlowSwitchDefaultCaseDisplayNameEditingScopeDesc))
-                        {
-                            linkModelItem.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].SetValue(defaultDisplayName);
-                            link.DefaultCaseDisplayName = defaultDisplayName;
-                            scope.Complete();
-                        }
-
-                        if (Selection.IsSelection(linkModelItem))
-                        {
-                            // cause the connector to lose focus, because the PropertyGrid would not have focus.
-                            // this scenario only happens if the user explicitly selects the FlowSwitch link after
-                            // editing the DefaultDisplayName.  This behavior is only a workaround due to the fact
-                            // that PropertyGrid does not receive update from change in a FakeModelPropertyImpl 
-                            // (i.e. FlowSwitchLink).
-                            Keyboard.ClearFocus();
-                            Selection.SelectOnly(this.Context, this.ModelItem);
-                            linkModelItem.Highlight();
-                        }
-                    }
-                }
-            }
-        }
-
-        void Update()
-        {
-            Activity expressionActivity = this.ModelItem.Properties["Expression"].ComputedValue as Activity;
-            string expressionString = ExpressionHelper.GetExpressionString(expressionActivity, this.ModelItem);
-            bool expressionSpecified = !string.IsNullOrEmpty(expressionString);
-            if (!expressionSpecified)
-            {
-                this.isPinned = false;
-            }
-
-            this.ExpressionButtonVisibility = expressionSpecified ? Visibility.Visible : Visibility.Collapsed;
-
-            if (this.isPinned)
-            {
-                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonPressedBrush;
-            }
-            else if (this.IsMouseOver)
-            {
-                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonMouseOverBrush;
-            }
-            else
-            {
-                this.ExpressionButtonColor = WorkflowDesignerColors.FlowchartExpressionButtonBrush;
-            }
-            expressionShown = false;
-            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);
-            if (adornerLayer != null)
-            {
-                Adorner[] adorners = adornerLayer.GetAdorners(this);
-                if (adorners != null)
-                {
-                    foreach (Adorner adorner in adorners)
-                    {
-                        if (adorner is FlowchartExpressionAdorner)
-                        {
-                            adornerLayer.Remove(adorner);
-                        }
-                    }
-                }
-                if ((this.IsMouseOver && expressionSpecified) || this.isPinned)
-                {
-                    expressionShown = true;
-                    adornerLayer.Add(new FlowchartExpressionAdorner(this));
-                }
-            }
-        }
-
-        static void OnShowAllConditionsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
-        {
-            if (e.NewValue != DependencyProperty.UnsetValue)
-            {
-                FlowSwitchDesigner designer = obj as FlowSwitchDesigner;
-                designer.OnShowAllConditionsChanged((bool)e.NewValue);
-            }
-        }
-
-        void OnShowAllConditionsChanged(bool isOpen)
-        {
-            this.isPinned = isOpen;
-            Update();
-        }
-
-        protected internal override void OnEditAnnotation()
-        {
-            this.annotationManager.OnEditAnnotation();
-        }
-
-        private class FlowSwitchDesignerAnnotationVisualProvider : IAnnotationVisualProvider
-        {
-            private FlowSwitchDesigner designer;
-            private IAnnotationIndicator indicator;
-            private IFloatingAnnotation floatingAnnotation;
-            private IDockedAnnotation dockedAnnotation;
-
-            public FlowSwitchDesignerAnnotationVisualProvider(FlowSwitchDesigner designer)
-            {
-                this.designer = designer;
-            }
-
-            public IAnnotationIndicator GetAnnotationIndicator()
-            {
-                if (this.indicator == null)
-                {
-                    this.indicator = new UIElementToAnnotationIndicatorAdapter(this.designer.defaultAnnotationIndicator);
-                }
-
-                return this.indicator;
-            }
-
-            public IFloatingAnnotation GetFloatingAnnotation()
-            {
-                if (this.floatingAnnotation == null)
-                {
-                    this.floatingAnnotation = new FloatingAnnotationView();
-                }
-
-                return this.floatingAnnotation;
-            }
-
-            public IDockedAnnotation GetDockedAnnotation()
-            {
-                if (this.dockedAnnotation == null)
-                {
-                    DockedAnnotationView view = new DockedAnnotationView();
-                    Binding binding = new Binding("ModelItem.AnnotationText");
-                    view.SetBinding(DockedAnnotationView.AnnotationTextProperty, binding);
-                    view.Visibility = Visibility.Collapsed;
-                    Grid.SetRow(view, 0);
-
-                    this.dockedAnnotation = view;
-                    this.designer.rootGrid.Children.Insert(0, view);
-                }
-
-                return this.dockedAnnotation;
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLabelFeature.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLabelFeature.cs
deleted file mode 100644 (file)
index c3b3aa5..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//------------------------------------------------------------------------------
-// <copyright file="FlowSwitchLabelFeature.cs" company="Microsoft">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//------------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Collections.Generic;
-
-    internal class FlowSwitchLabelFeature : ViewStateAttachedPropertyFeature
-    {
-        public const string DefaultCaseDisplayNamePropertyName = "DefaultCaseDisplayName";
-        public const string DefaultCaseDisplayNameDefaultValue = "Default";
-
-        protected override IEnumerable<AttachedPropertyInfo> AttachedProperties
-        {
-            get
-            {
-                yield return new AttachedPropertyInfo<string> { PropertyName = DefaultCaseDisplayNamePropertyName, IsBrowsable = false, IsVisibleToModelItem = true, DefaultValue = DefaultCaseDisplayNameDefaultValue };
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLink.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLink.cs
deleted file mode 100644 (file)
index db35c10..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Windows;
-    using System.Windows.Data;
-
-    abstract class FlowSwitchLink<T> : DependencyObject, IFlowSwitchLink
-    {
-        static DependencyProperty caseProperty = DependencyProperty.Register("Case", typeof(T), typeof(FlowSwitchLink<T>), new FrameworkPropertyMetadata(new PropertyChangedCallback(FlowSwitchLink<T>.OnCasePropertyChanged)));
-        static DependencyProperty isDefaultCaseProperty = DependencyProperty.Register("IsDefault", typeof(bool), typeof(FlowSwitchLink<T>), new FrameworkPropertyMetadata(new PropertyChangedCallback(FlowSwitchLink<T>.OnIsDefaultCasePropertyChanged)));
-
-        private FlowSwitch<T> parentFlowSwitch;
-        protected bool internalChange = false;
-        protected ModelItem flowSwitchModelItem;
-        const string DefaultConnectorViewStateKey = "Default";
-        const string CaseViewStateKeyAppendString = "Connector";
-        bool internalDefaultCaseChange = false;
-
-        public FlowSwitchLink(ModelItem flowSwitchMI, T caseValue, bool isDefault)
-        {
-            this.flowSwitchModelItem = flowSwitchMI;
-            object flowSwitch = this.flowSwitchModelItem.GetCurrentValue();
-            this.parentFlowSwitch = (FlowSwitch<T>)this.flowSwitchModelItem.GetCurrentValue();
-            this.internalChange = true;
-            this.internalDefaultCaseChange = true;
-            if (!isDefault)
-            {
-                this.CaseObject = caseValue;
-            }
-            this.IsDefaultCase = isDefault;
-            this.internalDefaultCaseChange = false;
-            this.internalChange = false;
-        }
-
-        [BrowsableAttribute(false)]
-        public ModelItem ModelItem
-        { get; set; }
-
-        public CaseKeyValidationCallbackDelegate ValidateCaseKey
-        {
-            get
-            {
-                return (object obj, out string reason) =>
-                {
-                    return GenericFlowSwitchHelper.ValidateCaseKey(obj,
-                        this.flowSwitchModelItem.Properties["Cases"],
-                        typeof(T),
-                        out reason);
-                };
-            }
-        }
-
-        [BrowsableAttribute(false)]
-        public FlowNode ParentFlowSwitch
-        {
-            get
-            {
-                return this.parentFlowSwitch;
-            }
-            set
-            {
-                this.parentFlowSwitch = value as FlowSwitch<T>;
-            }
-        }
-
-        public bool IsDefaultCase
-        {
-            get
-            {
-                return (bool)GetValue(FlowSwitchLink<T>.isDefaultCaseProperty);
-            }
-            set
-            {
-                SetValue(FlowSwitchLink<T>.isDefaultCaseProperty, value);
-            }
-        }
-
-        [Browsable(false)]
-        public string CaseName
-        {
-            get
-            {
-                object value = GetValue(FlowSwitchLink<T>.caseProperty);
-                return GenericFlowSwitchHelper.GetString((T)value, typeof(T));
-            }
-        }
-
-        [Browsable(false)]
-        public object CaseObject
-        {
-            get
-            {
-                return GetValue(FlowSwitchLink<T>.caseProperty);
-            }
-            set
-            {
-                SetValue(FlowSwitchLink<T>.caseProperty, value);
-            }
-        }
-        
-        [BrowsableAttribute(false)]
-        public T Case
-        {
-            get
-            {
-                return (T)GetValue(FlowSwitchLink<T>.caseProperty);
-            }
-            set
-            {
-                SetValue(FlowSwitchLink<T>.caseProperty, value);
-            }
-        }
-
-        DependencyProperty CaseProperty
-        {
-            get
-            {
-                return caseProperty;
-            }
-        }
-
-        DependencyProperty IsDefaultCaseProperty
-        {
-            get
-            {
-                return isDefaultCaseProperty;
-            }
-        }
-
-        [Browsable(false)]
-        public Type GenericType
-        {
-            get
-            {
-                return typeof(T);
-            }
-        }
-
-        bool ContainsKey(object key)
-        {
-            return this.parentFlowSwitch.Cases.ContainsKey((T)key);
-        }
-
-        void OnIsDefaultPropertyChanged(DependencyPropertyChangedEventArgs e)
-        {
-            bool isUndoRedoInProgress = this.IsUndoRedoInProgress();
-
-            if (!this.internalDefaultCaseChange && !isUndoRedoInProgress)
-            {
-                bool value = (bool)e.NewValue;
-                bool oldValue = (bool)e.OldValue;
-
-                if (value)
-                {
-                    if (object.Equals(this.flowSwitchModelItem.Properties["Default"].Value, null))
-                    {
-                        using (EditingScope es = (EditingScope)this.flowSwitchModelItem.BeginEdit(SR.FlowSwitchCaseRenameEditingScopeDesc))
-                        {
-                            ModelItem flowNodeMI = GenericFlowSwitchHelper.GetCaseModelItem(this.flowSwitchModelItem.Properties["Cases"], this.CaseObject);
-                            GenericFlowSwitchHelper.RemoveCase(this.flowSwitchModelItem.Properties["Cases"], this.CaseObject);
-                            this.flowSwitchModelItem.Properties["Default"].SetValue(flowNodeMI);
-                            this.UpdateViewState(this.CaseName + CaseViewStateKeyAppendString, DefaultConnectorViewStateKey);
-                            this.internalChange = true;
-                            es.Complete();
-                        }
-                    }
-                    else
-                    {
-                        this.internalDefaultCaseChange = true;
-                        this.IsDefaultCase = oldValue;
-                        throw FxTrace.Exception.AsError(new InvalidOperationException(SR.DefaultCaseExists));
-                    }
-                }
-                else
-                {
-                    if (oldValue)
-                    {
-                        using (EditingScope es = (EditingScope)this.flowSwitchModelItem.BeginEdit(SR.FlowSwitchCaseRenameEditingScopeDesc))
-                        {
-                            ModelItem defaultCase = this.flowSwitchModelItem.Properties["Default"].Value;
-                            object uniqueCase = null;
-                            string errorMessage = string.Empty;
-                            Type typeArgument = typeof(T);
-                            if (GenericFlowSwitchHelper.CanBeGeneratedUniquely(typeArgument))
-                            {
-                                string caseName = GenericFlowSwitchHelper.GetCaseName(this.flowSwitchModelItem.Properties["Cases"], typeArgument, out errorMessage);
-                                if (!string.IsNullOrEmpty(errorMessage))
-                                {
-                                    this.internalDefaultCaseChange = true;
-                                    this.IsDefaultCase = oldValue;
-                                    throw FxTrace.Exception.AsError(new InvalidOperationException(errorMessage));
-                                }
-                                uniqueCase = GenericFlowSwitchHelper.GetObject(caseName, typeArgument);
-
-                            }
-                            else
-                            {
-                                FlowSwitchCaseEditorDialog editor = new FlowSwitchCaseEditorDialog(this.flowSwitchModelItem, ((WorkflowViewElement)this.flowSwitchModelItem.View).Context, this.flowSwitchModelItem.View, SR.ChangeCaseValue, this.flowSwitchModelItem.ItemType.GetGenericArguments()[0]);
-                                editor.WindowSizeToContent = SizeToContent.WidthAndHeight;
-
-                                if (!editor.ShowOkCancel())
-                                {
-                                    this.internalDefaultCaseChange = true;
-                                    this.IsDefaultCase = oldValue;
-                                    return;
-                                }
-                                uniqueCase = editor.Case;
-                                if (GenericFlowSwitchHelper.ContainsCaseKey(this.flowSwitchModelItem.Properties["Cases"], uniqueCase))
-                                {
-                                    this.internalDefaultCaseChange = true;
-                                    this.IsDefaultCase = oldValue;
-                                    throw FxTrace.Exception.AsError(new InvalidOperationException(SR.InvalidFlowSwitchCaseMessage));
-                                }
-                            }
-
-                            this.flowSwitchModelItem.Properties["Default"].SetValue(null);
-                            this.flowSwitchModelItem.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].SetValue(FlowSwitchLabelFeature.DefaultCaseDisplayNameDefaultValue);
-                            
-                            this.internalChange = true;
-                            if (typeof(string) != typeof(T))
-                            {
-                                this.ModelItem.Properties["Case"].SetValue(uniqueCase);
-                                GenericFlowSwitchHelper.AddCase(this.flowSwitchModelItem.Properties["Cases"], uniqueCase, defaultCase.GetCurrentValue());
-                            }
-                            else
-                            {
-                                this.ModelItem.Properties["Case"].SetValue(uniqueCase);
-                                GenericFlowSwitchHelper.AddCase(this.flowSwitchModelItem.Properties["Cases"], uniqueCase, defaultCase.GetCurrentValue());
-                            }
-                            this.UpdateViewState(DefaultConnectorViewStateKey, GenericFlowSwitchHelper.GetString(uniqueCase, typeof(T)) + CaseViewStateKeyAppendString);
-                            es.Complete();
-                            this.internalChange = false;
-                        }
-                        this.internalDefaultCaseChange = false;
-                    }
-                }
-            }
-            this.internalDefaultCaseChange = false;
-        }
-
-        protected bool IsUndoRedoInProgress()
-        {
-            bool isUndoRedoInProgress;
-            WorkflowViewElement designer = (WorkflowViewElement)this.flowSwitchModelItem.View;
-            if (designer == null)
-            {
-                isUndoRedoInProgress = false;
-            }
-            else
-            {
-                isUndoRedoInProgress = designer.Context.Services.GetService<UndoEngine>().IsUndoRedoInProgress;
-            }
-            return isUndoRedoInProgress;
-        }
-
-        void OnCasePropertyChanged(DependencyPropertyChangedEventArgs e)
-        {
-            bool isUndoRedoInProgress = this.IsUndoRedoInProgress();
-
-            if (!this.internalChange && !isUndoRedoInProgress)
-            {
-                T oldValue = (T)e.OldValue;
-                T newValue = (T)e.NewValue;
-
-                if (newValue is string && newValue != null)
-                {
-                    newValue = (T)((object)((string)((object)newValue)).Trim());
-                }
-
-                string oldViewStateKey = string.Empty;
-                if (!this.ContainsKey(newValue))
-                {
-                    using (EditingScope es = (EditingScope)this.flowSwitchModelItem.BeginEdit(SR.FlowSwitchCaseRenameEditingScopeDesc))
-                    {
-                        ModelItem flowElementMI = null;
-
-                        flowElementMI = GenericFlowSwitchHelper.GetCaseModelItem(this.flowSwitchModelItem.Properties["Cases"], oldValue);
-                        GenericFlowSwitchHelper.RemoveCase(this.flowSwitchModelItem.Properties["Cases"], oldValue);
-                        oldViewStateKey = GenericFlowSwitchHelper.GetString(oldValue, typeof(T)) + CaseViewStateKeyAppendString;
-                        //Add the new value
-                        GenericFlowSwitchHelper.AddCase(this.flowSwitchModelItem.Properties["Cases"], newValue, flowElementMI.GetCurrentValue());
-                        //Update the viewstate for the flowswitch.
-                        this.UpdateViewState(oldViewStateKey, GenericFlowSwitchHelper.GetString(newValue, typeof(T)) + CaseViewStateKeyAppendString);
-                        //Making sure the value for Case is always trimmed.
-                        this.internalChange = true;
-                        this.ModelItem.Properties["Case"].SetValue(newValue);
-                        es.Complete();
-                    }
-                }
-                else
-                {
-                    this.internalChange = true;
-                    this.CaseObject = oldValue;
-                    throw FxTrace.Exception.AsError(new InvalidOperationException(SR.InvalidFlowSwitchCaseMessage));
-                }
-            }
-            this.internalChange = false;
-        }
-
-        void UpdateViewState(string oldValue, string newValue)
-        {
-            EditingContext context = this.flowSwitchModelItem.GetEditingContext();
-            ViewStateService viewStateService = (ViewStateService)context.Services.GetService(typeof(ViewStateService));
-            if (viewStateService != null)
-            {
-                object viewState = viewStateService.RetrieveViewState(this.flowSwitchModelItem, oldValue);
-                if (viewState != null)
-                {
-                    viewStateService.StoreViewStateWithUndo(this.flowSwitchModelItem, oldValue, null);
-                    viewStateService.StoreViewStateWithUndo(this.flowSwitchModelItem, newValue, viewState);
-                }
-            }
-        }
-
-        static void OnCasePropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
-        {
-            FlowSwitchLink<T> link = (FlowSwitchLink<T>)dependencyObject;
-            link.OnCasePropertyChanged(e);
-        }
-
-        static void OnIsDefaultCasePropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
-        {
-            FlowSwitchLink<T> link = (FlowSwitchLink<T>)dependencyObject;
-            link.OnIsDefaultPropertyChanged(e);
-        }
-
-        public virtual MultiBinding CreateConnectorLabelTextBinding()
-        {
-            return new MultiBinding
-            {
-                Converter = new FlowSwitchLinkMultiValueConverter(),
-                ConverterParameter = this.CaseProperty.PropertyType,
-                Bindings = 
-                {
-                    new Binding { Source = this, Mode = BindingMode.OneWay, Path = new PropertyPath(this.CaseProperty) },
-                    new Binding { Source = this, Mode = BindingMode.OneWay, Path = new PropertyPath(this.IsDefaultCaseProperty) },
-                },
-            };
-        }
-    }
-
-    class FlowSwitchDefaultLink<T> : FlowSwitchLink<T>, IFlowSwitchDefaultLink
-    {
-        static DependencyProperty defaultCaseDisplayNameProperty = DependencyProperty.Register(FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName, typeof(string), typeof(FlowSwitchDefaultLink<T>), new FrameworkPropertyMetadata(new PropertyChangedCallback(FlowSwitchDefaultLink<T>.OnDefaultCaseDisplayNamePropertyChanged)));
-
-        public FlowSwitchDefaultLink(ModelItem flowSwitchMI, T caseValue, bool isDefault)
-            : base(flowSwitchMI, caseValue, isDefault)
-        {
-            this.internalChange = true;
-            this.DefaultCaseDisplayName = (string)this.flowSwitchModelItem.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].Value.GetCurrentValue();
-            this.internalChange = false;
-        }
-
-        public string DefaultCaseDisplayName
-        {
-            get
-            {
-                return (string)GetValue(FlowSwitchDefaultLink<T>.defaultCaseDisplayNameProperty);
-            }
-            set
-            {
-                SetValue(FlowSwitchDefaultLink<T>.defaultCaseDisplayNameProperty, value);
-            }
-        }
-
-        DependencyProperty DefaultCaseDisplayNameProperty
-        {
-            get
-            {
-                return defaultCaseDisplayNameProperty;
-            }
-        }
-
-        void OnDefaultCaseDisplayNamePropertyChanged(DependencyPropertyChangedEventArgs e)
-        {
-            bool isUndoRedoInProgress = this.IsUndoRedoInProgress();
-            if (!this.internalChange && !isUndoRedoInProgress)
-            {
-                string newValue = (string)e.NewValue;
-                this.internalChange = true;
-                using (ModelEditingScope scope = this.flowSwitchModelItem.BeginEdit(SR.FlowSwitchDefaultCaseDisplayNameEditingScopeDesc))
-                {
-                    this.flowSwitchModelItem.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].SetValue(newValue);
-                    scope.Complete();
-                }
-                this.internalChange = false;
-            }
-        }
-
-        static void OnDefaultCaseDisplayNamePropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
-        {
-            FlowSwitchDefaultLink<T> link = (FlowSwitchDefaultLink<T>)dependencyObject;
-            link.OnDefaultCaseDisplayNamePropertyChanged(e);
-        }
-
-        public override MultiBinding CreateConnectorLabelTextBinding()
-        {
-            MultiBinding result = base.CreateConnectorLabelTextBinding();
-            result.Bindings.Add(new Binding { Source = this, Mode = BindingMode.OneWay, Path = new PropertyPath(this.DefaultCaseDisplayNameProperty) });
-            return result;
-        }
-    }
-
-    class FlowSwitchCaseLink<T> : FlowSwitchLink<T>
-    {
-        public FlowSwitchCaseLink(ModelItem flowSwitchMI, T caseValue, bool isDefault)
-            : base(flowSwitchMI, caseValue, isDefault)
-        {
-        }
-
-        [BrowsableAttribute(true)]
-        public new T Case
-        {
-            get { return base.Case; }
-            set { base.Case = value; }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkCasePropertyEditor.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkCasePropertyEditor.cs
deleted file mode 100644 (file)
index 774a49e..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Presentation
-{
-    using System.Windows;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.View;
-    using System.Activities.Core.Presentation.Themes;
-
-    sealed class FlowSwitchLinkCasePropertyEditor : PropertyValueEditor
-    {
-        public FlowSwitchLinkCasePropertyEditor()
-        {
-            this.InlineEditorTemplate = (DataTemplate)EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("FlowSwitchLinkCase_InlineEditorTemplate");
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkMultiValueConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowSwitchLinkMultiValueConverter.cs
deleted file mode 100644 (file)
index a84cf29..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Model;
-    using System.Globalization;
-    using System.Runtime;
-    using System.Windows.Data;
-
-    sealed class FlowSwitchLinkMultiValueConverter : IMultiValueConverter
-    {
-        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
-        {
-            bool isDefaultCase = (bool)values[1];
-            if (isDefaultCase)
-            {
-                // Fx.Assert(values.Length == 3, "The multi-binding must have been constructed by FlowSwitchLink.");
-                // For default case, we should have got three bindings. Two binding is possible when the linkModelItem is replaced but the view is not completely re-constructed yet.
-                return values.Length == 3 ? values[2] : null;
-            }
-            else
-            {
-                return GenericFlowSwitchHelper.GetString(values[0], (Type) parameter);
-            }
-        }
-
-        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotImplementedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartConnectionPointsAdorner.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartConnectionPointsAdorner.cs
deleted file mode 100644 (file)
index d1b3abc..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.View;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Windows;
-    using System.Windows.Documents;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Runtime;
-
-    internal class FlowchartConnectionPointsAdorner : ConnectionPointsAdorner
-    {
-        private bool isTextRightToLeft;
-
-        public FlowchartConnectionPointsAdorner(UIElement adornedElement, List<ConnectionPoint> connectionPointsToShow, bool isParentShapeSelected, bool isTextRightToLeft)
-            : base(adornedElement, connectionPointsToShow, isParentShapeSelected)
-        {
-            this.isTextRightToLeft = isTextRightToLeft;
-            this.FlowDirection = isTextRightToLeft ? FlowDirection.RightToLeft : FlowDirection.LeftToRight;
-        }
-
-        protected override void OnRender(DrawingContext drawingContext)
-        {
-            const int textCulture = 9;
-
-            ConnectionPoint trueConnectionPoint = null;
-            ConnectionPoint falseConnectionPoint = null;
-
-            if (this.connectionPoints.Contains(FlowchartDesigner.GetTrueConnectionPoint(this.AdornedElement)))
-            {
-                trueConnectionPoint = FlowchartDesigner.GetTrueConnectionPoint(this.AdornedElement);
-            }
-            if (this.connectionPoints.Contains(FlowchartDesigner.GetFalseConnectionPoint(this.AdornedElement)))
-            {
-                falseConnectionPoint = FlowchartDesigner.GetFalseConnectionPoint(this.AdornedElement);
-            }
-            Point actualPoint;
-            Point origin = FreeFormPanel.GetLocation(AdornedElement);
-            Thickness margin = ((FrameworkElement)AdornedElement).Margin;
-            origin.X += margin.Left;
-            origin.Y += margin.Top;
-
-            foreach (ConnectionPoint connPoint in this.connectionPoints)
-            {
-                actualPoint = new Point(connPoint.Location.X - origin.X, connPoint.Location.Y - origin.Y);
-                this.DrawConnectionPoint(connPoint, actualPoint, drawingContext);
-            }
-            
-            if (trueConnectionPoint != null)
-            {
-                string trueLabelText = String.Empty;
-
-                VirtualizedContainerService.VirtualizingContainer virtualizingContainer = (VirtualizedContainerService.VirtualizingContainer)trueConnectionPoint.ParentDesigner;
-                if (virtualizingContainer != null && virtualizingContainer.ModelItem != null)
-                {
-                    trueLabelText = (string)virtualizingContainer.ModelItem.Properties["TrueLabel"].ComputedValue;
-                }
-
-                actualPoint = new Point(trueConnectionPoint.Location.X - origin.X, trueConnectionPoint.Location.Y - origin.Y);
-                FormattedText trueMarkerFormattedText = new FormattedText(trueLabelText, new System.Globalization.CultureInfo(textCulture),
-                    this.FlowDirection, FlowchartDesigner.FlowElementCaptionTypeface, FlowchartDesigner.FlowNodeCaptionFontSize,
-                    new SolidColorBrush(WorkflowDesignerColors.WorkflowViewElementCaptionColor));
-                actualPoint.Y += ConnectionPoint.DrawingLargeSide / 2;
-                actualPoint.X -= trueMarkerFormattedText.WidthIncludingTrailingWhitespace;
-
-                DrawtWithTransform(
-                    drawingContext,
-                    this.isTextRightToLeft,
-                    // Mirror the left side text to the right side by using this axis when RTL.
-                    actualPoint.X,
-                    () =>
-                    {
-                        drawingContext.DrawText(trueMarkerFormattedText, actualPoint);
-                    });
-                
-            }
-            if (falseConnectionPoint != null)
-            {
-                string falseLabelText = String.Empty;
-
-                VirtualizedContainerService.VirtualizingContainer virtualizingContainer = (VirtualizedContainerService.VirtualizingContainer)falseConnectionPoint.ParentDesigner;
-                if (virtualizingContainer != null && virtualizingContainer.ModelItem != null)
-                {
-                    falseLabelText = (string)virtualizingContainer.ModelItem.Properties["FalseLabel"].ComputedValue;
-                }
-
-                actualPoint = new Point(falseConnectionPoint.Location.X - origin.X, falseConnectionPoint.Location.Y - origin.Y);
-                actualPoint.Y += ConnectionPoint.DrawingLargeSide / 2;
-
-                FormattedText falseMarkerFormattedText = new FormattedText(falseLabelText, new System.Globalization.CultureInfo(textCulture),
-                    this.FlowDirection, FlowchartDesigner.FlowElementCaptionTypeface, FlowchartDesigner.FlowNodeCaptionFontSize,
-                    new SolidColorBrush(WorkflowDesignerColors.WorkflowViewElementCaptionColor));
-
-                DrawtWithTransform(
-                    drawingContext,
-                    this.isTextRightToLeft,
-                    // Mirror the left side text to the right side by using this axis when RTL.
-                    actualPoint.X,
-                    () =>
-                    {
-                        drawingContext.DrawText(falseMarkerFormattedText, actualPoint);
-                    });
-            }
-
-            base.OnRender(drawingContext);
-        }
-
-        private static void DrawtWithTransform(DrawingContext drawingContext, bool isRightToLeft, double axis, Action doDraw)
-        {
-            if (isRightToLeft)
-            {
-                /* We hope to mirror the Text using yAxis as axis, like from (a) to (b)
-                 * |                                 |
-                 * |    ==>= =>==>                   |     <==<= =<==
-                 * |--------|------> x               |----------|--------> x
-                 * y       axis    (a)              y           axis      (b)
-                 *  
-                 * So we do it in three steps:
-                 * 1) move text so that axis and y are coincident
-                 * |                                            | 
-                 * |    ==>= =>==>                          ==>=|=>==>
-                 * |--------|------> x                ----------|---------> x
-                 * y       axis                                y(axis)
-                 * 
-                 * 2) mirror
-                 *         |                                   | 
-                 *     ==>=|=>==>                          <=<=|=<==
-                 * --------|------> x                ----------|---------> x
-                 *       y(axis)                              y(axis)
-                 * 
-                 * 3) move back
-                 *         |                         |           
-                 *     <=<=|=<==                     |     <=<= =<==
-                 * --------|------> x                |---------|----------> x
-                 *         y                         y        axis 
-                 *         
-                 * 
-                 *              |  1   0   0 |   | -1 0 0 |   |   1    0   0 |   |  -1     0    0 |
-                 *  transform = |  0   1   0 | x |  0 1 0 | x |   0    1   0 | = |   0     1    0 |
-                 *              | axis 0   1 |   |  0 0 1 |   | -axis  0   0 |   | 2*axis  0    1 |
-                 */
-
-                MatrixTransform transform = new MatrixTransform(-1, 0, 0, 1, 2 * axis, 0);
-                drawingContext.PushTransform(transform);
-                doDraw();
-                drawingContext.Pop();
-            }
-            else
-            {
-                doDraw();
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Container.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Container.cs
deleted file mode 100644 (file)
index 13c40f6..0000000
+++ /dev/null
@@ -1,558 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Reflection;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Windows.Threading;
-    using System.Xaml;
-    using System.Activities.Presentation.FreeFormEditing;
-
-    partial class FlowchartDesigner : IMultipleDragEnabledCompositeView
-    {
-        public static readonly DependencyProperty DroppingTypeResolvingOptionsProperty =
-            DependencyProperty.Register("DroppingTypeResolvingOptions", typeof(TypeResolvingOptions), typeof(FlowchartDesigner));
-
-        [Fx.Tag.KnownXamlExternal]
-        public TypeResolvingOptions DroppingTypeResolvingOptions
-        {
-            get { return (TypeResolvingOptions)GetValue(DroppingTypeResolvingOptionsProperty); }
-            set { SetValue(DroppingTypeResolvingOptionsProperty, value); }
-        }
-
-        public void OnItemMoved(ModelItem modelItem)
-        {
-            Fx.Assert(this.modelElement.ContainsKey(modelItem), "Moved item does not exist.");
-            this.OnItemsDelete(new List<ModelItem> { modelItem });
-        }
-
-        public object OnItemsCopied(List<ModelItem> itemsToCopy)
-        {
-            Fx.Assert(this.panel != null, "This code shouldn't be hit if panel is null");
-
-            // Filter away flowStart
-            itemsToCopy.Remove(flowStart);
-
-            //Get the corresponding FlowElements and clone them.
-            //We will work against actual objects here not the model items.
-            Dictionary<FlowNode, FlowNode> clonedFlowElements = new Dictionary<FlowNode, FlowNode>();
-            foreach (ModelItem modelItem in itemsToCopy)
-            {
-                ModelItem flowElementMI = GetFlowElementMI(modelItem);
-                FlowNode flowElement = (FlowNode)flowElementMI.GetCurrentValue();
-                clonedFlowElements[flowElement] = CloneFlowElement(flowElement);
-            }
-
-            //Traverse the FlowElements to reset Clone references to other FlowElements.
-            foreach (FlowNode flowElement in clonedFlowElements.Keys)
-            {
-                UpdateCloneReferences(flowElement, clonedFlowElements);
-            }
-
-            //Return metadata.
-            List<FlowNode> metaData = new List<FlowNode>(clonedFlowElements.Values);
-            return (object)metaData;
-        }
-
-        public List<ModelItem> SortSelectedItems(List<ModelItem> selectedItems)
-        {
-            if (selectedItems == null)
-            {
-                throw FxTrace.Exception.ArgumentNull("selectedItems");
-            }
-
-            DragDropHelper.ValidateItemsAreOnView(selectedItems, this.modelElement.Keys);
-            return selectedItems;
-        }
-
-        public void OnItemsMoved(List<ModelItem> movedItems)
-        {
-            if (movedItems == null)
-            {
-                throw FxTrace.Exception.ArgumentNull("movedItems");
-            }
-
-            DragDropHelper.ValidateItemsAreOnView(movedItems, this.modelElement.Keys);
-
-            HashSet<ModelItem> updatedItems = new HashSet<ModelItem>();
-            foreach (ModelItem modelItem in movedItems)
-            {
-                ModelItem flowModelItem = this.GetFlowElementMI(modelItem);
-                updatedItems.Add(flowModelItem);
-            }
-            this.OnItemsDelete(movedItems, updatedItems);
-        }
-
-        public object OnItemsCut(List<ModelItem> itemsToCut)
-        {
-            Fx.Assert(this.panel != null, "This code shouldn't be hit if panel is null");
-            object metaData = OnItemsCopied(itemsToCut);
-
-            //Delete ModelItems.
-            this.OnItemsDelete(itemsToCut);
-
-            return metaData;
-        }
-
-        public void OnItemsDelete(List<ModelItem> itemsToDelete)
-        {
-            this.OnItemsDelete(itemsToDelete, null);
-        }
-
-        public void OnItemsDelete(List<ModelItem> itemsToDelete, HashSet<ModelItem> updatedItems)
-        {
-            // Filter away flowStart
-            itemsToDelete.Remove(flowStart);
-
-            HashSet<Connector> connectorsToDelete = GetRelatedConnectors(itemsToDelete);
-
-            foreach (Connector connector in connectorsToDelete)
-            {
-                DeleteLink(connector, false, updatedItems);
-            }
-
-            if (null != itemsToDelete)
-            {
-                itemsToDelete.ForEach(p => this.DeleteShape(p, updatedItems));
-            }
-        }
-
-        //This method updates the clone of currentFlowElement to reference cloned FlowElements.
-        void UpdateCloneReferences(FlowNode currentFlowElement, Dictionary<FlowNode, FlowNode> clonedFlowElements)
-        {
-            if (typeof(FlowStep).IsAssignableFrom(currentFlowElement.GetType()))
-            {
-                FlowStep currentFlowStep = (FlowStep)currentFlowElement;
-                FlowStep clonedFlowStep = (FlowStep)clonedFlowElements[currentFlowElement];
-                FlowNode nextFlowElement = currentFlowStep.Next;
-                if (nextFlowElement != null && clonedFlowElements.ContainsKey(nextFlowElement))
-                {
-                    clonedFlowStep.Next = clonedFlowElements[nextFlowElement];
-                }
-                else
-                {
-                    clonedFlowStep.Next = null;
-                }
-            }
-            else if (typeof(FlowDecision).IsAssignableFrom(currentFlowElement.GetType()))
-            {
-                FlowDecision currentFlowDecision = (FlowDecision)currentFlowElement;
-                FlowDecision clonedFlowDecision = (FlowDecision)clonedFlowElements[currentFlowElement];
-                FlowNode trueElement = currentFlowDecision.True;
-                FlowNode falseElement = currentFlowDecision.False;
-
-                if (trueElement != null && clonedFlowElements.ContainsKey(trueElement))
-                {
-                    clonedFlowDecision.True = clonedFlowElements[trueElement];
-                }
-                else
-                {
-                    clonedFlowDecision.True = null;
-                }
-
-                if (falseElement != null && clonedFlowElements.ContainsKey(falseElement))
-                {
-                    clonedFlowDecision.False = clonedFlowElements[falseElement];
-                }
-                else
-                {
-                    clonedFlowDecision.False = null;
-                }
-
-            }
-            else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(currentFlowElement.GetType()))
-            {
-                GenericFlowSwitchHelper.Copy(currentFlowElement.GetType().GetGenericArguments()[0], currentFlowElement, clonedFlowElements);
-            }
-            else
-            {
-                Debug.Fail("Unknown FlowNode");
-            }
-        }
-
-        // The logic is similar to UpdateCloneReferences.
-        // the difference is in this function, we need to set reference by Property.
-        void UpdateCloneReferenceByModelItem (FlowNode currentFlowElement,
-            Dictionary<FlowNode, ModelItem> modelItems, Dictionary<FlowNode, FlowNode> clonedFlowElements)
-        {
-            if (typeof(FlowStep).IsAssignableFrom(currentFlowElement.GetType()))
-            {
-                FlowStep currentFlowStep = (FlowStep)currentFlowElement;
-                FlowStep clonedFlowStep = (FlowStep)clonedFlowElements[currentFlowElement];
-                ModelItem modelItem = modelItems[clonedFlowStep];
-                FlowNode nextFlowElement = currentFlowStep.Next;
-                if (nextFlowElement != null && clonedFlowElements.ContainsKey(nextFlowElement))
-                {
-                    modelItem.Properties["Next"].SetValue(clonedFlowElements[nextFlowElement]);
-                }
-                else
-                {
-                    modelItem.Properties["Next"].SetValue(null);
-                }
-            }
-            else if (typeof(FlowDecision).IsAssignableFrom(currentFlowElement.GetType()))
-            {
-                if (!modelItems.ContainsKey(currentFlowElement))
-                {
-                    Fx.Assert("Should not happen.");
-                }
-                FlowDecision currentFlowDecision = (FlowDecision)currentFlowElement;
-                FlowDecision clonedFlowDecision = (FlowDecision)clonedFlowElements[currentFlowElement];
-                Fx.Assert(currentFlowDecision == clonedFlowDecision, "should not happen");
-                ModelItem modelItem = modelItems[currentFlowElement];
-                Fx.Assert(modelItem != null, "should not happen");
-                FlowNode trueElement = currentFlowDecision.True;
-                FlowNode falseElement = currentFlowDecision.False;
-
-                if (trueElement != null && clonedFlowElements.ContainsKey(trueElement))
-                {
-                    modelItem.Properties["True"].SetValue(clonedFlowElements[trueElement]);
-                }
-                else
-                {
-                    modelItem.Properties["True"].SetValue(null);
-                }
-
-                if (falseElement != null && clonedFlowElements.ContainsKey(falseElement))
-                {
-                    modelItem.Properties["False"].SetValue(clonedFlowElements[falseElement]);
-                }
-                else
-                {
-                    modelItem.Properties["False"].SetValue(null);
-                }
-
-            }
-            else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(currentFlowElement.GetType()))
-            {
-                GenericFlowSwitchHelper.ReferenceCopy(currentFlowElement.GetType().GetGenericArguments()[0],
-                    currentFlowElement,
-                    modelItems,
-                    clonedFlowElements);
-            }
-            else
-            {
-                Debug.Fail("Unknown FlowNode");
-            }
-        }
-
-        public bool CanPasteItems(List<object> itemsToPaste)
-        {
-            if (this.ShowExpanded)
-            {
-                if (itemsToPaste != null)
-                {
-                    return itemsToPaste.All(p =>
-                        typeof(Activity).IsAssignableFrom(p.GetType()) ||
-                        typeof(FlowNode).IsAssignableFrom(p.GetType()) ||
-                        (p is Type && typeof(Activity).IsAssignableFrom((Type)p)) ||
-                        (p is Type && typeof(FlowNode).IsAssignableFrom((Type)p)));
-                }
-            }
-            return false;
-        }
-
-        public void OnItemsPasted(List<object> itemsToPaste, List<object> metaData, Point pastePoint, WorkflowViewElement pastePointReference)
-        {
-            Fx.Assert(this.panel != null, "This code shouldn't be hit if panel is null");
-            HashSet<Activity> workflowElementsPasted = new HashSet<Activity>();
-            List<ModelItem> modelItemsToSelect = new List<ModelItem>();
-            bool shouldStoreCurrentSizeViewState = true;
-
-            Fx.Assert(this.ModelItem is IModelTreeItem, "this.ModelItem must implement IModelTreeItem");
-            using (EditingScope editingScope = ((IModelTreeItem)this.ModelItem).ModelTreeManager.CreateEditingScope(System.Activities.Presentation.SR.CollectionAddEditingScopeDescription))
-            {
-                if (metaData != null)
-                {
-                    List<ModelItem> modelItemsPerMetaData = new List<ModelItem>();
-                    foreach (object designerMetaData in metaData)
-                    {
-                        if (designerMetaData is List<FlowNode>)
-                        {
-                            //This is flowchart metadata.
-                            foreach (FlowNode element in designerMetaData as List<FlowNode>)
-                            {
-                                FlowStep step = element as FlowStep;
-                                if (step != null)
-                                {
-                                    workflowElementsPasted.Add(step.Action);
-                                }
-
-                                if (shouldStoreCurrentSizeViewState)
-                                {
-                                    // Pasting may change the size of flowchart; need this to undo the size change.
-                                    this.StoreCurrentSizeViewStateWithUndo();
-                                    shouldStoreCurrentSizeViewState = false;
-                                }
-
-                                ModelItem item = this.ModelItem.Properties["Nodes"].Collection.Add(element);
-
-                                // if the pasted item is a flowswitch but the default target is not in the pasted selection,
-                                // reset the DefaultCaseDisplayName to "Default".
-                                if (GenericFlowSwitchHelper.IsGenericFlowSwitch(item.ItemType) &&
-                                    item.Properties["Default"].Value == null)
-                                {
-                                    item.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].SetValue(FlowSwitchLabelFeature.DefaultCaseDisplayNameDefaultValue);
-                                }
-
-                                modelItemsPerMetaData.Add(item);
-                                if (item != null)
-                                {
-                                    if (item.ItemType.Equals(typeof(FlowStep)))
-                                    {
-                                        modelItemsToSelect.Add(item.Properties["Action"].Value);
-                                    }
-                                    else
-                                    {
-                                        modelItemsToSelect.Add(item);
-                                    }
-                                }
-                            }
-                            if (pastePoint.X > 0 && pastePoint.Y > 0)
-                            {
-                                Point panelPoint = this.TranslatePoint(pastePoint, this.panel);
-                                if (pastePointReference != null && !pastePointReference.Equals(this))
-                                {
-                                    if (pastePointReference.ModelItem != null && this.modelElement.ContainsKey(pastePointReference.ModelItem))
-                                    {
-                                        panelPoint = pastePointReference.TranslatePoint(pastePoint, this.panel);
-                                    }
-                                }
-                                panelPoint.X = panelPoint.X < 0 ? 0 : panelPoint.X;
-                                panelPoint.Y = panelPoint.Y < 0 ? 0 : panelPoint.Y;
-                                UpdateViewStateOnPastePoint(modelItemsPerMetaData, panelPoint);
-                            }
-                            else
-                            {
-                                UpdateViewStateToAvoidOverlapOnPaste(modelItemsPerMetaData);
-                            }
-                            modelItemsPerMetaData.Clear();
-                        }
-                    }
-                }
-
-                foreach (object itemToPaste in itemsToPaste)
-                {
-                    Activity workflowElementToPaste = itemToPaste as Activity;
-                    if (workflowElementToPaste != null && !workflowElementsPasted.Contains(workflowElementToPaste))
-                    {
-                        FlowStep flowStep = new FlowStep { Action = workflowElementToPaste, Next = null };
-                        if (shouldStoreCurrentSizeViewState)
-                        {
-                            // Pasting may change the size of flowchart; need this to undo the size change.
-                            this.StoreCurrentSizeViewStateWithUndo();
-                            shouldStoreCurrentSizeViewState = false;
-                        }
-                        
-                        // When paste a non-flowstep object to flowchart, the existing hintsize of the object 
-                        // should be removed, and let flowchart panel to compute the right size.
-                        VirtualizedContainerService.SetHintSize(workflowElementToPaste, null);
-                        ModelItem flowStepItem = this.ModelItem.Properties["Nodes"].Collection.Add(flowStep);
-                     
-                        if (flowStepItem != null)
-                        {
-                            modelItemsToSelect.Add(flowStepItem.Properties["Action"].Value);
-                        }
-                    }
-                }
-
-                editingScope.Complete();
-            }
-
-            this.Dispatcher.BeginInvoke(() =>
-            {
-                if (modelItemsToSelect.Count > 0 && modelItemsToSelect[0] != null)
-                {
-                    Keyboard.Focus(modelItemsToSelect[0].View as IInputElement);
-                }
-                this.Context.Items.SetValue(new Selection(modelItemsToSelect));
-            },
-            DispatcherPriority.ApplicationIdle
-            );
-        }
-
-        void UpdateViewStateToAvoidOverlapOnPaste(List<ModelItem> modelItemsPerMetaData)
-        {
-            //Determine Offset.
-            int offSetInMultipleOfGridSize = 0;
-            if (modelItemsPerMetaData.Count > 0)
-            {
-                //Check to see if the first element in the input list needs offset. Generalize that information for all ModelItems in the input list.
-                //Get location information of the first element
-                object location = this.ViewStateService.RetrieveViewState(modelItemsPerMetaData[0], shapeLocation);
-                if (location != null)
-                {
-                    Point locationOfShape = (Point)location;
-
-                    foreach (var point in this.shapeLocations)
-                    {
-                        // When the pasting occurs, the pasted point may not be exactly the same
-                        // as the copied point (with a slight margin of offset).  Therefore,
-                        // we need to detect if the pasted point is within the boundary of the copied
-                        // object.  If so, offset the pasted position such that the overlap is not observable.
-                        if ((locationOfShape.X < point.X + FreeFormPanel.GridSize &&
-                             locationOfShape.X > point.X - FreeFormPanel.GridSize) &&
-                            (locationOfShape.Y < point.Y + FreeFormPanel.GridSize &&
-                             locationOfShape.Y > point.Y - FreeFormPanel.GridSize))
-                        {
-                            offSetInMultipleOfGridSize++;
-                            locationOfShape.Offset(FreeFormPanel.GridSize, FreeFormPanel.GridSize);
-                        }
-                    }
-                }
-            }
-            //Update viewstate according to calculated offset.
-            if (offSetInMultipleOfGridSize > 0)
-            {
-                double offsetValue = FreeFormPanel.GridSize * offSetInMultipleOfGridSize;
-                OffSetViewState(new Vector(offsetValue, offsetValue), modelItemsPerMetaData);
-            }
-
-        }
-
-        void UpdateViewStateOnPastePoint(List<ModelItem> modelItemsInMetaData, Point newOrigin)
-        {
-            //Determine top left of pasted objects.
-            Point topLeft = new Point(Double.PositiveInfinity, Double.PositiveInfinity);
-            foreach (ModelItem modelItem in modelItemsInMetaData)
-            {
-                Dictionary<string, object> viewState = this.ViewStateService.RetrieveAllViewState(modelItem);
-
-                foreach (object viewStateValue in viewState.Values)
-                {
-                    PointCollection viewStatePoints = viewStateValue as PointCollection;
-                    if (viewStatePoints == null && viewStateValue is Point)
-                    {
-                        viewStatePoints = new PointCollection { (Point)viewStateValue };
-                    }
-                    if (viewStatePoints != null)
-                    {
-                        foreach (Point viewStatePoint in viewStatePoints)
-                        {
-                            topLeft.X = topLeft.X > viewStatePoint.X ? viewStatePoint.X : topLeft.X;
-                            topLeft.Y = topLeft.Y > viewStatePoint.Y ? viewStatePoint.Y : topLeft.Y;
-                        }
-                    }
-                }
-            }
-
-            //Update the viewState.
-            OffSetViewState(new Vector(newOrigin.X - topLeft.X, newOrigin.Y - topLeft.Y), modelItemsInMetaData);
-        }
-
-        PointCollection OffsetPointCollection(PointCollection collection, Vector offset)
-        {
-            if (collection == null)
-            {
-                return null;
-            }
-
-            PointCollection newcollection = new PointCollection();
-            foreach (Point pt in collection)
-            {
-                Point nPt = Point.Add(pt, offset);
-                newcollection.Add(nPt);
-            }
-            return newcollection;
-        }
-
-        void OffSetViewState(Vector offsetVector, ModelItem modelItem, bool isUndoableViewState)
-        {
-            Dictionary<string, object> modifiedValues = new Dictionary<string, object>();
-            Dictionary<string, object> viewState = this.ViewStateService.RetrieveAllViewState(modelItem);
-            foreach (KeyValuePair<string, object> viewStatePair in viewState)
-            {
-                PointCollection viewStatePoints = viewStatePair.Value as PointCollection;
-                if (viewStatePoints != null)
-                {
-
-                    modifiedValues.Add(viewStatePair.Key, OffsetPointCollection(viewStatePoints, offsetVector));
-                }
-                else if (viewStatePair.Value is Point)
-                {
-                    modifiedValues.Add(viewStatePair.Key, Point.Add((Point)viewStatePair.Value, offsetVector));
-                }
-            }
-            foreach (KeyValuePair<string, object> kvPair in modifiedValues)
-            {
-                if (isUndoableViewState)
-                {
-                    this.ViewStateService.StoreViewStateWithUndo(modelItem, kvPair.Key, kvPair.Value);
-                }
-                else
-                {
-                    this.ViewStateService.StoreViewState(modelItem, kvPair.Key, kvPair.Value);
-                }
-            }
-
-            modifiedValues.Clear();
-        }
-
-
-        void OffSetViewState(Vector offsetVector, List<ModelItem> modelItemsInMetaData)
-        {
-            foreach (ModelItem modelItem in modelItemsInMetaData)
-            {
-                OffSetViewState(offsetVector, modelItem, false);
-            }
-        }
-
-        HashSet<Connector> GetRelatedConnectors(IEnumerable<ModelItem> modelItems)
-        {
-            HashSet<Connector> connectors = new HashSet<Connector>();
-            foreach (ModelItem shapeModelItem in modelItems)
-            {
-                UIElement deleteElement = (UIElement)(this.modelElement[shapeModelItem]);
-                List<Connector> attachedConnectors = GetAttachedConnectors(deleteElement);
-                connectors.UnionWith(attachedConnectors);
-            }
-            return connectors;
-        }
-
-        //This does a shallow copy of all the public properties with getter and setter. 
-        //It also replicates Xaml Attached properties.
-        FlowNode CloneFlowElement(FlowNode flowElement, Predicate<AttachableMemberIdentifier> allowAttachableProperty = null)
-        {
-            Type flowElementType = flowElement.GetType();
-            FlowNode clonedObject = (FlowNode)Activator.CreateInstance(flowElementType);
-            foreach (PropertyInfo propertyInfo in flowElementType.GetProperties())
-            {
-                if (propertyInfo.GetGetMethod() != null && propertyInfo.GetSetMethod() != null)
-                {
-                    propertyInfo.SetValue(clonedObject, propertyInfo.GetValue(flowElement, null), null);
-                }
-            }
-
-            //Replicate any Xaml Attached Property.
-            KeyValuePair<AttachableMemberIdentifier, object>[] attachedProperties = new KeyValuePair<AttachableMemberIdentifier, object>[AttachablePropertyServices.GetAttachedPropertyCount(flowElement)];
-            AttachablePropertyServices.CopyPropertiesTo(flowElement, attachedProperties, 0);
-            foreach (KeyValuePair<AttachableMemberIdentifier, object> attachedProperty in attachedProperties)
-            {
-                if (allowAttachableProperty != null && !allowAttachableProperty(attachedProperty.Key))
-                {
-                    continue;
-                }
-                AttachablePropertyServices.SetProperty(clonedObject, attachedProperty.Key, attachedProperty.Value);
-            }
-
-            return clonedObject;
-        }
-
-        public bool IsDefaultContainer
-        {
-            get { return true; }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Helpers.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.Helpers.cs
deleted file mode 100644 (file)
index 6484425..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-    //------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Windows;
-    using System.Windows.Documents;
-    using System.Windows.Media;
-    using System.Windows.Shapes;
-    using System.Activities.Statements;
-    using System.Activities.Presentation.Model;
-    using System.Linq;
-    using System.Runtime;
-    using System.Globalization;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.Internal.PropertyEditing;
-
-    partial class FlowchartDesigner
-    {
-        //Returns true if visual is on the visual tree for point p relative to the panel.
-        bool IsVisualHit(UIElement visual, UIElement reference, Point point)
-        {
-            bool visualIsHit = false;
-            HitTestResult result = VisualTreeHelper.HitTest(reference, point);
-            if (result != null)
-            {
-                DependencyObject obj = result.VisualHit;
-                while (obj != null)
-                {
-                    if (visual.Equals(obj))
-                    {
-                        visualIsHit = true;
-                        break;
-                    }
-                    obj = VisualTreeHelper.GetParent(obj);
-                }
-            }
-            return visualIsHit;
-        }
-
-        /// <summary>
-        /// Priority order of finding the connection point:
-        /// 1. Unoccupied (free) connection point closest to the object
-        /// 2. Existing incoming/outgoing connection point, depending on the 
-        /// Fallback: Connection point closest to the object)
-        /// </summary>
-        /// <param name="srcConnPoints"></param>
-        /// <param name="destConnPoints"></param>
-        /// <param name="srcConnPoint"></param>
-        /// <param name="destConnPoint"></param>
-        internal void FindBestMatchConnectionPointPair(
-            List<ConnectionPoint> srcConnPoints, 
-            List<ConnectionPoint> destConnPoints, 
-            out ConnectionPoint srcConnPoint, 
-            out ConnectionPoint destConnPoint)
-        {
-            double minDist = double.PositiveInfinity;
-            double dist;
-            ConnectionPoint tempConnPoint;
-            srcConnPoint = null;
-            destConnPoint = null;
-
-            List<ConnectionPoint> candidateSrcConnPoints = FindCandidatePointsForLink(srcConnPoints, ConnectionPointKind.Incoming);
-            List<ConnectionPoint> candidateDestConnPoints = FindCandidatePointsForLink(destConnPoints, ConnectionPointKind.Outgoing);
-
-            foreach (ConnectionPoint connPoint in candidateSrcConnPoints)
-            {
-                tempConnPoint = FindClosestConnectionPoint(connPoint, candidateDestConnPoints, out dist);
-                if (dist < minDist)
-                {
-                    minDist = dist;
-                    srcConnPoint = connPoint;
-                    destConnPoint = tempConnPoint;
-                }
-            }
-
-            Fx.Assert(srcConnPoint != null, "No ConnectionPoint found");
-            Fx.Assert(destConnPoint != null, "No ConnectionPoint found");
-        }
-
-        private static List<ConnectionPoint> FindCandidatePointsForLink(List<ConnectionPoint> destConnPoints, ConnectionPointKind excludePointType)
-        {
-            List<ConnectionPoint> candidateDestConnPoints;
-            IEnumerable<ConnectionPoint> freeDestConnPoints = destConnPoints.Where(p =>
-                    p.PointType != excludePointType &&
-                    !p.AttachedConnectors.Any());
-
-            if (freeDestConnPoints.Any())
-            {
-                candidateDestConnPoints = freeDestConnPoints.ToList();
-            }
-            else
-            {
-                IEnumerable<ConnectionPoint> availablePoints =
-                    destConnPoints.Where(
-                        p => p.PointType != excludePointType &&
-                        p.AttachedConnectors.Any(connector => FreeFormPanel.GetDestinationConnectionPoint(connector).Equals(p)));
-
-                candidateDestConnPoints = availablePoints.Any() ? availablePoints.ToList() : destConnPoints;
-            }
-
-            return candidateDestConnPoints;
-        }
-
-        /// <summary>
-        /// for connection:
-        /// 1. return all free connection points are available on the object
-        /// 2. return any existing points that are already connected on the object, excluding the unmatched type.
-        ///    Fallback: return all connection points of the given object
-        /// </summary>
-        /// <param name="sourceConnectionPoint"></param>
-        /// <param name="dest"></param>
-        /// <param name="errorMessage"></param>
-        /// <returns></returns>
-        ConnectionPoint FindBestMatchDestConnectionPoint(ConnectionPoint sourceConnectionPoint, UIElement dest, out string errorMessage)
-        {
-            List<ConnectionPoint> destConnPoints = FlowchartDesigner.GetConnectionPoints(dest);
-            Fx.Assert(null != destConnPoints && destConnPoints.Any(), "A flownode designer object should have one connection point.");
-
-            errorMessage = string.Empty;
-
-            if (sourceConnectionPoint.PointType == ConnectionPointKind.Incoming)
-            {
-                errorMessage = SR.FCInvalidLink;
-                return null;
-            }
-            
-            ConnectionPoint destConnectionPoint;
-            double minDist;
-            List<ConnectionPoint> candidateDestConnPoints = FindCandidatePointsForLink(destConnPoints, ConnectionPointKind.Outgoing);
-            destConnectionPoint = FindClosestConnectionPoint(sourceConnectionPoint, candidateDestConnPoints, out minDist);
-
-            return destConnectionPoint;
-        }
-
-        internal ConnectionPoint FindClosestConnectionPoint(ConnectionPoint srcConnPoint, List<ConnectionPoint> destConnPoints, out double minDist)
-        {
-            return FindClosestConnectionPoint(srcConnPoint.Location, destConnPoints, out minDist);
-        }
-
-        internal ConnectionPoint FindClosestConnectionPoint(Point srcConnPointLocation, List<ConnectionPoint> destConnPoints, out double minDist)
-        {
-            return ConnectionPoint.GetClosestConnectionPoint(destConnPoints, srcConnPointLocation, out minDist);
-        }
-
-        ConnectionPoint FindClosestConnectionPointNotOfType(ConnectionPoint srcConnectionPoint, List<ConnectionPoint> targetConnectionPoints, ConnectionPointKind illegalConnectionPointKind)
-        {
-            double minDist;
-            List<ConnectionPoint> filteredConnectionPoints = new List<ConnectionPoint>();
-            foreach (ConnectionPoint connPoint in targetConnectionPoints)
-            {
-                if (connPoint != null && connPoint.PointType != illegalConnectionPointKind && !connPoint.Equals(srcConnectionPoint))
-                {
-                    filteredConnectionPoints.Add(connPoint);
-                }
-            }
-            return FindClosestConnectionPoint(srcConnectionPoint, filteredConnectionPoints, out minDist);
-        }
-
-        void RemoveAdorner(UIElement adornedElement, Type adornerType)
-        {
-            Fx.Assert(adornedElement != null, "Invalid argument");
-            Fx.Assert(typeof(Adorner).IsAssignableFrom(adornerType), "Invalid argument");
-            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(adornedElement);
-            if (adornerLayer != null)
-            {
-                Adorner[] adorners = adornerLayer.GetAdorners(adornedElement);
-                if (adorners != null)
-                {
-                    foreach (Adorner adorner in adorners)
-                    {
-                        if (adornerType.IsAssignableFrom(adorner.GetType()))
-                        {
-                            adornerLayer.Remove(adorner);
-                        }
-                    }
-                }
-            }
-        }
-
-        //Returns true if child is a member of the tree rooted at the parent;
-        bool IsParentOf(ModelItem parent, ModelItem child)
-        {
-            Fx.Assert(parent != null, "Invalid argument");
-            bool isParentOf = false;
-            while (child != null)
-            {
-                if (parent.Equals(child))
-                {
-                    isParentOf = true;
-                    break;
-                }
-                child = child.Parent;
-            }
-            return isParentOf;
-        }
-
-        ConnectionPoint ConnectionPointHitTest(UIElement element, Point hitPoint)
-        {
-            List<ConnectionPoint> connectionPoints = new List<ConnectionPoint>();
-            List<ConnectionPoint> defaultConnectionPoints = FlowchartDesigner.GetConnectionPoints(element);
-            connectionPoints.InsertRange(0, defaultConnectionPoints);
-            connectionPoints.Add(FlowchartDesigner.GetTrueConnectionPoint(element));
-            connectionPoints.Add(FlowchartDesigner.GetFalseConnectionPoint(element));
-            return FreeFormPanel.ConnectionPointHitTest(hitPoint, connectionPoints, this.panel);
-        }
-
-        internal int NumberOfIncomingLinks(UIElement designer)
-        {
-            return GetInComingConnectors(designer).Count;
-        }
-
-        List<Connector> GetAttachedConnectors(UIElement shape)
-        {
-            HashSet<Connector> attachedConnectors = new HashSet<Connector>();
-            List<ConnectionPoint> allConnectionPoints = GetAllConnectionPoints(shape);
-            foreach (ConnectionPoint connPoint in allConnectionPoints)
-            {
-                if (connPoint != null)
-                {
-                    foreach (Connector connector in connPoint.AttachedConnectors)
-                    {
-                        attachedConnectors.Add(connector);
-                    }
-                }
-            }
-            return attachedConnectors.ToList<Connector>();
-        }
-
-        List<Connector> GetOutGoingConnectors(UIElement shape)
-        {
-            List<Connector> outGoingConnectors = new List<Connector>();
-            List<ConnectionPoint> allConnectionPoints = GetAllConnectionPoints(shape);
-            foreach (ConnectionPoint connPoint in allConnectionPoints)
-            {
-                if (connPoint != null)
-                {
-                    outGoingConnectors.AddRange(connPoint.AttachedConnectors.Where(p => FreeFormPanel.GetSourceConnectionPoint(p).Equals(connPoint)));
-                }
-            }
-            return outGoingConnectors;
-        }
-
-        List<Connector> GetInComingConnectors(UIElement shape)
-        {
-            List<Connector> inComingConnectors = new List<Connector>();
-            List<ConnectionPoint> allConnectionPoints = GetAllConnectionPoints(shape);
-            foreach (ConnectionPoint connPoint in allConnectionPoints)
-            {
-                if (connPoint != null)
-                {
-                    inComingConnectors.AddRange(connPoint.AttachedConnectors.Where(p => FreeFormPanel.GetDestinationConnectionPoint(p).Equals(connPoint)));
-                }
-            }
-            return inComingConnectors;
-        }
-
-        static List<ConnectionPoint> GetAllConnectionPoints(UIElement shape)
-        {
-            List<ConnectionPoint> allConnectionPoints = new List<ConnectionPoint>(6);
-            allConnectionPoints.AddRange(FlowchartDesigner.GetConnectionPoints(shape));
-            allConnectionPoints.Add(FlowchartDesigner.GetTrueConnectionPoint(shape));
-            allConnectionPoints.Add(FlowchartDesigner.GetFalseConnectionPoint(shape));
-            return allConnectionPoints;
-        }
-
-        Point SnapPointToGrid(Point pt)
-        {
-            pt.X -= pt.X % FreeFormPanel.GridSize;
-            pt.Y -= pt.Y % FreeFormPanel.GridSize;
-            pt.X = pt.X < 0 ? 0 : pt.X;
-            pt.Y = pt.Y < 0 ? 0 : pt.Y;
-            return pt;
-        }
-
-        //This snaps the center of the element to grid.
-        //This is called only when dropping an item 
-        //Whereever, shapeAnchorPoint is valid, it is made co-incident with the drop location.
-        Point SnapVisualToGrid(UIElement element, Point location, Point shapeAnchorPoint, bool isAnchorPointValid)
-        {
-            Fx.Assert(element != null, "Input UIElement is null");
-            element.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
-            Point oldCenter = location;
-            if (!isAnchorPointValid)
-            {
-                //shapeAnchorPoint is set to (-1, -1) in case where it does not make sense (Eg. toolbox drop).
-                //In that scenario align the center of the shape to the drop point.
-                location.X -= element.DesiredSize.Width / 2;
-                location.Y -= element.DesiredSize.Height / 2;
-            }
-            else
-            {
-                //The else part also takes care of the ActivityDesigner case, 
-                //where the drag handle is outside the shape.
-                location.X -= shapeAnchorPoint.X;
-                location.Y -= shapeAnchorPoint.Y;
-                oldCenter = new Point(location.X + element.DesiredSize.Width / 2, location.Y + element.DesiredSize.Height / 2);
-            }
-
-            Point newCenter = SnapPointToGrid(oldCenter);
-
-            location.Offset(newCenter.X - oldCenter.X, newCenter.Y - oldCenter.Y);
-
-            if (location.X < 0)
-            {
-                double correction = FreeFormPanel.GridSize - ((location.X * (-1)) % FreeFormPanel.GridSize);
-                location.X = (correction == FreeFormPanel.GridSize) ? 0 : correction;
-            }
-            if (location.Y < 0)
-            {
-                double correction = FreeFormPanel.GridSize - ((location.Y * (-1)) % FreeFormPanel.GridSize);
-                location.Y = (correction == FreeFormPanel.GridSize) ? 0 : correction;
-            }
-            return location;
-        }
-
-
-        // This creates a link from modelItems[i] to modelItems[i+1] - foreach i between 0 and modelItems.Count-2;
-        void CreateLinks(List<ModelItem> modelItems)
-        {
-            Fx.Assert(modelItems.Count > 1, "Link creation requires more than one ModelItem");
-            modelItems.ForEach(p => { Fx.Assert(this.modelElement.ContainsKey(p), "View should be in the flowchart"); });
-            ModelItem[] modelItemsArray = modelItems.ToArray();
-            string errorMessage = string.Empty;
-            for (int i = 0; i < modelItemsArray.Length - 1; i++)
-            {
-                string error = string.Empty;
-                CreateLinkGesture(this.modelElement[modelItemsArray[i]], this.modelElement[modelItemsArray[i + 1]], out error, null);
-                if (!string.Empty.Equals(error))
-                {
-                    errorMessage += string.Format(CultureInfo.CurrentUICulture, "Link{0}:{1}\n", i + 1, error);
-                }
-            }
-            if (!string.Empty.Equals(errorMessage))
-            {
-                ErrorReporting.ShowErrorMessage(errorMessage);
-            }
-        }
-
-        // This is a utility function to pack all the elements in an array that match a particular predicate
-        // to the end of the array, while maintaining the rest of the system unchanged.
-        public static bool Pack<T>(T[] toPack, Func<T, bool> isPacked) where T : class
-        {
-            if (toPack == null)
-            {
-                throw FxTrace.Exception.ArgumentNull("toPack");
-            }
-            if (isPacked == null)
-            {
-                throw FxTrace.Exception.ArgumentNull("isPacked");
-            }
-            int count = toPack.Length;
-            bool needRearrange = false;
-            bool found = false;
-            T[] arranged = new T[count];
-            for (int i = 0; i < count; i++)
-            {
-                if (isPacked(toPack[i]))
-                {
-                    arranged[i] = toPack[i];
-                    toPack[i] = null;
-                    found = true;
-                }
-                else
-                {
-                    if (found)
-                    {
-                        needRearrange = true;
-                    }
-                    arranged[i] = null;
-                }
-            }
-            if (needRearrange)
-            {
-                int j = 0;
-                for (int i = 0; i < count; i++)
-                {
-                    if (toPack[i] != null)
-                    {
-                        toPack[j++] = toPack[i];
-                    }
-                }
-                j = count;
-                for (int i = 0; i < count; i++)
-                {
-                    int k = count - i - 1;
-                    if (arranged[k] != null)
-                    {
-                        toPack[--j] = arranged[k];
-                    }
-                }
-            }
-            else
-            {
-                for (int i = 0; i < count; i++)
-                {
-                    if (arranged[i] != null)
-                    {
-                        toPack[i] = arranged[i];
-                    }
-                }
-            }
-            return needRearrange;
-        }
-
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChangeReactions.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChangeReactions.cs
deleted file mode 100644 (file)
index fbd5327..0000000
+++ /dev/null
@@ -1,837 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Diagnostics;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Linq;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Documents;
-    using System.Windows.Threading;
-    using System.Windows.Input;
-    using System.Windows.Media;
-
-    partial class FlowchartDesigner
-    {
-        ModelItem flowStart;
-        const string ExpandViewStateKey = "IsExpanded";
-
-        void CreateStartSymbol()
-        {
-            //Instantiate the start symbol
-            StartSymbol start = System.Activities.Core.Presentation.StartSymbol.CreateStartSymbol(this.Context);
-            start.Text = "Start";
-            this.flowStart = start.ModelItem;
-            DragDropHelper.SetCompositeView(start, this);
-            modelElement.Add(flowStart, start);
-            start.SizeChanged += new SizeChangedEventHandler(ChildSizeChanged);
-            this.StartSymbol = start;
-            PopulateConnectionPoints(this.StartSymbol, null);
-            this.StartSymbol.MouseEnter += new MouseEventHandler(ChildElement_MouseEnter);
-            this.StartSymbol.MouseLeave += new MouseEventHandler(ChildElement_MouseLeave);
-
-            //Getting the View state information.
-            object locationOfShape = this.ViewStateService.RetrieveViewState(this.ModelItem, shapeLocation);
-            object sizeOfShape = this.ViewStateService.RetrieveViewState(this.ModelItem, shapeSize);
-            if (locationOfShape != null)
-            {
-                Point locationPt = (Point)locationOfShape;
-                FreeFormPanel.SetLocation(this.StartSymbol, locationPt);
-            }
-            else
-            {
-                //Set the location of the start symbol.
-                this.StartSymbol.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
-                double startHeight = this.StartSymbol.DesiredSize.Height;
-                double startWidth = this.StartSymbol.DesiredSize.Width;
-                Point startPoint = new Point(panel.MinWidth / 2, startSymbolTopMargin + startHeight / 2);
-                Point startLocation = SnapVisualToGrid(this.StartSymbol, startPoint, new Point(-1, -1), false);
-                FreeFormPanel.SetLocation(this.StartSymbol, startLocation);
-                this.internalViewStateChange = true;
-                this.StoreShapeViewState(this.ModelItem, startLocation);
-                this.internalViewStateChange = false;
-            }
-            if (sizeOfShape != null)
-            {
-                FreeFormPanel.SetChildSize(this.StartSymbol, (Size)sizeOfShape);
-            }
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            // Make flowchart designer always collapse by default, but only if the user didnt explicitly specify collapsed or expanded.
-            ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
-            if (viewStateService != null)
-            {
-                bool? isExpanded = (bool?)viewStateService.RetrieveViewState((ModelItem)newItem, ExpandViewStateKey);
-                if (isExpanded == null)
-                {
-                    viewStateService.StoreViewState((ModelItem)newItem, ExpandViewStateKey, false);
-                }
-            }
-            base.OnModelItemChanged(newItem);
-
-        }
-
-        void OnViewStateChanged(object sender, ViewStateChangedEventArgs e)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            Fx.Assert(e.ParentModelItem != null, "ViewState should be associated with some modelItem");
-            Connector changedConnector = null;
-            if (e.ParentModelItem == this.ModelItem)
-            {
-                if (string.Equals(e.Key, FlowchartSizeFeature.WidthPropertyName, StringComparison.Ordinal))
-                {
-                    this.FlowchartWidth = (double)TypeDescriptor.GetProperties(this.ModelItem)[FlowchartSizeFeature.WidthPropertyName].GetValue(this.ModelItem);
-                }
-                else if (string.Equals(e.Key, FlowchartSizeFeature.HeightPropertyName, StringComparison.Ordinal))
-                {
-                    this.FlowchartHeight = (double)TypeDescriptor.GetProperties(this.ModelItem)[FlowchartSizeFeature.HeightPropertyName].GetValue(this.ModelItem);
-                }
-            }
-            if ((IsFlowNode(e.ParentModelItem) || this.ModelItem.Equals(e.ParentModelItem)) && !this.internalViewStateChange)
-            {
-                ModelItem itemOnCanvas = this.GetCorrespondingElementOnCanvas(e.ParentModelItem);
-                if (this.modelElement.ContainsKey(itemOnCanvas))
-                {
-                    if (e.Key.Equals(shapeLocation))
-                    {
-                        if (e.NewValue != null)
-                        {
-                            FreeFormPanel.SetLocation(this.modelElement[itemOnCanvas], (Point)e.NewValue);
-                            this.panel.InvalidateMeasure();
-                            if (e.OldValue != null)
-                            {
-                                this.shapeLocations.Remove((Point)e.OldValue);
-                            }
-                            this.shapeLocations.Add((Point)e.NewValue);
-                        }
-                    }
-                    else
-                    {
-                        if (this.ModelItem.Equals(e.ParentModelItem)
-                            && e.Key.Equals(ConnectorViewStateKey))
-                        {
-                            changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, e.ParentModelItem.Properties["StartNode"].Value, "StartNode");
-                        }
-                        else if (typeof(FlowStep).IsAssignableFrom(e.ParentModelItem.ItemType)
-                            && e.Key.Equals(ConnectorViewStateKey))
-                        {
-                            changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, e.ParentModelItem.Properties["Next"].Value, "Next");
-                        }
-                        else if (typeof(FlowDecision).IsAssignableFrom(e.ParentModelItem.ItemType))
-                        {
-                            if (e.Key.Equals(TrueConnectorViewStateKey))
-                            {
-                                changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, e.ParentModelItem.Properties["True"].Value, "True");
-                            }
-                            else if (e.Key.Equals(FalseConnectorViewStateKey))
-                            {
-                                changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, e.ParentModelItem.Properties["False"].Value, "False");
-                            }
-                        }
-                        else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(e.ParentModelItem.ItemType))
-                        {
-                            if (e.Key.Equals(FlowchartDesigner.FlowSwitchDefaultViewStateKey, StringComparison.CurrentCulture))
-                            {
-                                changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, e.ParentModelItem.Properties["Default"].Value, e.Key);
-                            }
-                            else if (e.Key.EndsWith(CaseViewStateKeyAppendString, StringComparison.CurrentCulture))
-                            {
-                                string switchCaseName = e.Key.Substring(0, e.Key.Length - CaseViewStateKeyAppendString.Length);
-                                object switchCase = switchCaseName;
-                                Type genericType = e.ParentModelItem.ItemType.GetGenericArguments()[0];
-                                switchCase = GenericFlowSwitchHelper.GetObject(switchCaseName, genericType);
-
-                                if (GenericFlowSwitchHelper.ContainsCaseKey(e.ParentModelItem.Properties["Cases"], switchCase))
-                                {
-                                    //Prepending with GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier to differentiate between the property Default and the key Default.
-                                    changedConnector = this.GetLinkOnCanvas(e.ParentModelItem, GenericFlowSwitchHelper.GetCaseModelItem(e.ParentModelItem.Properties["Cases"], switchCase), GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier + switchCase);
-                                }
-                            }
-
-                        }
-                    }
-                }
-            }
-            if (changedConnector != null)
-            {
-                if (e.NewValue != null)
-                {
-                    Fx.Assert(e.NewValue is PointCollection, "e.NewValue is not PointCollection");
-                    changedConnector.Points = e.NewValue as PointCollection;
-                    this.panel.RemoveConnectorEditor();
-                    this.panel.InvalidateMeasure();
-                }
-            }
-        }
-
-        void RefreshFlowSwitchLinkModelItem(ModelItem flowSwitchModelItem, Connector connector, bool isDefault)
-        {
-            ModelItem oldLinkModelItem = FlowchartDesigner.GetLinkModelItem(connector);
-
-            IModelTreeItem modelTreeItem = flowSwitchModelItem as IModelTreeItem;
-            IFlowSwitchLink link = GenericFlowSwitchHelper.CreateFlowSwitchLink(flowSwitchModelItem.ItemType, flowSwitchModelItem, ((IFlowSwitchLink)oldLinkModelItem.GetCurrentValue()).CaseObject, isDefault);
-            ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
-            link.ModelItem = linkModelItem;
-
-            FlowchartDesigner.SetLinkModelItem(connector, linkModelItem);
-            connector.SetBinding(Connector.LabelTextProperty, link.CreateConnectorLabelTextBinding());
-
-            Selection currentSelection = this.Context.Items.GetValue<Selection>();
-            if (currentSelection.SelectedObjects.Contains(oldLinkModelItem))
-            {
-                Selection.Toggle(this.Context, oldLinkModelItem);
-                Selection.Select(this.Context, linkModelItem);
-            }
-        }
-
-        //For flowchart reacting to ModelItem changes we are concerned of the following scenarios:
-        //1. FlowElements being deleted from the Flowchart.Nodes collection or Flowswitch cases being deleted from ItemsCollection
-        //2. FlowElements being added to the Flowchart.Nodes collection or Flowswitch cases being added from ItemsCollection
-        //3. Properties being changed in FlowStep(Next), FlowDecision(True, false), FlowSwitch(Default) (Any of the flowelemnet should be present in the elements collection).
-        //4. Flowswitch cases being added/remove via Cases.Dicitionary
-        void ModelTreeManager_EditingScopeCompleted(object sender, EditingScopeEventArgs e)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            foreach (Change change in e.EditingScope.Changes)
-            {
-                //Case 1, 2.
-                if (change is CollectionChange)
-                {
-                    CollectionChange collectionChange = change as CollectionChange;
-                    if (collectionChange.Collection.Equals(this.ModelItem.Properties["Nodes"].Collection))
-                    {
-                        if (collectionChange.Operation == CollectionChange.OperationType.Delete)
-                        {
-                            this.DeleteShapeVisual(this.flowNodeToUIElement[collectionChange.Item]);
-                        }
-                        else
-                        {
-                            this.AddFlowElementsToDesigner(new List<ModelItem> { collectionChange.Item });
-                            //An editing scope change references the ModelItem. 
-                            //Hence in case of multiple changes to the same modelItem within the same EditingScope, we will see all the changes on the ModelItem for each change.
-                            //Eg. Suppose following two changes are in the same editing scope: 1. Add ModelItem item1 to Collection, 2. Change a property on this MI, item1.Prop1
-                            //In this case, EditingScope.Changes.Count will be 2. 
-                            //Since an EditingScope change keeps a reference to the ModelItem changed, when we process the first change, the second change would already be reflected on the ModelItem.
-                            //Hence, while processing CollectionChange for item1, item1.Prop1 will already reflect the new value. 
-                            //Also there will be another change notifying the change in item1.Prop1.
-                            //AddFlowElementsToDesigner() method, walks through the properties of a newly added item and creates any links if required. 
-                            //This is necessary for Paste scenario where we want to create links between Items added to the Nodes Collection.
-                            //Because of this behavior of AddFlowElementsToDesigner(), before reacting to a property change for adding a link, we will always verify that the link does not already exists.
-                        }
-                    }
-                    if (collectionChange.Collection.Parent != null && collectionChange.Collection.Parent.Parent != null &&
-                        this.ModelItem.Properties["Nodes"].Collection.Contains(collectionChange.Collection.Parent.Parent) &&
-                        collectionChange.Collection.Parent.Parent.ItemType.IsGenericType &&
-                        collectionChange.Collection.Parent.Parent.ItemType.GetGenericTypeDefinition() == typeof(FlowSwitch<>))
-                    {
-                        ModelItem item = collectionChange.Item;
-                        string caseName = GenericFlowSwitchHelper.GetString(item.Properties["Key"].ComputedValue, item.Properties["Key"].PropertyType);
-
-                        Connector connector = this.GetLinkOnCanvas(collectionChange.Collection.Parent.Parent,
-                            item.Properties["Value"].Value, GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier + caseName);
-                        if (collectionChange.Operation == CollectionChange.OperationType.Delete)
-                        {
-                            if (connector != null)
-                            {
-                                this.DeleteLinkVisual(connector);
-                            }
-                        }
-                        else if (collectionChange.Operation == CollectionChange.OperationType.Insert)
-                        {
-                            if (connector == null)
-                            {
-                                //Prepending GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier to differentiate between the FlowSwitch's Property Default and key Default.
-                                connector = this.CreatePropertyLink(collectionChange.Collection.Parent.Parent,
-                                    item.Properties["Value"].Value,
-                                    GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier + caseName);
-                                Fx.Assert(connector != null, "Link not created");
-                                this.panel.Children.Add(connector);
-                            }
-                            else
-                            {
-                                RefreshFlowSwitchLinkModelItem(/* flowSwitchModelItem = */ collectionChange.Collection.Parent.Parent, connector, false);
-                            }
-                        }
-                    }
-                }
-                else if (change is DictionaryChange)
-                {
-                    // case 4
-                    DictionaryChange dictionaryChange = change as DictionaryChange;
-
-                    if (dictionaryChange.Dictionary.Parent != null &&
-                        this.ModelItem.Properties["Nodes"].Collection.Contains(dictionaryChange.Dictionary.Parent) &&
-                        dictionaryChange.Dictionary.Parent.ItemType.IsGenericType &&
-                        dictionaryChange.Dictionary.Parent.ItemType.GetGenericTypeDefinition() == typeof(FlowSwitch<>))
-                    {
-                        ModelItem flowSwitchModelItem = dictionaryChange.Dictionary.Parent;
-                        ModelItem caseTargetModelItem = dictionaryChange.Value;
-                        string caseName = GenericFlowSwitchHelper.GetString(dictionaryChange.Key == null ? null : dictionaryChange.Key.GetCurrentValue(), dictionaryChange.Key == null ? null : dictionaryChange.Key.ItemType);
-                        string caseNameInModelItem = GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier + caseName;
-
-                        Connector connector = this.GetLinkOnCanvas(
-                            flowSwitchModelItem,
-                            caseTargetModelItem,
-                            caseNameInModelItem);
-
-                        if (dictionaryChange.Operation == DictionaryChange.OperationType.Delete)
-                        {
-                            if (connector != null)
-                            {
-                                this.DeleteLinkVisual(connector);
-                            }
-                        }
-                        else if (dictionaryChange.Operation == DictionaryChange.OperationType.Insert)
-                        {
-                            if (connector == null)
-                            {
-                                connector = this.CreatePropertyLink(
-                                    flowSwitchModelItem,
-                                    caseTargetModelItem,
-                                    caseNameInModelItem);
-                                this.panel.Children.Add(connector);
-                            }
-                        }
-                    }
-                }
-                //Case 3.
-                else if (change is PropertyChange)
-                {
-                    PropertyChange propertyChange = change as PropertyChange;
-
-                    if (this.ModelItem.Properties["Nodes"].Collection.Contains(propertyChange.Owner)
-                        || (propertyChange.PropertyName == "StartNode" && propertyChange.Owner == this.ModelItem))
-                    {
-                        if (propertyChange.OldValue != null
-                            && IsFlowNode(propertyChange.OldValue))
-                        {
-                            Connector link = GetLinkOnCanvas(propertyChange.Owner, propertyChange.OldValue, propertyChange.PropertyName);
-                            //Debug.Assert(link != null, "Link not found on designer");
-                            if (link != null)
-                            {
-                                this.DeleteLinkVisual(link);
-                            }
-                        }
-                        if (propertyChange.NewValue != null
-                            && IsFlowNode(propertyChange.NewValue))
-                        {
-                            Connector oldLink = GetLinkOnCanvas(propertyChange.Owner, propertyChange.NewValue, propertyChange.PropertyName);
-                            //If this connector has already been added don't add again. 
-                            if (oldLink == null)
-                            {
-                                Connector link = CreatePropertyLink(propertyChange.Owner, propertyChange.NewValue, propertyChange.PropertyName);
-                                Fx.Assert(link != null, "Link not created");
-                                this.panel.Children.Add(link);
-                            }
-                            else
-                            {
-                                if (GenericFlowSwitchHelper.IsGenericFlowSwitch(propertyChange.Owner.ItemType))
-                                {
-                                    this.RefreshFlowSwitchLinkModelItem(/* flowSwitchModelItem = */ propertyChange.Owner, oldLink, true);
-                                }
-                            }
-                        }
-
-                        //handling for the case where the FlowStep.Action changes:
-                        //Explicitly adding a check for FlowStep, because other FlowNodes have properties of type Activity, which we don't want to react to.
-                        //AddFlowElementsToDesigner() will add the links originating out of the shape that is changing.
-                        //We have to take care of refreshing the links coming into the shape that is changing.
-                        if (typeof(FlowStep).IsAssignableFrom(propertyChange.Owner.ItemType))
-                        {
-                            List<Connector> oldIncomingConnectors = new List<Connector>();
-                            if (propertyChange.OldValue != null && IsFlowStepAction(propertyChange.OldValue))
-                            {
-                                UIElement oldShape = this.flowNodeToUIElement[propertyChange.Owner];
-                                oldIncomingConnectors = this.GetInComingConnectors(oldShape);
-                                this.DeleteShapeVisual(oldShape);
-                            }
-                            if (propertyChange.NewValue != null && IsFlowStepAction(propertyChange.NewValue))
-                            {
-                                this.AddFlowElementsToDesigner(new List<ModelItem> { propertyChange.Owner });
-                                foreach (Connector oldConnector in oldIncomingConnectors)
-                                {
-                                    Connector newConnector = CreateLink(FreeFormPanel.GetSourceConnectionPoint(oldConnector),
-                                        this.flowNodeToUIElement[propertyChange.Owner], FlowchartDesigner.GetLinkModelItem(oldConnector));
-                                    this.panel.Children.Add(newConnector);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        void AddFlowElementsToDesigner(IList<ModelItem> flowElementMICollection, bool addConnectorAfterLoaded = false)
-        {
-            Queue<ModelItem> flowElementsToProcess = new Queue<ModelItem>();
-            List<UIElement> viewsAdded = new List<UIElement>();
-            foreach (ModelItem model in flowElementMICollection)
-            {
-                ModelItem itemOnCanvas = GetCorrespondingElementOnCanvas(model);
-                if (!this.modelElement.ContainsKey(itemOnCanvas))
-                {
-                    flowElementsToProcess.Enqueue(model);
-                    viewsAdded.Add(ProcessAndGetModelView(itemOnCanvas));
-                }
-                else if (!this.panel.Children.Contains(this.modelElement[itemOnCanvas]))
-                {
-                    flowElementsToProcess.Enqueue(model);
-                    viewsAdded.Add(this.modelElement[itemOnCanvas]);
-                }
-            }
-
-            ModelItem startNodeModelItem = null;
-            List<Tuple<UIElement, UIElement, ModelItem>> elem2elemConnections = new List<Tuple<UIElement, UIElement, ModelItem>>();
-            List<Tuple<ConnectionPoint, UIElement, ModelItem>> point2elemConnections = new List<Tuple<ConnectionPoint, UIElement, ModelItem>>();
-
-            while (flowElementsToProcess.Count > 0)
-            {
-                ModelItem currentMI = flowElementsToProcess.Dequeue();
-                //Create links for the current FlowNode.
-                //First of all check if this is connected to the start node.
-                if (this.ModelItem.Properties["StartNode"].Value != null
-                    && this.ModelItem.Properties["StartNode"].Value.Equals(currentMI))
-                {
-                    startNodeModelItem = currentMI;
-                }
-                if (typeof(FlowStep).IsAssignableFrom(currentMI.ItemType))
-                {
-                    ModelItem linkDest = currentMI.Properties["Next"].Value;
-                    if (linkDest != null)
-                    {
-                        ModelItem src = GetCorrespondingElementOnCanvas(currentMI);
-                        ModelItem dest = GetCorrespondingElementOnCanvas(linkDest);
-                        if (!modelElement.ContainsKey(dest))
-                        {
-                            viewsAdded.Add(ProcessAndGetModelView(dest));
-                            flowElementsToProcess.Enqueue(linkDest);
-                        }
-                        elem2elemConnections.Add(Tuple.Create(modelElement[src], modelElement[dest], currentMI));
-                    }
-                }
-                else if (typeof(FlowDecision).IsAssignableFrom(currentMI.ItemType))
-                {
-                    ModelItem trueDest = currentMI.Properties["True"].Value;
-                    ModelItem falseDest = currentMI.Properties["False"].Value;
-                    if (trueDest != null)
-                    {
-                        ConnectionPoint srcConnectionPoint = FlowchartDesigner.GetTrueConnectionPoint(modelElement[currentMI]);
-                        ModelItem trueDestOnCanvas = GetCorrespondingElementOnCanvas(trueDest);
-                        if (!modelElement.ContainsKey(trueDestOnCanvas))
-                        {
-                            viewsAdded.Add(ProcessAndGetModelView(trueDestOnCanvas));
-                            flowElementsToProcess.Enqueue(trueDest);
-                        }
-                        point2elemConnections.Add(Tuple.Create(srcConnectionPoint, modelElement[trueDestOnCanvas], currentMI));
-                    }
-                    if (falseDest != null)
-                    {
-                        ConnectionPoint srcConnectionPoint = FlowchartDesigner.GetFalseConnectionPoint(modelElement[currentMI]);
-                        ModelItem falseDestOnCanvas = GetCorrespondingElementOnCanvas(falseDest);
-                        if (!modelElement.ContainsKey(falseDestOnCanvas))
-                        {
-                            viewsAdded.Add(ProcessAndGetModelView(falseDestOnCanvas));
-                            flowElementsToProcess.Enqueue(falseDest);
-                        }
-                        point2elemConnections.Add(Tuple.Create(srcConnectionPoint, modelElement[falseDestOnCanvas], currentMI));
-                    }
-                }
-                else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(currentMI.ItemType))
-                {
-                    IModelTreeItem modelTreeItem = this.ModelItem as IModelTreeItem;
-                    ModelItem defaultCase = currentMI.Properties["Default"].Value;
-
-                    if (defaultCase != null)
-                    {
-                        ModelItem defaultCaseOnCanvas = GetCorrespondingElementOnCanvas(defaultCase);
-                        if (!modelElement.ContainsKey(defaultCaseOnCanvas))
-                        {
-                            viewsAdded.Add(ProcessAndGetModelView(defaultCaseOnCanvas));
-                            flowElementsToProcess.Enqueue(defaultCase);
-                        }
-                        IFlowSwitchLink link = GenericFlowSwitchHelper.CreateFlowSwitchLink(currentMI.ItemType, currentMI, null, true);
-                        ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
-                        link.ModelItem = linkModelItem;
-
-                        elem2elemConnections.Add(Tuple.Create(modelElement[currentMI], modelElement[defaultCaseOnCanvas], linkModelItem));
-                    }
-                    Type genericType = currentMI.ItemType.GetGenericArguments()[0];
-
-                    foreach (ModelItem key in GenericFlowSwitchHelper.GetCaseKeys(currentMI.Properties["Cases"]))
-                    {
-                        ModelItem destFlowElementMI = GenericFlowSwitchHelper.GetCaseModelItem(currentMI.Properties["Cases"], (key == null) ? null : key.GetCurrentValue());
-                        IFlowSwitchLink link = GenericFlowSwitchHelper.CreateFlowSwitchLink(currentMI.ItemType, currentMI, (key == null) ? null : key.GetCurrentValue(), false);
-                        ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
-                        link.ModelItem = linkModelItem;
-                        ModelItem destModelItem = GetCorrespondingElementOnCanvas(destFlowElementMI);
-                        if (!modelElement.ContainsKey(destModelItem))
-                        {
-                            viewsAdded.Add(ProcessAndGetModelView(destModelItem));
-                            flowElementsToProcess.Enqueue(destFlowElementMI);
-                        }
-
-                        elem2elemConnections.Add(Tuple.Create(modelElement[currentMI], modelElement[destModelItem], linkModelItem));
-                    }
-                }
-                else
-                {
-                    Fx.Assert(false, "Unknown type of FlowNode");
-                }
-            }
-
-            if (!this.startNodeAdded)
-            {
-                panel.Children.Add(this.StartSymbol);
-                this.startNodeAdded = true;
-            }
-            foreach (UIElement view in viewsAdded)
-            {
-                panel.Children.Add(view);
-            }
-
-            // connection between flownode should be create only after all flownodes have been loaded on the canvas
-            if (addConnectorAfterLoaded)
-            {
-                this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
-                {
-                    if (this.isLoaded)
-                    {
-                        AddConnectorsToPanel(startNodeModelItem, elem2elemConnections, point2elemConnections);
-                    }
-                }));
-            }
-            else
-            {
-                AddConnectorsToPanel(startNodeModelItem, elem2elemConnections, point2elemConnections);
-            }
-        }
-
-        private void AddConnectorsToPanel(
-            ModelItem startNodeModelItem, 
-            List<Tuple<UIElement, UIElement, ModelItem>> elem2elemConnections, 
-            List<Tuple<ConnectionPoint, UIElement, ModelItem>> point2elemConnections)
-        {
-            List<Connector> connectorList = new List<Connector>();
-
-            if (startNodeModelItem != null)
-            {
-                ModelItem dest = GetCorrespondingElementOnCanvas(startNodeModelItem);
-                connectorList.Add(CreateLink(this.StartSymbol, modelElement[dest], this.ModelItem));
-            }
-
-            foreach (var connection in elem2elemConnections)
-            {
-                connectorList.Add(CreateLink(connection.Item1, connection.Item2, connection.Item3));
-            }
-
-            foreach (var connection in point2elemConnections)
-            {
-                connectorList.Add(CreateLink(connection.Item1, connection.Item2, connection.Item3));
-            }
-
-            foreach (Connector connector in connectorList)
-            {
-                panel.Children.Add(connector);
-            }
-        }
-
-        void DeleteLinkVisual(Connector link)
-        {
-            ConnectionPoint srcConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(link);
-            ConnectionPoint destConnectionPoint = FreeFormPanel.GetDestinationConnectionPoint(link);
-            //Update ConnectionPoints.            
-            srcConnectionPoint.AttachedConnectors.Remove(link);
-            destConnectionPoint.AttachedConnectors.Remove(link);
-
-            this.panel.Children.Remove(link);
-        }
-
-        void DeleteShapeVisual(UIElement deleteShape)
-        {
-            //Remove any link visuals attached to this shape. This is required for the scenarios as follows:
-            //Copy paste two Connected activities into flowchart and undo the paste. 
-            //The property is not removed as a model change. Hence the link visual will remain dangling on the designer.
-            List<Connector> attachedConnectors = GetAttachedConnectors(deleteShape);
-
-            foreach (Connector connector in attachedConnectors)
-            {
-                Fx.Assert(this.panel.Children.Contains(connector), "Connector does not exist");
-                this.DeleteLinkVisual(connector);
-            }
-
-            List<ConnectionPoint> connectionPoints = GetConnectionPoints(deleteShape);
-            if (connectionPoints.Contains(this.srcConnectionPoint))
-            {
-                this.srcConnectionPoint = null;
-                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-            }
-
-            ModelItem shapeModelItem = ((VirtualizedContainerService.VirtualizingContainer)deleteShape).ModelItem;
-            ModelItem flowNodeMI = this.GetFlowElementMI(shapeModelItem);
-
-            this.modelElement.Remove(shapeModelItem);
-            this.flowNodeToUIElement.Remove(flowNodeMI);
-            deleteShape.MouseEnter -= new MouseEventHandler(ChildElement_MouseEnter);
-            deleteShape.MouseLeave -= new MouseEventHandler(ChildElement_MouseLeave);
-            ((FrameworkElement)deleteShape).SizeChanged -= new SizeChangedEventHandler(ChildSizeChanged);
-            this.panel.Children.Remove(deleteShape);
-
-            // deselect removed item
-            if (this.Context != null)
-            {
-                HashSet<ModelItem> selectedItems = new HashSet<ModelItem>(this.Context.Items.GetValue<Selection>().SelectedObjects);
-                if (selectedItems.Contains(shapeModelItem))
-                {
-                    Selection.Toggle(this.Context, shapeModelItem);
-                }
-            }
-
-            //Update this.shapeLocations.
-            object locationOfShape = this.ViewStateService.RetrieveViewState(flowNodeMI, shapeLocation);
-            if (locationOfShape != null)
-            {
-                this.shapeLocations.Remove((Point)locationOfShape);
-            }
-
-        }
-
-        Connector CreatePropertyLink(ModelItem srcModelItem, ModelItem propertyValue, string propertyName)
-        {
-            Connector newConnector = null;
-            if (typeof(FlowStep).IsAssignableFrom(srcModelItem.ItemType))
-            {
-                ModelItem src = GetCorrespondingElementOnCanvas(srcModelItem);
-                ModelItem dest = GetCorrespondingElementOnCanvas(propertyValue);
-                newConnector = CreateLink(modelElement[src], modelElement[dest], srcModelItem);
-
-            }
-            else if (typeof(FlowDecision).IsAssignableFrom(srcModelItem.ItemType))
-            {
-                ModelItem dest = GetCorrespondingElementOnCanvas(propertyValue);
-                ConnectionPoint srcConnPoint;
-                if (propertyName.Equals("True"))
-                {
-                    srcConnPoint = FlowchartDesigner.GetTrueConnectionPoint(modelElement[srcModelItem]);
-                }
-                else
-                {
-                    srcConnPoint = FlowchartDesigner.GetFalseConnectionPoint(modelElement[srcModelItem]);
-                }
-                newConnector = CreateLink(srcConnPoint, modelElement[dest], srcModelItem);
-            }
-            else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(srcModelItem.ItemType))
-            {
-                ModelItem dest = GetCorrespondingElementOnCanvas(propertyValue);
-                IFlowSwitchLink link;
-                if (propertyName.Equals("Default"))
-                {
-                    link = GenericFlowSwitchHelper.CreateFlowSwitchLink(srcModelItem.ItemType, srcModelItem, null, true);
-                }
-                else
-                {
-                    Fx.Assert(propertyName.Length >= GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier.Length, "Case property names should be prepended by the string GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier");
-                    link = GenericFlowSwitchHelper.CreateFlowSwitchLink(srcModelItem.ItemType, srcModelItem, propertyName.Substring(GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier.Length), false);
-                }
-                IModelTreeItem modelTreeItem = (IModelTreeItem)this.ModelItem;
-                ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
-                link.ModelItem = linkModelItem;
-                newConnector = CreateLink(modelElement[srcModelItem], modelElement[dest], linkModelItem);
-            }
-            else // FlowStart
-            {
-                ModelItem dest = GetCorrespondingElementOnCanvas(propertyValue);
-                newConnector = CreateLink(this.StartSymbol, modelElement[dest], this.ModelItem);
-            }
-            return newConnector;
-
-        }
-
-        internal Connector GetLinkOnCanvas(ModelItem srcFlowElementModelItem, ModelItem destflowElementModelItem, string propertyName)
-        {
-            Connector linkOnCanvas = null;
-            ModelItem shapeModelItem = null;
-            List<Connector> outGoingConnectors = null;
-            if (!srcFlowElementModelItem.Equals(this.ModelItem))
-            {
-                shapeModelItem = this.GetCorrespondingElementOnCanvas(srcFlowElementModelItem);
-                outGoingConnectors = GetOutGoingConnectors(this.modelElement[shapeModelItem]);
-            }
-            else // Must be startNode
-            {
-                outGoingConnectors = GetOutGoingConnectors(this.StartSymbol);
-            }
-
-            foreach (Connector connector in outGoingConnectors)
-            {
-                ModelItem connectorDestModelItem = ((VirtualizedContainerService.VirtualizingContainer)FreeFormPanel.GetDestinationConnectionPoint(connector).ParentDesigner).ModelItem;
-                ModelItem connectorDestFlowElementMI = this.GetFlowElementMI(connectorDestModelItem);
-                //Following condition checks if the destination for current connector is equal to the destination passed in.
-                if (destflowElementModelItem != null && destflowElementModelItem.Equals(connectorDestFlowElementMI))
-                {
-                    if (GenericFlowSwitchHelper.IsGenericFlowSwitch(srcFlowElementModelItem.ItemType))
-                    {
-                        ModelItem linkModelItem = FlowchartDesigner.GetLinkModelItem(connector);
-                        if (linkModelItem.Properties["IsDefaultCase"].Value.GetCurrentValue().Equals(true) && propertyName.Equals("Default"))
-                        {
-                            linkOnCanvas = connector;
-                            break;
-                        }
-                        else
-                        {
-                            ModelItem connectorCaseMI = linkModelItem.Properties["Case"].Value;
-                            if (linkModelItem.Properties["IsDefaultCase"].Value.GetCurrentValue().Equals(false))
-                            {
-                                string caseName = connectorCaseMI == null ? null : GenericFlowSwitchHelper.GetString(connectorCaseMI.GetCurrentValue(), connectorCaseMI.ItemType);
-                                if (connectorCaseMI != null && caseName.Equals(propertyName.Substring(GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier.Length)))
-                                {
-                                    linkOnCanvas = connector;
-                                    break;
-                                }
-                                else if (connectorCaseMI == null)
-                                {
-                                    if (GenericFlowSwitchHelper.FlowSwitchNullCaseKeyIdentifier.Equals(propertyName.Substring(GenericFlowSwitchHelper.FlowSwitchCasesKeyIdentifier.Length)))
-                                    {
-                                        linkOnCanvas = connector;
-                                        break;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                    else if (typeof(FlowDecision).IsAssignableFrom(srcFlowElementModelItem.ItemType))
-                    {
-                        ConnectionPoint trueConnPoint = FlowchartDesigner.GetTrueConnectionPoint(this.modelElement[shapeModelItem]);
-                        ConnectionPoint falseConnPoint = FlowchartDesigner.GetFalseConnectionPoint(this.modelElement[shapeModelItem]);
-                        ConnectionPoint connectorSrcConnPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
-                        if ((propertyName.Equals("True") && connectorSrcConnPoint.Equals(trueConnPoint))
-                            || (propertyName.Equals("False") && connectorSrcConnPoint.Equals(falseConnPoint)))
-                        {
-                            linkOnCanvas = connector;
-                            break;
-                        }
-                    }
-                    else    //FlowStep case.
-                    {
-                        linkOnCanvas = connector;
-                        break;
-                    }
-                }
-            }
-            return linkOnCanvas;
-        }
-
-
-        //Finally the call to CreateLink ends in calling this overloaded method.
-        Connector CreateLink(ConnectionPoint sourceConnectionPoint, ConnectionPoint destConnectionPoint, ModelItem linkModelItem)
-        {
-            Fx.Assert(sourceConnectionPoint != null, "sourceConnectionPoint is null.");
-            Fx.Assert(destConnectionPoint != null, "destinationConnectionPoint is null.");
-            Connector newConnector = null;
-            if (destConnectionPoint.PointType != ConnectionPointKind.Outgoing && sourceConnectionPoint.PointType != ConnectionPointKind.Incoming)
-            {
-                newConnector = GetConnectorViewState(sourceConnectionPoint.ParentDesigner, destConnectionPoint.ParentDesigner, linkModelItem, sourceConnectionPoint);
-                if (newConnector == null)
-                {
-                    newConnector = GetConnector(linkModelItem, sourceConnectionPoint, destConnectionPoint);
-                }
-                else
-                {
-                    //This is a workaround for CSDMain 139197, if any sectment of a connector is neither vertical nor horizontal, we'll reroute it.
-                    RerouteIfInvalid(newConnector, linkModelItem);
-                }
-                Fx.Assert(newConnector != null, "Link could not be created");
-            }
-            return newConnector;
-        }
-
-        Connector CreateLink(ConnectionPoint sourceConnectionPoint, UIElement dest, ModelItem linkModelItem)
-        {
-            Connector newConnector = null;
-            ConnectionPoint destConnectionPoint = null;
-            if (this.srcConnectionPointForAutoConnect != null)
-            {
-                Fx.Assert(this.srcConnectionPointForAutoConnect == sourceConnectionPoint, "sourceConnectionPoint should equal to this.srcConnectionPointForAutoConnect");
-                destConnectionPoint = FlowchartDesigner.GetDestinationConnectionPointForAutoConnect(dest, sourceConnectionPoint);
-                this.srcConnectionPointForAutoConnect = null;
-            }
-            else if (this.srcConnectionPointForAutoSplit == sourceConnectionPoint)
-            {
-                destConnectionPoint = this.GetDestinationConnectionPointForAutoSplit(this.srcConnectionPointForAutoSplit, dest);
-                this.srcConnectionPointForAutoSplit = null;
-            }
-            else
-            {
-                string errorMessage;
-                destConnectionPoint = FindBestMatchDestConnectionPoint(sourceConnectionPoint, dest, out errorMessage);
-            }
-            if (destConnectionPoint != null)
-            {
-                newConnector = CreateLink(sourceConnectionPoint, destConnectionPoint, linkModelItem);
-            }
-            return newConnector;
-        }
-
-
-        Connector CreateLink(UIElement source, UIElement dest, ModelItem linkModelItem)
-        {
-            Connector newConnector = null;
-            ConnectionPoint srcConnPoint = null, destConnPoint = null;
-            if (this.srcConnectionPointForAutoConnect != null)
-            {
-                srcConnPoint = this.srcConnectionPointForAutoConnect;
-                destConnPoint = FlowchartDesigner.GetDestinationConnectionPointForAutoConnect(dest, srcConnPoint);
-                this.srcConnectionPointForAutoConnect = null;
-            }
-            else if (this.srcConnectionPointForAutoSplit != null && this.srcConnectionPointForAutoSplit.ParentDesigner == source)
-            {
-                srcConnPoint = this.srcConnectionPointForAutoSplit;
-                destConnPoint = this.GetDestinationConnectionPointForAutoSplit(srcConnPoint, dest);
-                this.srcConnectionPointForAutoSplit = null;
-            }
-            else if (this.destConnectionPointForAutoSplit != null && this.destConnectionPointForAutoSplit.ParentDesigner == dest)
-            {
-                destConnPoint = this.destConnectionPointForAutoSplit;
-                srcConnPoint = this.GetSourceConnectionPointForAutoSplit(destConnPoint, source);
-                this.destConnectionPointForAutoSplit = null;
-            }
-            else
-            {
-                string errorMessage;
-                GetSrcDestConnectionPoints(source, dest, out srcConnPoint, out destConnPoint, out errorMessage);
-            }
-            if (srcConnPoint != null && destConnPoint != null)
-            {
-                newConnector = CreateLink(srcConnPoint, destConnPoint, linkModelItem);
-            }
-            return newConnector;
-        }
-
-        [SuppressMessage(FxCop.Category.Usage, FxCop.Rule.ReviewUnusedParameters, Justification = "Existing code")]
-        void RerouteIfInvalid(Connector connector, ModelItem linkModelItem)
-        {
-            if (connector.Points != null)
-            {
-                Point[] points = new Point[connector.Points.Count];
-                connector.Points.CopyTo(points, 0);
-                if (!ConnectorRouter.AreSegmentsValid(points))
-                {
-                    Reroute(connector, false);
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChanges.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.ModelChanges.cs
deleted file mode 100644 (file)
index 86ed794..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Windows;
-    using System.Windows.Documents;
-    using System.Windows.Media;
-    using System.Windows.Shapes;
-    using System.Activities.Statements;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.Model;
-    using System.Runtime;
-    using System.Globalization;
-    using System.Activities.Presentation.FreeFormEditing;
-
-    partial class FlowchartDesigner
-    {
-        // The method will return the CaseKey if any.
-        // referenceUpdatedModelItems: say A linked to B by linker C, there is a relationship:
-        //   A.Properties["Relation"] = B. 
-        //   When delete the linker C, A will be updated like, A.Properties["Relation"] = null;
-        //   In multiple drag/drop, the A.Properties["Relation"] is set correctly before coming
-        //   here, which means we should not set the value again, otherwise the correct,
-        //   value which is set previously, will be removed.
-        internal IFlowSwitchLink DeleteLink(Connector link, bool isMoveOrAutoSplit = false,
-            HashSet<ModelItem> referenceUpdatedModelItems = null)
-        {
-            IFlowSwitchLink caseKey = null;
-            using (EditingScope deleteLinkEditingScope =
-                        ((IModelTreeItem)this.ModelItem).ModelTreeManager.CreateEditingScope(SR.FCDeleteLink))
-            {
-                caseKey = DeleteLinkImpl(link, isMoveOrAutoSplit, referenceUpdatedModelItems);
-                deleteLinkEditingScope.Complete();
-            }
-            return caseKey;
-        }
-
-        private IFlowSwitchLink DeleteLinkImpl(Connector link, bool isMoveOrAutoSplit = false, 
-            HashSet<ModelItem> referenceUpdatedModelItems = null)
-        {
-            IFlowSwitchLink caseKey = null;
-            ModelItem linkModelItem = FlowchartDesigner.GetLinkModelItem(link);
-
-            if (referenceUpdatedModelItems != null
-                && referenceUpdatedModelItems.Contains(linkModelItem))
-            {
-                return caseKey;
-            }
-            ConnectionPoint srcConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(link);
-            ConnectionPoint destConnectionPoint = FreeFormPanel.GetDestinationConnectionPoint(link);
-
-            if (typeof(FlowStep).IsAssignableFrom(linkModelItem.ItemType))
-            {
-                linkModelItem.Properties["Next"].SetValue(null);
-            }
-            else if (typeof(FlowDecision).IsAssignableFrom(linkModelItem.ItemType))
-            {
-                //Determine if it is True or False branch.
-                if (srcConnectionPoint.Equals(FlowchartDesigner.GetTrueConnectionPoint(srcConnectionPoint.ParentDesigner)))
-                {
-                    //True branch
-                    linkModelItem.Properties["True"].SetValue(null);
-                }
-                else
-                {
-                    linkModelItem.Properties["False"].SetValue(null);
-                }
-            }
-            else if (typeof(IFlowSwitchLink).IsAssignableFrom(linkModelItem.ItemType))
-            {
-                IFlowSwitchLink flowSwitchLink = (IFlowSwitchLink)linkModelItem.GetCurrentValue();
-                caseKey = flowSwitchLink;
-                //Transitioning from the fakeModelItem world to the real ModelItem world.
-                FlowNode fs = flowSwitchLink.ParentFlowSwitch;
-                ModelItem realFlowSwitchMI = (this.ModelItem as IModelTreeItem).ModelTreeManager.WrapAsModelItem(fs);
-                if (referenceUpdatedModelItems != null
-                    && referenceUpdatedModelItems.Contains(realFlowSwitchMI))
-                {
-                    return caseKey;
-                }
-
-                if (flowSwitchLink.IsDefaultCase)
-                {
-                    realFlowSwitchMI.Properties["Default"].SetValue(null);
-
-                    if (!isMoveOrAutoSplit)
-                    {
-                        realFlowSwitchMI.Properties[FlowSwitchLabelFeature.DefaultCaseDisplayNamePropertyName].SetValue(FlowSwitchLabelFeature.DefaultCaseDisplayNameDefaultValue);
-                    }
-                }
-                else
-                {
-                   GenericFlowSwitchHelper.RemoveCase(realFlowSwitchMI.Properties["Cases"], flowSwitchLink.CaseObject);
-                }
-
-            }
-            else // StartNode
-            {
-                this.ModelItem.Properties["StartNode"].SetValue(null);
-            }
-            
-            this.StoreConnectorViewState(linkModelItem, null, srcConnectionPoint, true);
-            return caseKey;
-        }
-
-
-        void DeleteShape(ModelItem shapeModelItem, HashSet<ModelItem> updatedItems = null)
-        {
-            ModelItem flowElementMI = GetFlowElementMI(shapeModelItem);
-            Fx.Assert(flowElementMI != null, "Invalid shape in Flowchart");
-            bool itemRemoved = this.ModelItem.Properties["Nodes"].Collection.Remove(flowElementMI);
-            //Clean up the FlowStep so that shapeModelItem.Parents will be updated and FlowStep will not be leaked.
-            if (typeof(FlowStep).IsAssignableFrom(flowElementMI.ItemType)
-                && (updatedItems == null || !updatedItems.Contains(flowElementMI)))
-            {
-                flowElementMI.Properties["Action"].SetValue(null);
-            }
-            Fx.Assert(itemRemoved, "Selected item not present in the Flowchart object");
-        }
-
-
-        bool UpdateFlowChartObject(ConnectionPoint sourceConnPoint, ConnectionPoint destConnPoint, out string errorMessage, bool isLinkValidDueToLinkMove, IFlowSwitchLink caseKey)
-        {
-            //srcDesigner will be null for the case where source designer is StartSymbol.
-            VirtualizedContainerService.VirtualizingContainer srcDesigner = sourceConnPoint.ParentDesigner as VirtualizedContainerService.VirtualizingContainer;
-            VirtualizedContainerService.VirtualizingContainer destDesigner = destConnPoint.ParentDesigner as VirtualizedContainerService.VirtualizingContainer;
-            ModelItem linkSource;
-            ModelItem linkDest = destDesigner.ModelItem;
-            ModelItem destFlowElementMI = GetFlowElementMI(linkDest);
-            PointCollection connectorViewState = new PointCollection(ConnectorRouter.Route(this.panel, sourceConnPoint, destConnPoint));
-            errorMessage = string.Empty;
-            
-            if (sourceConnPoint.ParentDesigner is StartSymbol)
-            {
-                linkSource = this.ModelItem;
-                if (linkSource.Properties["StartNode"].Value == null || isLinkValidDueToLinkMove)
-                {
-                    this.StoreConnectorViewState(linkSource, connectorViewState, sourceConnPoint);
-                    linkSource.Properties["StartNode"].SetValue(destFlowElementMI);
-                }
-                else
-                {
-                    errorMessage = SR.FCNextLinkDefined;
-                }
-            }
-            else
-            {
-                linkSource = srcDesigner.ModelItem;
-                ModelItem srcFlowElementMI = GetFlowElementMI(linkSource);
-
-                if (typeof(FlowStep).IsAssignableFrom(srcFlowElementMI.ItemType))
-                {
-                    if (srcFlowElementMI.Properties["Next"].Value == null || isLinkValidDueToLinkMove)
-                    {
-                        this.StoreConnectorViewState(srcFlowElementMI, connectorViewState, sourceConnPoint);
-                        srcFlowElementMI.Properties["Next"].SetValue(destFlowElementMI);
-                    }
-                    else
-                    {
-                        errorMessage = SR.FCNextLinkDefined;
-                    }
-                }
-                else if (typeof(FlowDecision).IsAssignableFrom(srcFlowElementMI.ItemType))
-                {
-                    if (sourceConnPoint.Equals(FlowchartDesigner.GetTrueConnectionPoint(this.modelElement[linkSource])))
-                    {
-                        if (linkSource.Properties["True"].Value == null || isLinkValidDueToLinkMove)
-                        {
-                            this.StoreConnectorViewState(srcFlowElementMI, connectorViewState, sourceConnPoint);
-                            linkSource.Properties["True"].SetValue(destFlowElementMI);
-                        }
-                        else
-                        {
-                            errorMessage = SR.FCTrueBranchExists;
-                        }
-                    }
-                    else if (sourceConnPoint.Equals(FlowchartDesigner.GetFalseConnectionPoint(this.modelElement[linkSource])))
-                    {
-                        if (linkSource.Properties["False"].Value == null || isLinkValidDueToLinkMove)
-                        {
-                            this.StoreConnectorViewState(srcFlowElementMI, connectorViewState, sourceConnPoint);
-                            linkSource.Properties["False"].SetValue(destFlowElementMI);
-                        }
-                        else
-                        {
-                            errorMessage = SR.FCFalseBranchExists;
-                        }
-                    }
-                    else
-                    {
-                        errorMessage = SR.FCFlowConditionLinkError;
-                    }
-
-                }
-                else //FlowSwitch
-                {
-                    if (!CreateFlowSwitchLink(sourceConnPoint, srcFlowElementMI, destFlowElementMI, caseKey, connectorViewState, ref errorMessage))
-                    {
-                        return false;
-                    }
-                }
-            }
-            return errorMessage.Equals(string.Empty);
-        }
-
-        bool CreateFlowSwitchLink(ConnectionPoint sourceConnPoint, ModelItem srcFlowElementMI, ModelItem destFlowElementMI, IFlowSwitchLink caseKey, PointCollection connectorViewState, ref string errorMessage)
-        {
-            IModelTreeItem modelTreeItem = this.ModelItem as IModelTreeItem;
-            if ((caseKey != null && caseKey.IsDefaultCase) || (caseKey == null && srcFlowElementMI.Properties["Default"].Value == null))
-            {
-                IFlowSwitchLink link = GenericFlowSwitchHelper.CreateFlowSwitchLink(srcFlowElementMI.ItemType, srcFlowElementMI, null, true);
-                ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
-                link.ModelItem = linkModelItem;
-                if (connectorViewState != null)
-                {
-                    this.StoreConnectorViewState(linkModelItem, connectorViewState, sourceConnPoint);
-                }
-                srcFlowElementMI.Properties["Default"].SetValue(destFlowElementMI);
-            }
-            else
-            {
-                ModelProperty casesProp = srcFlowElementMI.Properties["Cases"];
-
-                string uniqueCaseName = null;
-
-                if (caseKey == null)
-                {
-                    Type typeArgument = srcFlowElementMI.ItemType.GetGenericArguments()[0];
-                    if (GenericFlowSwitchHelper.CanBeGeneratedUniquely(typeArgument))
-                    {
-                        uniqueCaseName = GenericFlowSwitchHelper.GetCaseName(casesProp, typeArgument, out errorMessage);
-                    }
-                    else
-                    {
-                        FlowSwitchCaseEditorDialog editor = new FlowSwitchCaseEditorDialog(srcFlowElementMI, this.Context, this, SR.AddNewCase, typeArgument);
-                        editor.WindowSizeToContent = SizeToContent.WidthAndHeight;
-                        if (!editor.ShowOkCancel())
-                        {
-                            return false;
-                        }
-                        uniqueCaseName = editor.CaseName;
-                    }
-                }
-                else
-                {
-                    uniqueCaseName = caseKey.CaseName;
-                }
-
-                if (string.IsNullOrEmpty(errorMessage))
-                {
-                    IFlowSwitchLink link = GenericFlowSwitchHelper.CreateFlowSwitchLink(srcFlowElementMI.ItemType, srcFlowElementMI, uniqueCaseName, false);
-                    ModelItem linkModelItem = new FakeModelItemImpl(modelTreeItem.ModelTreeManager, link.GetType(), link, null);
-                    link.ModelItem = linkModelItem;
-                    if (connectorViewState != null)
-                    {
-                        this.StoreConnectorViewState(linkModelItem, connectorViewState, sourceConnPoint);
-                    }
-                    GenericFlowSwitchHelper.AddCase(srcFlowElementMI.Properties["Cases"], link.CaseObject, destFlowElementMI.GetCurrentValue());
-                }
-            }
-            return true;
-        }
-
-        //Interfaces for users to create links on the flowchart.
-        internal bool CreateLinkGesture(ConnectionPoint sourceConnectionPoint, ConnectionPoint destConnectionPoint, out string errorMessage, IFlowSwitchLink caseKey)
-        {
-            return CreateLinkGesture(sourceConnectionPoint, destConnectionPoint, out errorMessage, false, caseKey);
-        }
-        
-        internal bool CreateLinkGesture(ConnectionPoint sourceConnectionPoint, ConnectionPoint destConnectionPoint, out string errorMessage, bool isLinkValidDueToLinkMove, IFlowSwitchLink caseKey)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            Fx.Assert(sourceConnectionPoint != null, "sourceConnectionPoint is null.");
-            Fx.Assert(destConnectionPoint != null, "destConnectionPoint is null.");
-            bool linkCreated = false;
-            errorMessage = string.Empty;
-            if (destConnectionPoint.PointType != ConnectionPointKind.Outgoing && sourceConnectionPoint.PointType != ConnectionPointKind.Incoming)
-            {
-                using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.FCCreateLink))
-                {
-                    linkCreated = UpdateFlowChartObject(sourceConnectionPoint, destConnectionPoint, out errorMessage, isLinkValidDueToLinkMove, caseKey);
-                    try
-                    {
-                        es.Complete();
-                    }
-                    catch (ArgumentException)
-                    {
-                        errorMessage = SR.InvalidFlowSwitchCaseMessage;
-                        linkCreated = false;
-                    }
-
-                }
-            }
-            else
-            {
-                errorMessage = SR.FCInvalidLink;
-            }
-         
-            return linkCreated;
-        }
-
-        internal bool CreateLinkGesture(ConnectionPoint sourceConnectionPoint, UIElement dest, Point mouseLocation, out string errorMessage, bool isLinkValidDueToLinkMove, IFlowSwitchLink caseKey)
-        {
-            bool linkCreated = false;
-            double minDist;
-            errorMessage = string.Empty;
-
-            ConnectionPoint destConnectionPoint = FindClosestConnectionPoint(
-                mouseLocation, 
-                FlowchartDesigner.GetConnectionPoints(dest).Where(p => p.PointType != ConnectionPointKind.Outgoing).ToList(), 
-                out minDist);
-
-            if (destConnectionPoint != null)
-            {
-                linkCreated = CreateLinkGesture(sourceConnectionPoint, destConnectionPoint, out errorMessage, isLinkValidDueToLinkMove, caseKey);
-            }
-            else
-            {
-                errorMessage = SR.FCInvalidLink;
-            }
-
-            return linkCreated;
-        }
-        internal bool CreateLinkGesture(ConnectionPoint sourceConnectionPoint, UIElement dest, out string errorMessage, bool isLinkValidDueToLinkMove, IFlowSwitchLink caseKey)
-        {
-            bool linkCreated = false;
-            ConnectionPoint destConnectionPoint = ClosestDestConnectionPoint(sourceConnectionPoint, dest, out errorMessage);
-            if (destConnectionPoint != null)
-            {
-                linkCreated = CreateLinkGesture(sourceConnectionPoint, destConnectionPoint, out errorMessage, isLinkValidDueToLinkMove, caseKey);
-            }
-            return linkCreated;
-        }
-
-        internal bool CreateLinkGesture(UIElement source, ConnectionPoint destConnectionPoint, Point mouseLocation, out string errorMessage, bool isLinkValidDueToLinkMove, IFlowSwitchLink caseKey)
-        {
-            bool linkCreated = false;
-            double minDist;
-            errorMessage = string.Empty;
-
-            ConnectionPoint sourceConnectionPoint = FindClosestConnectionPoint(
-                mouseLocation,
-                FlowchartDesigner.GetConnectionPoints(source).Where(p => p.PointType != ConnectionPointKind.Incoming).ToList(),
-                out minDist);
-
-            if (sourceConnectionPoint != null)
-            {
-                linkCreated = CreateLinkGesture(sourceConnectionPoint, destConnectionPoint, out errorMessage, isLinkValidDueToLinkMove, caseKey);
-            }
-            else
-            {
-                errorMessage = SR.FCInvalidLink;
-            }
-
-            return linkCreated;
-        }
-
-        internal bool CreateLinkGesture(UIElement source, UIElement dest, out string errorMessage, IFlowSwitchLink caseKey)
-        {
-            bool linkCreated = false;
-            ConnectionPoint srcConnPoint, destConnPoint;
-            GetSrcDestConnectionPoints(source, dest, out srcConnPoint, out destConnPoint, out errorMessage);
-            if (srcConnPoint != null && destConnPoint != null)
-            {
-                linkCreated = CreateLinkGesture(srcConnPoint, destConnPoint, out errorMessage, caseKey);
-            }
-            return linkCreated;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesigner.xaml.cs
deleted file mode 100644 (file)
index 3832b3b..0000000
+++ /dev/null
@@ -1,2778 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.Hosting;
-    using System.Activities.Presentation.Internal.PropertyEditing;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Presentation.ViewState;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-    using System.Collections.ObjectModel;
-    using System.ComponentModel;
-    using System.Linq;
-    using System.Reflection;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Documents;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Windows.Threading;
-
-    [ActivityDesignerOptions(AlwaysCollapseChildren = true)]
-    partial class FlowchartDesigner : IAutoConnectContainer, IAutoSplitContainer
-    {
-        public static readonly DependencyProperty ConnectionPointsProperty = DependencyProperty.RegisterAttached("ConnectionPoints", typeof(List<ConnectionPoint>), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
-        public static readonly DependencyProperty LinkModelItemProperty = DependencyProperty.RegisterAttached("LinkModelItem", typeof(ModelItem), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
-        public static readonly DependencyProperty FlowElementModelItemProperty = DependencyProperty.RegisterAttached("FlowElementModelItem", typeof(ModelItem), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
-
-        public static readonly DependencyProperty FlowchartWidthProperty = DependencyProperty.Register("FlowchartWidth", typeof(double), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
-        public static readonly DependencyProperty FlowchartHeightProperty = DependencyProperty.Register("FlowchartHeight", typeof(double), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
-
-        public static readonly DependencyProperty TrueConnectionPointProperty = DependencyProperty.RegisterAttached("TrueConnectionPoint", typeof(ConnectionPoint), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
-        public static readonly DependencyProperty FalseConnectionPointProperty = DependencyProperty.RegisterAttached("FalseConnectionPoint", typeof(ConnectionPoint), typeof(FlowchartDesigner), new FrameworkPropertyMetadata());
-
-        public static readonly DependencyProperty ShowAllConditionsProperty = DependencyProperty.Register("ShowAllConditions", typeof(bool), typeof(FlowchartDesigner));
-
-        public static readonly RoutedCommand SetAsStartNodeCommand = new RoutedCommand("SetAsStartNode", typeof(FlowchartDesigner));
-        //public static readonly RoutedCommand ConnectNodesCommand = new RoutedCommand("ConnectNodes", typeof(FlowchartDesigner));
-        public static readonly RoutedCommand ShowAllConditionsCommand = new RoutedCommand("ShowAllConditionsCommand", typeof(FlowchartDesigner));
-        public static readonly RoutedCommand HideAllConditionsCommand = new RoutedCommand("HideAllConditionsCommand", typeof(FlowchartDesigner));
-
-        const double flowElementCaptionFontSize = 11;
-        const double DebugTimeMaxConnectorShapeDist = 10;
-        static readonly FontFamily flowElementCaptionFontFamily = new FontFamily("Tohoma");
-        static readonly FontStyle flowElementCaptionFontStyle = new FontStyle();
-        static readonly Typeface flowElementCaptionTypeface = new Typeface("Tohoma");
-        
-        internal Dictionary<ModelItem, UIElement> modelElement;
-        //Consider FlowStep.Action = SomeActivity. FlowStep modelItem is referred as FlowNodeMI, SomeActivity modelItem is shapeMI and the designer for SomeActivity is the shape on canvas.
-        //To go from the FlowNodeMI to the shape on canvas, we can use the path: FlowNodeMI(FlowStep.Action)-> shapeMI (modelElement Dictionary)-> Actual UIElement shape
-        //However this path does not always work.  For instance in delete case: FlowStep.Action is set to null to update the ModelItem.Parents property on the shapeMI
-        //flowNodeToUIElement dictionary is used to solve this problem.
-        Dictionary<ModelItem, UIElement> flowNodeToUIElement;
-
-        const double startSymbolTopMargin = 10.0;
-        const string shapeLocation = "ShapeLocation";
-        const string shapeSize = "ShapeSize";
-        const string TrueConnectorViewStateKey = "TrueConnector";
-        const string FalseConnectorViewStateKey = "FalseConnector";
-        const string CaseViewStateKeyAppendString = "Connector";
-        const string FlowSwitchDefaultViewStateKey = "Default";
-        const string ConnectorViewStateKey = "ConnectorLocation";
-        static Color ConnectionPointColor = Colors.LightGray;
-        UIElement lastConnectionPointMouseUpElement = null;
-        //shapeLocations is useful to avoid pasting on existing shapes.
-        //This is populated in 2 cases 1. When the shape with existing Viewstate is added 2. On ViewState changed.
-        HashSet<Point> shapeLocations = null;
-        //selectedConnector is a placeholder for the last connector selected.
-        //This removes the need for a dictionary mapping modelitem to connector for deletion.
-        //This will change if in future we plan to support multi-select + delete.
-        Connector selectedConnector;
-        //srcConnectionPoint is required for link addition gesture to store the source of the link.
-        ConnectionPoint srcConnectionPoint;
-        ConnectionPoint srcConnectionPointForAutoConnect;
-        ConnectionPoint srcConnectionPointForAutoSplit;
-        ConnectionPoint destConnectionPointForAutoSplit;
-        EdgeLocation entryEdgeForAutoSplit;
-        EdgeLocation exitEdgeForAutoSplit;
-        bool internalViewStateChange = false;
-        bool startNodeAdded = false;
-        bool updatingSelectedConnector;
-        internal FreeFormPanel panel = null;
-        AdornerLayer adornerLayer;
-        MenuItem setAsStartNode;
-        bool? isRightToLeft;
-        private bool isLoaded = false;
-
-        internal bool IsResizing { get; set; }
-
-        public FlowchartDesigner()
-        {
-            InitializeComponent();
-            this.modelElement = new Dictionary<ModelItem, UIElement>();
-            this.flowNodeToUIElement = new Dictionary<ModelItem, UIElement>();
-            this.shapeLocations = new HashSet<Point>();
-            this.selectedConnector = null;
-            ConstructSetAsStartNodeMenuItem();
-
-            this.Loaded += (s, e) =>
-            {
-                this.isLoaded = true;
-
-                if (this.ShowExpanded)
-                {
-                    ((ICompositeViewEvents)this).RegisterDefaultCompositeView(this);
-                }
-                DesignerView designerView = this.Context.Services.GetService<DesignerView>() as DesignerView;
-                if (!designerView.ContextMenu.Items.Contains(setAsStartNode))
-                {
-                    designerView.ContextMenu.Items.Add(setAsStartNode);
-                }
-
-                WorkflowCommandExtensionItem item = this.Context.Items.GetValue<WorkflowCommandExtensionItem>();
-                if (item != null)
-                {
-                    if (item.CommandExtensionCallback is DefaultCommandExtensionCallback)
-                    {
-                        this.InputBindings.Add(new KeyBinding(FlowchartDesignerCommands.ConnectNodesCommand, new DefaultCommandExtensionCallback.ChordKeyGesture(Key.E, Key.F)));
-                    }
-                }
-
-                Selection.Subscribe(Context, OnSelectionChanged);
-            };
-
-            this.Unloaded += (s, e) =>
-            {
-                this.isLoaded = false;
-
-                if (object.Equals(this.DefaultCompositeView, this))
-                {
-                    ((ICompositeViewEvents)this).UnregisterDefaultCompositeView(this);
-                }
-                DesignerView designerView = this.Context.Services.GetService<DesignerView>() as DesignerView;
-                designerView.ContextMenu.Items.Remove(setAsStartNode);
-
-                Selection.Unsubscribe(Context, OnSelectionChanged);
-            };
-        }
-
-        public static double FlowNodeCaptionFontSize
-        {
-            get { return flowElementCaptionFontSize; }
-        }
-
-        public static FontFamily FlowNodeCaptionFontFamily
-        {
-            get { return flowElementCaptionFontFamily; }
-        }
-
-        public static FontStyle FlowNodeCaptionFontStyle
-        {
-            get { return flowElementCaptionFontStyle; }
-        }
-
-        public static Typeface FlowElementCaptionTypeface
-        {
-            get { return flowElementCaptionTypeface; }
-        }
-
-        void OnSetAsStartNodeCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            //The condition is necessary so that the child flowchart inside a flowchart doesn't try to handle the event.
-            if (!object.Equals(e.Source, this))
-            {
-                e.CanExecute = !this.IsReadOnly;
-                e.Handled = true;
-            }
-        }
-
-        void OnShowAllConditionsMenuLoaded(object sender, RoutedEventArgs e)
-        {
-            MenuItem item = sender as MenuItem;
-            if (null != item)
-            {
-                bool expanded = (bool)GetValue(WorkflowViewElement.ShowExpandedProperty);
-                if (expanded)
-                {
-                    item.Visibility = Visibility.Visible;
-                }
-                else
-                {
-                    item.Visibility = Visibility.Collapsed;
-                }
-            }
-            e.Handled = true;
-        }
-
-        void OnHideAllConditionsMenuLoaded(object sender, RoutedEventArgs e)
-        {
-            MenuItem item = sender as MenuItem;
-            if (null != item)
-            {
-                bool expanded = (bool)GetValue(WorkflowViewElement.ShowExpandedProperty);
-                if (expanded)
-                {
-                    item.Visibility = Visibility.Visible;
-                }
-                else
-                {
-                    item.Visibility = Visibility.Collapsed;
-                }
-            }
-            e.Handled = true;
-        }
-
-        void OnSetAsStartNodeCommandExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            ModelItem selection = this.Context.Items.GetValue<Selection>().PrimarySelection;
-            Fx.Assert(this.modelElement.ContainsKey(selection), "Selection is not contained in this container");
-            this.ModelItem.Properties["StartNode"].SetValue(this.GetFlowElementMI(selection));
-            e.Handled = true;
-        }
-
-        void ConstructSetAsStartNodeMenuItem()
-        {
-            setAsStartNode = new MenuItem();
-            setAsStartNode.Command = FlowchartDesigner.SetAsStartNodeCommand;
-            setAsStartNode.Header = this.SetAsStartNodeMenuItemHeader;
-            setAsStartNode.Visibility = Visibility.Collapsed;
-            setAsStartNode.Loaded += new RoutedEventHandler(OnSetAsStartNodeLoaded);
-            //AutomationProperties
-            setAsStartNode.SetValue(System.Windows.Automation.AutomationProperties.AutomationIdProperty, "SetAsStartNodeMenuItem");
-        }
-
-        string SetAsStartNodeMenuItemHeader
-        {
-            get { return (string)this.FindResource("SetAsStartNodeMenuItemHeader"); }
-        }
-
-        void OnSetAsStartNodeLoaded(object sender, RoutedEventArgs e)
-        {
-            MenuItem setAsStartNodeMenuItem = sender as MenuItem;
-            setAsStartNodeMenuItem.Visibility = Visibility.Collapsed;
-            Selection selection = this.Context.Items.GetValue<Selection>();
-            if (selection.SelectionCount == 1 && this.modelElement.ContainsKey(selection.PrimarySelection))
-            {
-                setAsStartNodeMenuItem.Visibility = Visibility.Visible;
-            }
-            e.Handled = true;
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(Flowchart);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(FlowchartDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("StartNode"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Nodes"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, new FeatureAttribute(typeof(FlowchartSizeFeature)));
-
-            PropertyInfo nodesProperty = type.GetProperty("Nodes");
-            builder.AddCustomAttributes(type, nodesProperty, new ShowPropertyInOutlineViewAttribute());
-
-            type = typeof(FlowStep);
-            builder.AddCustomAttributes(type, type.GetProperty("Action"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Next"), BrowsableAttribute.No);
-
-            builder.AddCustomAttributes(type, new ShowInOutlineViewAttribute() { PromotedProperty = "Action" });
-            builder.AddCustomAttributes(type, type.GetProperty("Next"), new ShowPropertyInOutlineViewAsSiblingAttribute());
-
-            builder.AddCustomAttributes(typeof(FlowNode), new ShowInOutlineViewAttribute());
-            builder.AddCustomAttributes(typeof(Collection<FlowNode>), new ShowInOutlineViewAttribute());
-
-            CutCopyPasteHelper.AddDisallowedTypeForCopy(typeof(StartNode));
-        }
-
-        //Unregister all events. Reset startNodeAdded to enable reuse of the designer.
-        void CleanupFlowchart()
-        {
-            this.startNodeAdded = false;
-            this.panel.Children.Clear();
-            this.flowNodeToUIElement.Clear();
-            // Cleaning up the designers as they might be re-used.
-            foreach (UIElement element in this.modelElement.Values)
-            {
-                element.MouseEnter -= new MouseEventHandler(ChildElement_MouseEnter);
-                element.MouseLeave -= new MouseEventHandler(ChildElement_MouseLeave);
-            }
-            this.panel.LocationChanged -= new LocationChangedEventHandler(OnFreeFormPanelLocationChanged);
-            this.panel.ConnectorMoved -= new ConnectorMovedEventHandler(OnFreeFormPanelConnectorMoved);
-            this.panel.LayoutUpdated -= new EventHandler(OnFreeFormPanelLayoutUpdated);
-            this.panel.RequiredSizeChanged -= new RequiredSizeChangedEventHandler(OnFreeFormPanelRequiredSizeChanged);
-            this.panel = null;
-            ModelTreeManager modelTreeManager = (this.ModelItem as IModelTreeItem).ModelTreeManager;
-            modelTreeManager.EditingScopeCompleted -= new EventHandler<EditingScopeEventArgs>(ModelTreeManager_EditingScopeCompleted);
-            this.ViewStateService.ViewStateChanged -= new ViewStateChangedEventHandler(OnViewStateChanged);
-        }
-
-        void OnFreeFormPanelLoaded(object sender, RoutedEventArgs eventArgs)
-        {
-            //Adding the following check because of 137896: Inside tab control multiple Loaded events happen without an Unloaded event.
-            if (this.panel != null)
-            {
-                CleanupFlowchart();
-            }
-            this.panel = (FreeFormPanel)sender;
-            if (this.ShowExpanded)
-            {
-                PopulateFlowchartChildren();
-            }
-        }
-
-        void OnFreeFormPanelUnLoaded(object sender, RoutedEventArgs eventArgs)
-        {
-            if (object.Equals(sender, this.panel))
-            {
-                CleanupFlowchart();
-            }
-        }
-
-        void PopulateFlowchartChildren()
-        {
-            Fx.Assert(this.ShowExpanded, "This method should be called only when the flowchart designer is shown expanded.");
-            Fx.Assert(this.panel != null, "panel cannot be null");
-            this.panel.LocationChanged += new LocationChangedEventHandler(OnFreeFormPanelLocationChanged);
-            this.panel.ConnectorMoved += new ConnectorMovedEventHandler(OnFreeFormPanelConnectorMoved);
-            this.panel.LayoutUpdated += new EventHandler(OnFreeFormPanelLayoutUpdated);
-            this.panel.RequiredSizeChanged += new RequiredSizeChangedEventHandler(OnFreeFormPanelRequiredSizeChanged);
-
-            DesignerPerfEventProvider perfEventProvider = this.Context.Services.GetService<DesignerPerfEventProvider>();
-            perfEventProvider.FlowchartDesignerLoadStart();
-            ModelTreeManager modelTreeManager = (this.ModelItem as IModelTreeItem).ModelTreeManager;
-            modelTreeManager.EditingScopeCompleted += new EventHandler<EditingScopeEventArgs>(ModelTreeManager_EditingScopeCompleted);
-            this.ViewStateService.ViewStateChanged += new ViewStateChangedEventHandler(OnViewStateChanged);
-
-            this.startNodeAdded = false;
-            panel.Children.Clear();
-            this.modelElement.Clear();
-            this.flowNodeToUIElement.Clear();
-            this.shapeLocations.Clear();
-
-            this.FlowchartWidth = (double)TypeDescriptor.GetProperties(this.ModelItem)[FlowchartSizeFeature.WidthPropertyName].GetValue(this.ModelItem);
-            this.FlowchartHeight = (double)TypeDescriptor.GetProperties(this.ModelItem)[FlowchartSizeFeature.HeightPropertyName].GetValue(this.ModelItem);
-
-            CreateStartSymbol();
-            AddFlowElementsToDesigner(this.ModelItem.Properties["Nodes"].Collection, true);
-            perfEventProvider.FlowchartDesignerLoadEnd();
-        }
-
-        //This is to keep this.selectedConnector upto date.
-        //Eg. cases included 1. create a link, select it and undo, 2. Move a link from one shape to another.
-        void OnFreeFormPanelLayoutUpdated(object sender, EventArgs e)
-        {
-            if (!this.panel.Children.Contains(this.selectedConnector))
-            {
-                this.selectedConnector = null;
-            }
-        }
-
-        public UIElement StartSymbol { get; set; }
-
-        internal static List<ConnectionPoint> GetConnectionPoints(DependencyObject obj)
-        {
-            return (List<ConnectionPoint>)obj.GetValue(FlowchartDesigner.ConnectionPointsProperty);
-        }
-
-        internal static ConnectionPoint GetFalseConnectionPoint(DependencyObject obj)
-        {
-            return (ConnectionPoint)obj.GetValue(FlowchartDesigner.FalseConnectionPointProperty);
-        }
-
-        internal static ModelItem GetLinkModelItem(DependencyObject obj)
-        {
-            return (ModelItem)obj.GetValue(FlowchartDesigner.LinkModelItemProperty);
-        }
-
-        internal static ModelItem GetFlowElementModelItem(DependencyObject obj)
-        {
-            return (ModelItem)obj.GetValue(FlowchartDesigner.FlowElementModelItemProperty);
-        }
-
-        internal static ConnectionPoint GetTrueConnectionPoint(DependencyObject obj)
-        {
-            return (ConnectionPoint)obj.GetValue(FlowchartDesigner.TrueConnectionPointProperty);
-        }
-
-        public double FlowchartWidth
-        {
-            get { return (double)this.GetValue(FlowchartDesigner.FlowchartWidthProperty); }
-            set { this.SetValue(FlowchartDesigner.FlowchartWidthProperty, value); }
-        }
-
-        public double FlowchartHeight
-        {
-            get { return (double)this.GetValue(FlowchartDesigner.FlowchartHeightProperty); }
-            set { this.SetValue(FlowchartDesigner.FlowchartHeightProperty, value); }
-        }
-
-        public bool ShowAllConditions
-        {
-            get { return (bool)GetValue(ShowAllConditionsProperty); }
-            set { SetValue(ShowAllConditionsProperty, value); }
-        }
-
-        ModelItem GetFlowElementMI(ModelItem shapeModelItem)
-        {
-            Fx.Assert(this.modelElement.ContainsKey(shapeModelItem), "The ModelItem does not exist.");
-            UIElement element = this.modelElement[shapeModelItem];
-            ModelItem flowElementMI = FlowchartDesigner.GetFlowElementModelItem(element);
-            Fx.Assert(flowElementMI != null, "FlowNode dependency property not set.");
-            return flowElementMI;
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-        }
-
-        //Returns actual link destination - Activity ModelItem in case of a FlowStep.
-        ModelItem GetCorrespondingElementOnCanvas(ModelItem model)
-        {
-            ModelItem destModelItem = model;
-            if (typeof(FlowStep).IsAssignableFrom(model.ItemType)
-                && model.Properties["Action"].Value != null)
-            {
-                destModelItem = model.Properties["Action"].Value;
-            }
-            if (typeof(Flowchart) == model.ItemType)
-            {
-                destModelItem = flowStart;
-            }
-            return destModelItem;
-        }
-
-        private bool IsRightToLeft
-        {
-            get
-            {
-                if (!this.isRightToLeft.HasValue)
-                {
-                    this.isRightToLeft = FreeFormPanelUtilities.IsRightToLeft(this.flowchartContentPresenter);
-                }
-
-                return this.isRightToLeft.Value;
-            }
-        }
-
-        private void OnFlowchartGridMouseLeave(object sender, MouseEventArgs e)
-        {
-            bool endLinkCreation = !IsVisualHit(sender as UIElement, sender as UIElement, e.GetPosition(sender as IInputElement));
-            if (endLinkCreation)
-            {
-                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-                this.srcConnectionPoint = null;
-            }
-        }
-
-        private void OnFlowchartGridMouseMove(object sender, MouseEventArgs e)
-        {
-            if (this.srcConnectionPoint != null)
-            {
-                AutoScrollHelper.AutoScroll(e, this, 1);
-                Point[] points = ConnectorRouter.Route(this.panel, this.srcConnectionPoint, e);
-                if (points == null)
-                {
-                    e.Handled = true;
-                    return;
-                }
-                List<Point> segments = new List<Point>(points);
-                //Remove the previous adorner.
-                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-                //Add new adorner.
-                AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.srcConnectionPoint.ParentDesigner);
-                Fx.Assert(adornerLayer != null, "Adorner Layer does not exist");
-                ConnectorCreationAdorner newAdorner = new ConnectorCreationAdorner(this.panel, segments);
-                adornerLayer.Add(newAdorner);
-                e.Handled = true;
-            }
-
-        }
-
-        private void OnFlowchartGridMouseUp(object sender, MouseButtonEventArgs e)
-        {
-            if (this.srcConnectionPoint != null)
-            {
-                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-                this.srcConnectionPoint = null;
-            }
-        }
-
-
-        static void SetConnectionPoints(DependencyObject obj, List<ConnectionPoint> connectionPoints)
-        {
-            obj.SetValue(FlowchartDesigner.ConnectionPointsProperty, connectionPoints);
-        }
-
-
-        static void SetFalseConnectionPoint(DependencyObject obj, ConnectionPoint connectionPoint)
-        {
-            obj.SetValue(FlowchartDesigner.FalseConnectionPointProperty, connectionPoint);
-        }
-
-        static void SetLinkModelItem(DependencyObject obj, ModelItem modelItem)
-        {
-            obj.SetValue(FlowchartDesigner.LinkModelItemProperty, modelItem);
-        }
-
-        static void SetFlowElementModelItem(DependencyObject obj, ModelItem modelItem)
-        {
-            obj.SetValue(FlowchartDesigner.FlowElementModelItemProperty, modelItem);
-        }
-
-        static void SetTrueConnectionPoint(DependencyObject obj, ConnectionPoint connectionPoint)
-        {
-            obj.SetValue(FlowchartDesigner.TrueConnectionPointProperty, connectionPoint);
-        }
-
-        void ChildElement_MouseEnter(object sender, MouseEventArgs e)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            VirtualizedContainerService.VirtualizingContainer senderElement = sender as VirtualizedContainerService.VirtualizingContainer;
-            if ((senderElement != null || sender is StartSymbol) && !this.IsReadOnly)
-            {
-                AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer((Visual)sender);
-                Fx.Assert(adornerLayer != null, "Cannot get AdornerLayer.");
-                ConnectionPointsAdorner adorner = null;
-                if (sender is StartSymbol)
-                {
-                    adorner = new FlowchartConnectionPointsAdorner((UIElement)sender, ConnectionPointsToShow((UIElement)sender, this.ModelItem), false, this.IsRightToLeft);
-                }
-                else
-                {
-                    bool isSenderElementSelected = (((Selection)this.Context.Items.GetValue<Selection>()).SelectedObjects as ICollection<ModelItem>).Contains(senderElement.ModelItem);
-                    adorner = new FlowchartConnectionPointsAdorner(senderElement, ConnectionPointsToShow(senderElement, senderElement.ModelItem), isSenderElementSelected, this.IsRightToLeft);
-                }
-                adornerLayer.Add(adorner);
-                adorner.MouseDown += new MouseButtonEventHandler(ConnectionPoint_MouseDown);
-                adorner.MouseUp += new MouseButtonEventHandler(ConnectionPoint_MouseUp);
-                adorner.MouseLeave += new MouseEventHandler(ConnectionPoint_MouseLeave);
-            }
-        }
-
-
-        //This method returns which connection points should be shown on hover of a shape.
-        List<ConnectionPoint> ConnectionPointsToShow(UIElement element, ModelItem model)
-        {
-            bool isInComingConnection = false;
-
-            //This condition checks if it is an incoming connection.
-            if (this.srcConnectionPoint != null || (this.panel.connectorEditor != null && this.panel.connectorEditor.IsConnectorEndBeingMoved))
-            {
-                isInComingConnection = true;
-            }
-            List<ConnectionPoint> connectionPointsToShow = new List<ConnectionPoint>();
-
-            if (GenericFlowSwitchHelper.IsGenericFlowSwitch(model.ItemType))
-            {
-                connectionPointsToShow.AddRange(FlowchartDesigner.GetConnectionPoints(element));
-            }
-            else if (typeof(FlowDecision).IsAssignableFrom(model.ItemType))
-            {
-                if (isInComingConnection)
-                {
-                    connectionPointsToShow.AddRange(FlowchartDesigner.GetConnectionPoints(element));
-                }
-                else
-                {
-                    connectionPointsToShow.Add(FlowchartDesigner.GetTrueConnectionPoint(element));
-                    connectionPointsToShow.Add(FlowchartDesigner.GetFalseConnectionPoint(element));
-                    List<Connector> outGoingConnectors = GetOutGoingConnectors(element);
-                    if (this.panel.connectorEditor != null && this.panel.connectorEditor.IsConnectorStartBeingMoved)
-                    {
-                        //If the start of an outgoing connector is moved, its not an outgoing connector any more.
-                        outGoingConnectors.Remove(this.panel.connectorEditor.Connector);
-                    }
-                    //Do not show True/False connection point if a link already exists.
-                    foreach (Connector connector in outGoingConnectors)
-                    {
-                        connectionPointsToShow.Remove(FreeFormPanel.GetSourceConnectionPoint(connector));
-                    }
-                }
-            }
-            else// Case where only one out going connector is allowed - Start and FlowStep.
-            {
-                ConnectionPointKind allowedType = ConnectionPointKind.Default;
-                bool isConnectionAllowed = false;
-                if (isInComingConnection)
-                {
-                    allowedType = ConnectionPointKind.Incoming;
-                    isConnectionAllowed = true;
-                }
-                else
-                {
-                    List<Connector> outGoingConnectors = GetOutGoingConnectors(element);
-                    if (this.panel.connectorEditor != null && this.panel.connectorEditor.IsConnectorStartBeingMoved)
-                    {
-                        outGoingConnectors.Remove(this.panel.connectorEditor.Connector);
-                    }
-                    //Outgoing Connection is allowed only if there are no outgoing connectors already.
-                    if (outGoingConnectors.Count == 0)
-                    {
-                        allowedType = ConnectionPointKind.Outgoing;
-                        isConnectionAllowed = true;
-                    }
-                }
-
-                if (isConnectionAllowed)
-                {
-                    foreach (ConnectionPoint connPoint in FlowchartDesigner.GetConnectionPoints(element))
-                    {
-                        if (connPoint.PointType == allowedType || connPoint.PointType == ConnectionPointKind.Default)
-                        {
-                            connectionPointsToShow.Add(connPoint);
-                        }
-                    }
-                }
-            }
-            //Do not show the connection points of a selected connector.
-            if (this.selectedConnector != null)
-            {
-                connectionPointsToShow.Remove(FreeFormPanel.GetSourceConnectionPoint(this.selectedConnector));
-                connectionPointsToShow.Remove(FreeFormPanel.GetDestinationConnectionPoint(this.selectedConnector));
-            }
-            return connectionPointsToShow;
-        }
-
-
-        void ChildElement_MouseLeave(object sender, MouseEventArgs e)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            bool removeConnectionPointsAdorner = true;
-            if (Mouse.DirectlyOver != null)
-            {
-                removeConnectionPointsAdorner = !typeof(ConnectionPointsAdorner).IsAssignableFrom(Mouse.DirectlyOver.GetType());
-            }
-            if (removeConnectionPointsAdorner)
-            {
-                RemoveAdorner(sender as UIElement, typeof(ConnectionPointsAdorner));
-            }
-        }
-
-
-        void ChildSizeChanged(object sender, SizeChangedEventArgs e)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            VirtualizedContainerService.VirtualizingContainer container = sender as VirtualizedContainerService.VirtualizingContainer;
-            if (container != null || sender is StartSymbol)
-            {
-                this.internalViewStateChange = true;
-                //Initializing storageModelItem for the case of FlowchartStartNode.
-                ModelItem storageModelItem = this.ModelItem;
-                if (container != null)
-                {
-                    storageModelItem = GetFlowElementMI(container.ModelItem);
-                }
-                this.ViewStateService.StoreViewState(storageModelItem, shapeSize, ((UIElement)sender).DesiredSize);
-                this.internalViewStateChange = false;
-            }
-        }
-
-        void ConnectionPoint_MouseDown(object sender, MouseButtonEventArgs e)
-        {
-            UIElement srcElement = ((Adorner)sender).AdornedElement as UIElement;
-            this.srcConnectionPoint = ConnectionPointHitTest(srcElement, e.GetPosition(this.panel));
-            e.Handled = true;
-        }
-
-        void ConnectionPoint_MouseLeave(object sender, MouseEventArgs e)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            UIElement adornedElement = ((Adorner)sender).AdornedElement as UIElement;
-            RemoveAdorner(adornedElement, typeof(ConnectionPointsAdorner));
-        }
-
-
-        void ConnectionPoint_MouseUp(object sender, MouseButtonEventArgs e)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            UIElement dest = ((Adorner)sender).AdornedElement as UIElement;
-            Fx.Assert(dest != null, "Adorned element is not a UIElement");
-            if (this.srcConnectionPoint != null)
-            {
-                ConnectionPoint destConnectionPoint = ConnectionPointHitTest(dest, e.GetPosition(this.panel));
-                if (destConnectionPoint != null && !this.srcConnectionPoint.Equals(destConnectionPoint))
-                {
-                    string errorMessage = string.Empty;
-                    if (!CreateLinkGesture(this.srcConnectionPoint, destConnectionPoint, out errorMessage, null) && !errorMessage.Equals(string.Empty))
-                    {
-                        ErrorReporting.ShowErrorMessage(errorMessage);
-                    }
-                }
-                this.srcConnectionPoint = null;
-                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-                RemoveAdorner(dest, typeof(FlowchartConnectionPointsAdorner));
-            }
-            else
-            {
-                //This will cause the FreeFormPanel to handle the event and is useful while moving connection end points of a connector.
-                lastConnectionPointMouseUpElement = dest;
-                dest.RaiseEvent(e);
-            }
-        }
-
-        void OnFreeFormPanelRequiredSizeChanged(object sender, RequiredSizeChangedEventArgs e)
-        {
-            Dispatcher.BeginInvoke(() =>
-            {
-                // Access the view state dictionary directly to avoid generating an undo item because of ViewStateAttachedPropertyFeature implementation.
-                Dictionary<string, object> viewState = WorkflowViewStateService.GetViewState(this.ModelItem.GetCurrentValue());
-                if (viewState == null)
-                {
-                    viewState = new Dictionary<string, object>();
-                    WorkflowViewStateService.SetViewState(this.ModelItem.GetCurrentValue(), viewState);
-                }
-
-                if (e.NewRequiredSize.Width > this.FlowchartWidth)
-                {
-                    viewState[FlowchartSizeFeature.WidthPropertyName] = e.NewRequiredSize.Width;
-                    this.FlowchartWidth = e.NewRequiredSize.Width;
-                }
-
-                if (e.NewRequiredSize.Height > this.FlowchartHeight)
-                {
-                    viewState[FlowchartSizeFeature.HeightPropertyName] = e.NewRequiredSize.Height;
-                    this.FlowchartHeight = e.NewRequiredSize.Height;
-                }
-            });
-        }
-
-        void OnFreeFormPanelLocationChanged(object sender, System.Activities.Presentation.FreeFormEditing.LocationChangedEventArgs e)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            Fx.Assert(sender is UIElement, "Sender should be of type UIElement");
-            Connector movedConnector = sender as Connector;
-            if (movedConnector != null)
-            {
-                //ViewState is undoable only when a user gesture moves a connector. If the freeformpanel routes a connector,
-                //the change is not undoable.
-                bool isUndoableViewState = false;
-                ModelItem linkModelItem = FlowchartDesigner.GetLinkModelItem(movedConnector);
-                ConnectionPoint source = FreeFormPanel.GetSourceConnectionPoint(movedConnector);
-                string viewStateKey = GetConnectorViewStateKey(linkModelItem, source);
-                ModelItem storageModelItem = GetConnectorViewStateStorageModelItem(linkModelItem);
-                PointCollection existingVS = this.ViewStateService.RetrieveViewState(storageModelItem, viewStateKey) as PointCollection;
-                if (existingVS != null && existingVS.Count > 0 && movedConnector.Points.Count > 0
-                    && existingVS[0].Equals(movedConnector.Points[0]) && existingVS[existingVS.Count - 1].Equals(movedConnector.Points[movedConnector.Points.Count - 1]))
-                {
-                    isUndoableViewState = true;
-                }
-                StoreConnectorViewState(movedConnector, isUndoableViewState);
-            }
-            else
-            {
-                //Save the location property of each shape on the CFx object for serialization and viewstate maintenance.
-                //This is called only when a shape without viewstate is autolayed out by the freeform panel.
-                VirtualizedContainerService.VirtualizingContainer container = sender as VirtualizedContainerService.VirtualizingContainer;
-                if (container != null)
-                {
-                    StoreShapeViewState(container, e.NewLocation);
-                }
-            }
-        }
-
-
-        void UpdateFlowchartOnLinkVisualMoved(ConnectionPoint knownConnectionPoint, Point newPoint, Connector movedConnector, bool isSourceKnown)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            HitTestResult hitTestResult = VisualTreeHelper.HitTest(this.panel, newPoint);
-            if (hitTestResult == null)
-            {
-                return;
-            }
-            //Test if the last connectionPoint hit, is the new location for the connector.
-            UIElement newViewElement = null;
-            ConnectionPoint newConnectionPoint = null;
-
-            //The case where the link is dropped on a connectionpoint.
-            if (this.lastConnectionPointMouseUpElement != null)
-            {
-                newConnectionPoint = this.ConnectionPointHitTest(this.lastConnectionPointMouseUpElement, newPoint);
-                if (newConnectionPoint != null)
-                {
-                    newViewElement = this.lastConnectionPointMouseUpElement;
-                }
-            }
-            //The case where the link is dropped on a shape.
-            if (newViewElement == null)
-            {
-                newViewElement = VisualTreeUtils.FindVisualAncestor<StartSymbol>(hitTestResult.VisualHit);
-                if (newViewElement == null)
-                {
-                    newViewElement = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(hitTestResult.VisualHit);
-                }
-            }
-            if (newViewElement != null)
-            {
-                if (this.panel.Children.Contains(newViewElement))
-                {
-                    using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.FCLinkMove))
-                    {
-                        //Delete the existing link and keep the caseKey
-                        IFlowSwitchLink oldCaseKey = this.DeleteLink(movedConnector, true);
-
-                        //Create new link
-                        bool linkCreated = false;
-                        string errorMessage = string.Empty;
-                        if (isSourceKnown)
-                        {
-                            if (newConnectionPoint == null)
-                            {
-                                linkCreated = CreateLinkGesture(knownConnectionPoint, newViewElement, newPoint, out errorMessage, true, oldCaseKey);
-                            }
-                            else
-                            {
-                                linkCreated = CreateLinkGesture(knownConnectionPoint, newConnectionPoint, out errorMessage, true, oldCaseKey);
-                            }
-                        }
-                        else
-                        {
-                            //If the Link source is dropped onto itself, we need to set the isLinkValidDueToLinkMove flag.
-                            bool isLinkValidDueToLinkMove = FreeFormPanel.GetSourceConnectionPoint(movedConnector).ParentDesigner.Equals(newViewElement);
-                            if (newConnectionPoint == null)
-                            {
-                                linkCreated = CreateLinkGesture(newViewElement, knownConnectionPoint, newPoint, out errorMessage, isLinkValidDueToLinkMove, oldCaseKey);
-                            }
-                            else
-                            {
-                                linkCreated = CreateLinkGesture(newConnectionPoint, knownConnectionPoint, out errorMessage, isLinkValidDueToLinkMove, oldCaseKey);
-                            }
-                        }
-                        if (!linkCreated)
-                        {
-                            if (!errorMessage.Equals(string.Empty))
-                            {
-                                ErrorReporting.ShowErrorMessage(errorMessage);
-                            }
-                            es.Revert();
-                        }
-                        else
-                        {
-                            es.Complete();
-                        }
-                    }
-                }
-            }
-        }
-
-        void OnFreeFormPanelConnectorMoved(object sender, ConnectorMovedEventArgs e)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            Connector movedConnector = sender as Connector;
-            int movedEndConnectorPointIndex = movedConnector.Points.Count - 1;
-            int newEndConnectorPointIndex = e.NewConnectorLocation.Count - 1;
-
-            if (movedConnector != null)
-            {
-                Fx.Assert(e.NewConnectorLocation.Count > 0, "Invalid connector editor");
-                if (!e.NewConnectorLocation[0].Equals(movedConnector.Points[0]))
-                {
-                    //srcMoved
-                    ConnectionPoint destConnPoint = FreeFormPanel.GetDestinationConnectionPoint(movedConnector);
-                    UpdateFlowchartOnLinkVisualMoved(destConnPoint, e.NewConnectorLocation[0], movedConnector, false);
-                }
-                else if (!e.NewConnectorLocation[newEndConnectorPointIndex].Equals(movedConnector.Points[movedEndConnectorPointIndex]))
-                {
-                    //DestMoved
-                    ConnectionPoint srcConnPoint = FreeFormPanel.GetSourceConnectionPoint(movedConnector);
-                    Point destPoint = e.NewConnectorLocation[newEndConnectorPointIndex];
-                    UpdateFlowchartOnLinkVisualMoved(srcConnPoint, destPoint, movedConnector, true);
-                }
-
-                this.selectedConnector = movedConnector;
-            }
-        }
-
-        MultiBinding GetConnectionPointBinding(FrameworkElement element, double widthFraction, double heightFraction)
-        {
-            Fx.Assert(element != null, "FrameworkElement is null.");
-            MultiBinding bindings = new MultiBinding();
-            Binding sizeBinding = new Binding();
-            sizeBinding.Source = element;
-            sizeBinding.Path = new PropertyPath(FreeFormPanel.ChildSizeProperty);
-            Binding locationBinding = new Binding();
-            locationBinding.Source = element;
-            locationBinding.Path = new PropertyPath(FreeFormPanel.LocationProperty);
-            bindings.Bindings.Add(sizeBinding);
-            bindings.Bindings.Add(locationBinding);
-            bindings.Converter = new ConnectionPointConverter();
-            bindings.ConverterParameter = new List<Object> { widthFraction, heightFraction, element.Margin };
-            return bindings;
-        }
-
-
-        Connector GetConnector(ModelItem linkModelItem, ConnectionPoint srcConnPoint, ConnectionPoint destConnPoint)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            ConnectorWithoutStartDot connector = new ConnectorWithoutStartDot();
-            connector.FocusVisualStyle = null;
-            connector.Focusable = true;
-            DesignerView.SetCommandMenuMode(connector, CommandMenuMode.NoCommandMenu);
-            SetConnectorLabel(connector, srcConnPoint, linkModelItem);
-
-            connector.GotKeyboardFocus += new KeyboardFocusChangedEventHandler(OnConnectorGotKeyboardFocus);
-            connector.RequestBringIntoView += new RequestBringIntoViewEventHandler(OnConnectorRequestBringIntoView);
-            connector.MouseDown += new MouseButtonEventHandler(OnConnectorMouseDown);
-            connector.GotFocus += new RoutedEventHandler(OnConnectorGotFocus);
-            SetConnectorSrcDestConnectionPoints(connector, srcConnPoint, destConnPoint);
-            FlowchartDesigner.SetLinkModelItem(connector, linkModelItem);
-            connector.Unloaded += new RoutedEventHandler(OnConnectorUnloaded);
-            connector.AutoSplitContainer = this;
-            return connector;
-        }
-
-        // To prevent the parent FlowchartDesigner from handling mouse events and setting the selection to itself.
-        void OnConnectorMouseDown(object sender, MouseButtonEventArgs e)
-        {
-            e.Handled = true;
-        }
-
-        void SetConnectorLabel(Connector connector, ConnectionPoint srcConnPoint, ModelItem linkModelItem)
-        {
-            BindingBase labelBinding = null;
-
-            if (typeof(FlowDecision).IsAssignableFrom(linkModelItem.ItemType))
-            {
-                if (FlowchartDesigner.GetTrueConnectionPoint(srcConnPoint.ParentDesigner).Equals(srcConnPoint))
-                {
-                    labelBinding = new Binding { Source = linkModelItem, Path = new PropertyPath("TrueLabel") };
-                }
-                else
-                {
-                    labelBinding = new Binding { Source = linkModelItem, Path = new PropertyPath("FalseLabel") };
-                }
-
-                SetConnectorLabelToolTip(connector, labelBinding);
-            }
-            else if (typeof(IFlowSwitchLink).IsAssignableFrom(linkModelItem.ItemType))
-            {
-                IFlowSwitchLink flowSwitchLink = (IFlowSwitchLink)linkModelItem.GetCurrentValue();
-                labelBinding = flowSwitchLink.CreateConnectorLabelTextBinding();
-                SetConnectorLabelToolTip(connector, labelBinding);
-            }
-        }
-
-        void SetConnectorLabelToolTip(Connector connector, BindingBase binding)
-        {
-            connector.SetBinding(Connector.LabelTextProperty, binding);
-            ToolTip toolTip = new ToolTip();
-            toolTip.SetBinding(UserControl.ContentProperty, binding);
-            connector.SetLabelToolTip(toolTip);
-        }
-
-        void OnConnectorUnloaded(object sender, RoutedEventArgs e)
-        {
-            ModelItem primarySelection = this.Context.Items.GetValue<Selection>().PrimarySelection;
-            if (object.Equals(primarySelection, FlowchartDesigner.GetLinkModelItem(sender as DependencyObject)))
-            {
-                if (primarySelection != null)
-                {
-                    Selection.Toggle(this.Context, primarySelection);
-                }
-            }
-        }
-
-        //Marking e.Handled = true to avoid scrolling in large workflows to bring the
-        //area of a connector in the center of the view region.
-        //Area covered by a connector includes the region between 0,0 of the panel and the edges of the connector.
-        void OnConnectorRequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
-        {
-            e.Handled = true;
-        }
-
-
-
-        //Returns a new connector if viewstate exists, null otherwise.
-        Connector GetConnectorViewState(UIElement source, UIElement dest, ModelItem linkModelItem, ConnectionPoint sourceConnectionPoint)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            Connector connector = null;
-            object connectorLocation = null;
-            if (typeof(FlowDecision).IsAssignableFrom(linkModelItem.ItemType))
-            {
-                Fx.Assert(sourceConnectionPoint != null, "Source connection point is null.");
-                if (sourceConnectionPoint.Equals(FlowchartDesigner.GetTrueConnectionPoint(this.modelElement[linkModelItem])))
-                {
-                    connectorLocation = this.ViewStateService.RetrieveViewState(linkModelItem, TrueConnectorViewStateKey);
-                }
-                else
-                {
-                    connectorLocation = this.ViewStateService.RetrieveViewState(linkModelItem, FalseConnectorViewStateKey);
-                }
-            }
-            else if (typeof(IFlowSwitchLink).IsAssignableFrom(linkModelItem.ItemType))
-            {
-                string key = null;
-                IFlowSwitchLink link = (IFlowSwitchLink)linkModelItem.GetCurrentValue();
-                if (link.IsDefaultCase)
-                {
-                    key = FlowSwitchDefaultViewStateKey;
-                }
-                else
-                {
-                    key = link.CaseName + CaseViewStateKeyAppendString;
-                }
-                //Transitioning from fake ModelItem world to real ModelItem world.
-                ModelItem realFSModelItem = (this.ModelItem as IModelTreeItem).ModelTreeManager.WrapAsModelItem(link.ParentFlowSwitch);
-                connectorLocation = this.ViewStateService.RetrieveViewState(realFSModelItem, key);
-            }
-            else
-            {
-                connectorLocation = this.ViewStateService.RetrieveViewState(linkModelItem, ConnectorViewStateKey);
-            }
-            PointCollection locationPts = connectorLocation as PointCollection;
-            if (locationPts != null)
-            {
-                ConnectionPoint srcConnPoint, destConnPoint;
-                System.Diagnostics.Debug.WriteLine(this.isLoaded ? "About to call ConnectionPointHitTest - Loaded" : "About to call ConnectionPointHitTest - Not Loaded");
-                srcConnPoint = ConnectionPointHitTest(source, locationPts[0]);
-                destConnPoint = ConnectionPointHitTest(dest, locationPts[locationPts.Count - 1]);
-                //In Debug mode, the size of the designer changes due to the debug adorner(border). Because of this connection points will move and
-                //won't coincide with the viewstate.
-                //The following code path is added for the scenario where we reload the flowchart designer by navigating back and forth on breadcrumb
-                //when one of the flowchart activities has the debug border.
-                //In this scenario we try to find the closest connection point from the end point stored in viewstate. If the distance between the two
-                //is within the acceptable range, we will reuse the viewstate and avoid re-drawing the connector.
-                if (this.IsReadOnly)
-                {
-                    ConnectionPoint pt;
-                    double dist;
-                    if (srcConnPoint == null)
-                    {
-                        pt = FindClosestConnectionPoint(locationPts[0], FlowchartDesigner.GetConnectionPoints(source), out dist);
-                        if (pt != null && pt.PointType != ConnectionPointKind.Incoming && dist <= DebugTimeMaxConnectorShapeDist)
-                        {
-                            srcConnPoint = pt;
-                        }
-                    }
-                    if (destConnPoint == null)
-                    {
-                        pt = FindClosestConnectionPoint(locationPts[locationPts.Count - 1], FlowchartDesigner.GetConnectionPoints(dest), out dist);
-                        if (pt != null && pt.PointType != ConnectionPointKind.Outgoing && dist <= DebugTimeMaxConnectorShapeDist)
-                        {
-                            destConnPoint = pt;
-                        }
-                    }
-                }
-                if (srcConnPoint != null && destConnPoint != null)
-                {
-                    connector = GetConnector(linkModelItem, srcConnPoint, destConnPoint);
-                    connector.Points = locationPts;
-                }
-            }
-            return connector;
-        }
-
-
-        //Marking e.Handled true for the case where a connector is clicked on.
-        //This is to prevent WorkflowViewElement class from making Flowchart as the current selection.
-        void OnConnectorGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
-        {
-            e.Handled = true;
-        }
-
-        void OnConnectorGotFocus(object sender, RoutedEventArgs e)
-        {
-            Connector clickedLine = e.Source as Connector;
-            DesignerView designerView = this.Context.Services.GetService<DesignerView>();
-
-            if (!designerView.IsMultipleSelectionMode)
-            {
-
-                if (this.panel.connectorEditor == null || !clickedLine.Equals(this.panel.connectorEditor.Connector))
-                {
-                    this.panel.RemoveConnectorEditor();
-                    this.panel.connectorEditor = new ConnectorEditor(this.panel, clickedLine);
-                }
-
-                if (this.panel.Children.Contains(clickedLine))
-                {
-                    this.updatingSelectedConnector = true;
-                    ModelItem lineModelItem = FlowchartDesigner.GetLinkModelItem(clickedLine);
-                    Selection newSelection = new Selection();
-                    // If the linkModelItem is FlowDecision or Flowchart, we don't want to add it to the selection
-                    if (IsLinkModelItemSelectable(lineModelItem))
-                    {
-                        newSelection = new Selection(lineModelItem);
-                    }
-                    this.Context.Items.SetValue(newSelection);
-                    this.selectedConnector = clickedLine;
-                    this.updatingSelectedConnector = false;
-                    e.Handled = true;
-                }
-            }
-        }
-
-        private void OnSelectionChanged(Selection selection)
-        {
-            // If selection changed, remove ConnectorEditor if existed.
-            // Only if the selection changed is caused by adding ConnectorEditor when OnConnectorGotFocus, ignore.
-            if (!this.updatingSelectedConnector && this.panel != null && this.panel.connectorEditor != null)
-            {
-                this.panel.RemoveConnectorEditor();
-            }
-        }
-
-        //widthFraction, heightFraction determine location of connectionpoint on the shape.
-        ConnectionPoint CreateConnectionPoint(UIElement element, double widthFraction, double heightFraction, EdgeLocation location)
-        {
-            ConnectionPoint connectionPoint = new ConnectionPoint();
-            connectionPoint.EdgeLocation = location;
-            connectionPoint.PointType = ConnectionPointKind.Default;
-            connectionPoint.ParentDesigner = element;
-            BindingOperations.SetBinding(connectionPoint, ConnectionPoint.LocationProperty, GetConnectionPointBinding(element as FrameworkElement, widthFraction, heightFraction));
-            return connectionPoint;
-        }
-
-        void PopulateConnectionPoints(UIElement element, ModelItem model)
-        {
-            element.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
-            List<ConnectionPoint> connectionPoints;
-            if (model != null &&
-                GenericFlowSwitchHelper.IsGenericFlowSwitch(model.ItemType))
-            {
-                connectionPoints = new List<ConnectionPoint>
-                    {
-                        //Top edge
-                        CreateConnectionPoint(element, 0.25, 0, EdgeLocation.Top),
-                        CreateConnectionPoint(element, 0.5, 0, EdgeLocation.Top),
-                        CreateConnectionPoint(element, 0.75, 0, EdgeLocation.Top),
-                        //Right edge
-                        CreateConnectionPoint(element, 1, 0.25, EdgeLocation.Right),
-                        CreateConnectionPoint(element, 1, 0.50, EdgeLocation.Right),
-                        CreateConnectionPoint(element, 1, 0.75, EdgeLocation.Right),
-                        //Bottom edge
-                        CreateConnectionPoint(element, 0.25, 1, EdgeLocation.Bottom),
-                        CreateConnectionPoint(element, 0.5, 1, EdgeLocation.Bottom),
-                        CreateConnectionPoint(element, 0.75, 1, EdgeLocation.Bottom),
-                        //Left edge
-                        CreateConnectionPoint(element, 0, 0.25, EdgeLocation.Left),
-                        CreateConnectionPoint(element, 0, 0.50, EdgeLocation.Left),
-                        CreateConnectionPoint(element, 0, 0.75, EdgeLocation.Left),
-                    };
-            }
-            else if (model != null && typeof(FlowDecision).IsAssignableFrom(model.ItemType))
-            {
-                ConnectionPoint trueConnectionPoint = CreateConnectionPoint(element, 0, 0.50, EdgeLocation.Left);
-                trueConnectionPoint.PointType = ConnectionPointKind.Outgoing;
-                FlowchartDesigner.SetTrueConnectionPoint(element, trueConnectionPoint);
-
-                ConnectionPoint falseConnectionPoint = CreateConnectionPoint(element, 1, 0.50, EdgeLocation.Right);
-                falseConnectionPoint.PointType = ConnectionPointKind.Outgoing;
-                FlowchartDesigner.SetFalseConnectionPoint(element, falseConnectionPoint);
-
-                connectionPoints = new List<ConnectionPoint>
-                    {
-                        //Top edge
-                        CreateConnectionPoint(element, 0.25, 0, EdgeLocation.Top),
-                        CreateConnectionPoint(element, 0.5, 0, EdgeLocation.Top),
-                        CreateConnectionPoint(element, 0.75, 0, EdgeLocation.Top),
-                        //Bottom edge
-                        CreateConnectionPoint(element, 0.5, 1, EdgeLocation.Bottom),
-                    };
-                connectionPoints.ForEach((point) => point.PointType = ConnectionPointKind.Incoming);
-            }
-            else
-            {
-                //First adding top, right, bottom and left default connection points in that order on all shapes other than flowswitch.
-                //For shapes that do not need any of the points, we will remove that point explicitly.
-                connectionPoints = new List<ConnectionPoint>
-                    {
-                        CreateConnectionPoint(element, 0.5, 0, EdgeLocation.Top),
-                        CreateConnectionPoint(element, 1, 0.5, EdgeLocation.Right),
-                        CreateConnectionPoint(element, 0.5, 1, EdgeLocation.Bottom),
-                        CreateConnectionPoint(element, 0, 0.5, EdgeLocation.Left)
-                    };
-            }
-
-            if (model == null) // Start symbol: model = null
-            {
-                foreach (ConnectionPoint connPoint in connectionPoints)
-                {
-                    connPoint.PointType = ConnectionPointKind.Outgoing;
-                }
-            }
-            FlowchartDesigner.SetConnectionPoints(element, connectionPoints);
-        }
-
-        void SetFlowElementModelItem(UIElement view, ModelItem model)
-        {
-            ModelItem flowElementMI = model;
-            if (flowElementMI != null && !IsFlowNode(flowElementMI))
-            {
-                ModelItem flowStepMI = null;
-                //Select the right FlowStep ModelItem out of view.ModelItem.Parents.
-                foreach (ModelItem parentModelItem in flowElementMI.Parents)
-                {
-                    if (IsFlowNode(parentModelItem)
-                        && this.ModelItem.Properties["Nodes"].Collection.Contains(parentModelItem))
-                    {
-                        flowStepMI = parentModelItem;
-                        break;
-                    }
-                }
-                flowElementMI = flowStepMI;
-            }
-            Fx.Assert(flowElementMI != null, "Non FlowNode present on Flowchart");
-            FlowchartDesigner.SetFlowElementModelItem(view as DependencyObject, flowElementMI);
-            this.flowNodeToUIElement[flowElementMI] = view;
-
-        }
-
-        UIElement ProcessAndGetModelView(ModelItem model)
-        {
-            Fx.Assert(this.panel != null, "This code should not be hit if panel is null");
-            UIElement container;
-            if (!this.modelElement.TryGetValue(model, out container))
-            {
-                VirtualizedContainerService containerService = this.Context.Services.GetService<VirtualizedContainerService>();
-                Fx.Assert(this.ViewService != null, "ViewService is null");
-                container = containerService.GetContainer(model, this);
-                //WorkflowViewElement view = (WorkflowViewElement)this.ViewService.GetView(model);
-                //Fx.Assert(view != null, "View does not exist for a model Item");
-                //DragDropHelper.SetSourceContainer(view, this);
-                //element = (UIElement)view;
-                //element.MouseEnter += new MouseEventHandler(ChildElement_MouseEnter);
-                //element.MouseLeave += new MouseEventHandler(ChildElement_MouseLeave);
-                container.MouseEnter += new MouseEventHandler(ChildElement_MouseEnter);
-                container.MouseLeave += new MouseEventHandler(ChildElement_MouseLeave);
-
-                ((FrameworkElement)container).SizeChanged += new SizeChangedEventHandler(ChildSizeChanged);
-                this.modelElement.Add(model, container);
-                PopulateConnectionPoints(container, model);
-                this.SetFlowElementModelItem(container, model);
-
-                //Getting the View state information.
-                ModelItem flowElementMI = GetFlowElementMI(model);
-                object locationOfShape = this.ViewStateService.RetrieveViewState(flowElementMI, shapeLocation);
-                object sizeOfShape = this.ViewStateService.RetrieveViewState(flowElementMI, shapeSize);
-                if (locationOfShape != null)
-                {
-                    Point locationPt = (Point)locationOfShape;
-                    FreeFormPanel.SetLocation(container, locationPt);
-                    this.shapeLocations.Add(locationPt);
-                }
-                if (sizeOfShape != null)
-                {
-                    Size size = (Size)sizeOfShape;
-                    FreeFormPanel.SetChildSize(container, size);
-                    VirtualizedContainerService.VirtualizingContainer virtualizingContainer = container as VirtualizedContainerService.VirtualizingContainer;
-                    if (virtualizingContainer != null)
-                    {
-                        virtualizingContainer.MinWidth = size.Width;
-                        virtualizingContainer.MinHeight = size.Height;
-                    }
-
-                }
-            }
-            return container;
-        }
-
-        void GetSrcDestConnectionPoints(UIElement source, UIElement dest, out ConnectionPoint srcConnPoint, out ConnectionPoint destConnPoint, out string errorMessage)
-        {
-            srcConnPoint = null;
-            destConnPoint = null;
-            errorMessage = string.Empty;
-            VirtualizedContainerService.VirtualizingContainer sourceContainer = source as VirtualizedContainerService.VirtualizingContainer;
-            if (sourceContainer != null && typeof(FlowDecision).IsAssignableFrom(sourceContainer.ModelItem.ItemType))
-            {
-                srcConnPoint = FindFlowDecisionSrcConnectionPoint(source, out errorMessage);
-                if (srcConnPoint != null)
-                {
-                    destConnPoint = FindBestMatchDestConnectionPoint(srcConnPoint, dest, out errorMessage);
-                }
-            }
-            else
-            {
-
-                List<ConnectionPoint> srcConnectionPoints = FlowchartDesigner.GetConnectionPoints(source);
-                List<ConnectionPoint> destConnectionPoints = FlowchartDesigner.GetConnectionPoints(dest);
-                if (sourceContainer != null && GenericFlowSwitchHelper.IsGenericFlowSwitch(sourceContainer.ModelItem.ItemType))
-                {
-                    FindBestMatchConnectionPointPair(srcConnectionPoints, destConnectionPoints, out srcConnPoint, out destConnPoint);
-                }
-                else
-                {
-                    // Flowstep
-                    FindBestMatchConnectionPointPair(srcConnectionPoints, destConnectionPoints, out srcConnPoint, out destConnPoint);
-                }
-            }
-        }
-
-        //This returns the closest non-outgoing connectionPoint on dest. Return value will be different than sourceConnectionPoint.
-        ConnectionPoint ClosestDestConnectionPoint(ConnectionPoint sourceConnectionPoint, UIElement dest, out string errorMessage)
-        {
-            ConnectionPoint destConnectionPoint = null;
-            errorMessage = string.Empty;
-            if (sourceConnectionPoint.PointType != ConnectionPointKind.Incoming)
-            {
-                destConnectionPoint = FindClosestConnectionPointNotOfType(sourceConnectionPoint, FlowchartDesigner.GetConnectionPoints(dest), ConnectionPointKind.Outgoing);
-            }
-            else
-            {
-                errorMessage = SR.FCInvalidLink;
-            }
-            return destConnectionPoint;
-
-        }
-
-        //This returns the closest non-Incoming connectionPoint on source. Return value will be different than destConnectionPoint.
-        ConnectionPoint ClosestSrcConnectionPoint(UIElement src, ConnectionPoint destConnectionPoint, out string errorMessage)
-        {
-            ConnectionPoint sourceConnectionPoint = null;
-            errorMessage = string.Empty;
-            if (destConnectionPoint.PointType != ConnectionPointKind.Outgoing)
-            {
-                VirtualizedContainerService.VirtualizingContainer srcContainer = src as VirtualizedContainerService.VirtualizingContainer;
-                if (srcContainer != null && typeof(FlowDecision).IsAssignableFrom(srcContainer.ModelItem.ItemType))
-                {
-                    sourceConnectionPoint = FindFlowDecisionSrcConnectionPoint(src, out errorMessage);
-                }
-                else
-                {
-                    sourceConnectionPoint = FindClosestConnectionPointNotOfType(destConnectionPoint, FlowchartDesigner.GetConnectionPoints(src), ConnectionPointKind.Incoming);
-                }
-            }
-            else
-            {
-                errorMessage = SR.FCInvalidLink;
-            }
-            return sourceConnectionPoint;
-        }
-
-        //Priority of selection: 1st true then false.
-        ConnectionPoint FindFlowDecisionSrcConnectionPoint(UIElement decisionDesigner, out string errorMessage)
-        {
-            ConnectionPoint sourceConnectionPoint = null;
-            errorMessage = string.Empty;
-            ConnectionPoint trueConnPoint = FlowchartDesigner.GetTrueConnectionPoint(decisionDesigner);
-            ConnectionPoint falseConnPoint = FlowchartDesigner.GetFalseConnectionPoint(decisionDesigner);
-            if (trueConnPoint.AttachedConnectors.Count == 0)
-            {
-                sourceConnectionPoint = trueConnPoint;
-            }
-            else if (falseConnPoint.AttachedConnectors.Count == 0)
-            {
-                sourceConnectionPoint = falseConnPoint;
-            }
-            else
-            {
-                errorMessage = SR.FCFlowConditionLinksExist;
-            }
-            return sourceConnectionPoint;
-        }
-
-        void SetConnectorSrcDestConnectionPoints(Connector connector, ConnectionPoint sourceConnectionPoint, ConnectionPoint destConnectionPoint)
-        {
-            FreeFormPanel.SetSourceConnectionPoint(connector, sourceConnectionPoint);
-            FreeFormPanel.SetDestinationConnectionPoint(connector, destConnectionPoint);
-            sourceConnectionPoint.AttachedConnectors.Add(connector);
-            destConnectionPoint.AttachedConnectors.Add(connector);
-        }
-
-        //Save the connector.Points property on the CFx object for serialization and viewstate maintenance.
-        void StoreConnectorViewState(ModelItem linkModelItem, PointCollection viewState, ConnectionPoint srcConnPoint, bool isUndoableViewState)
-        {
-            ModelItem storageModelItem = GetConnectorViewStateStorageModelItem(linkModelItem);
-            string viewStateKey = GetConnectorViewStateKey(linkModelItem, srcConnPoint);
-            StoreConnectorViewState(storageModelItem, viewStateKey, viewState, isUndoableViewState);
-        }
-
-        void StoreConnectorViewState(ModelItem storageModelItem, string viewStateKey, PointCollection viewState, bool isUndoableViewState)
-        {
-            if (isUndoableViewState)
-            {
-                this.ViewStateService.StoreViewStateWithUndo(storageModelItem, viewStateKey, viewState);
-            }
-            else
-            {
-                this.ViewStateService.StoreViewState(storageModelItem, viewStateKey, viewState);
-            }
-        }
-
-        void StoreConnectorViewState(ModelItem linkModelItem, PointCollection viewState, ConnectionPoint srcConnPoint)
-        {
-            StoreConnectorViewState(linkModelItem, viewState, srcConnPoint, true);
-        }
-
-        void StoreConnectorViewState(Connector connector, bool isUndoableViewState)
-        {
-            //This method will be called whenever the FreeFormPanel raises a location changed event on a connector.
-            //Such location changed events are a result of changes already commited in the UI. Hence we do not want to react to such view state changes.
-            //Using internalViewStateChange flag for that purpose.
-            this.internalViewStateChange = true;
-            this.StoreConnectorViewState(FlowchartDesigner.GetLinkModelItem(connector), connector.Points, FreeFormPanel.GetSourceConnectionPoint(connector), isUndoableViewState);
-            this.internalViewStateChange = false;
-        }
-
-        string GetConnectorViewStateKey(ModelItem linkModelItem, ConnectionPoint srcConnPoint)
-        {
-            string viewStateKey = ConnectorViewStateKey;
-            if ((typeof(FlowDecision).IsAssignableFrom(linkModelItem.ItemType)))
-            {
-                if (srcConnPoint.Equals(FlowchartDesigner.GetTrueConnectionPoint(this.modelElement[linkModelItem])))
-                {
-                    viewStateKey = TrueConnectorViewStateKey;
-                }
-                else
-                {
-                    viewStateKey = FalseConnectorViewStateKey;
-                }
-            }
-            else if (typeof(IFlowSwitchLink).IsAssignableFrom(linkModelItem.ItemType))
-            {
-                IFlowSwitchLink link = (IFlowSwitchLink)linkModelItem.GetCurrentValue();
-                if (link.IsDefaultCase)
-                {
-                    viewStateKey = FlowSwitchDefaultViewStateKey;
-                }
-                else
-                {
-                    viewStateKey = link.CaseName + CaseViewStateKeyAppendString;
-                }
-            }
-            return viewStateKey;
-        }
-
-        ModelItem GetConnectorViewStateStorageModelItem(ModelItem linkModelItem)
-        {
-            ModelItem storageModelItem = linkModelItem;
-            if (typeof(IFlowSwitchLink).IsAssignableFrom(linkModelItem.ItemType))
-            {
-                IFlowSwitchLink link = (IFlowSwitchLink)linkModelItem.GetCurrentValue();
-                //Getting FlowSwitch ModelItem since there is no CFx object for linkModelItem.
-                IModelTreeItem modelTreeItem = this.ModelItem as IModelTreeItem;
-                storageModelItem = modelTreeItem.ModelTreeManager.WrapAsModelItem(link.ParentFlowSwitch);
-            }
-            return storageModelItem;
-        }
-
-
-        //Save the shape location on the CFx object for serialization and viewstate maintenance.
-        void StoreShapeViewState(UIElement movedElement, Point newLocation)
-        {
-            ModelItem storageModelItem;
-            if (movedElement is StartSymbol)
-            {
-                storageModelItem = this.ModelItem;
-            }
-            else
-            {
-                ModelItem model = ((VirtualizedContainerService.VirtualizingContainer)movedElement).ModelItem;
-                storageModelItem = GetFlowElementMI(model);
-            }
-            StoreShapeViewState(storageModelItem, newLocation);
-        }
-
-        void StoreShapeViewState(ModelItem storageModelItem, Point newLocation)
-        {
-            if (this.ViewStateService.RetrieveViewState(storageModelItem, shapeLocation) != null)
-            {
-                this.ViewStateService.StoreViewStateWithUndo(storageModelItem, shapeLocation, newLocation);
-            }
-            else
-            {
-                this.ViewStateService.StoreViewState(storageModelItem, shapeLocation, newLocation);
-            }
-        }
-
-        void PerformInternalMove(UIElement movedElement, Point newPoint, Point? shapeAnchorPoint,
-            AutoConnectDirections autoConnectDirection, Connector connectorToSplit)
-        {
-            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.FCLinkMove))
-            {
-                RemoveAdorner(movedElement, typeof(ConnectionPointsAdorner));
-                Point shapeLocation;
-                Size size = FreeFormPanel.GetChildSize(movedElement);
-                if (autoConnectDirection != AutoConnectDirections.None)
-                {
-                    shapeLocation = this.CalculateDropLocationForAutoConnect(autoConnectDirection, size);
-                }
-                else if (shapeAnchorPoint.HasValue)
-                {
-                    shapeLocation = SnapVisualToGrid(movedElement, newPoint, shapeAnchorPoint.Value, true);
-                }
-                else
-                {
-                    Fx.Assert(newPoint.X.IsNoLessThan(0) && newPoint.Y.IsNoLessThan(0),
-                        "newPoint is negative");
-                    shapeLocation = newPoint;
-                }
-                if (connectorToSplit != null)
-                {
-                    shapeLocation = this.CalculateDropLocationForAutoSplit(newPoint, shapeLocation, connectorToSplit, size);
-                }
-                StoreShapeViewState(movedElement, shapeLocation);
-                RerouteAttachedConnectors(movedElement);
-                es.Complete();
-            }
-        }
-
-        void RerouteAttachedConnectors(UIElement movedElement)
-        {
-            foreach (Connector connector in GetAttachedConnectors(movedElement))
-            {
-                Reroute(connector, true);
-            }
-        }
-
-        void Reroute(Connector connector, bool withUndo)
-        {
-            ConnectionPoint source = FreeFormPanel.GetSourceConnectionPoint(connector);
-            ConnectionPoint destination = FreeFormPanel.GetDestinationConnectionPoint(connector);
-
-            //Nulling out the PointCollection so that it doesn't interfere in line routing.
-            connector.Points = new PointCollection();
-            PointCollection viewState = new PointCollection(ConnectorRouter.Route(this.panel, source, destination));
-            StoreConnectorViewState(FlowchartDesigner.GetLinkModelItem(connector), viewState, source, withUndo);
-        }
-
-
-
-        // Returns the last dropped item - used for auto-connect and auto-split where only one item is allowed
-        ModelItem DoFlowchartGridDrop(DragEventArgs e, AutoConnectDirections autoConnectDirection, Connector connectorToSplit)
-        {
-            ModelItem droppedModelItem = null;
-            ModelItem newFlowStepMI = null;
-            e.Effects = DragDropEffects.None;
-            IEnumerable<object> droppedObjects = DragDropHelper.GetDroppedObjects(this, e, Context);
-            //Marking the event as being handled. In whichever case we want to route the event, it will be unmarked explicitly.
-            e.Handled = true;
-            List<WorkflowViewElement> movedViewElements = new List<WorkflowViewElement>();
-            ShapeOffsetter shapeOffsetter = new ShapeOffsetter();
-            Dictionary<WorkflowViewElement, Point> relativeLocations = DragDropHelper.GetDraggedViewElementRelativeLocations(e);
-            ModelItem modelItemDroppedFromToolBox = null;
-            Dictionary<object, FlowNode> objToNewFlowNodeMap = null;
-            Dictionary<FlowNode, ModelItem> flowNodeModelItemMap = null;
-            Dictionary<FlowNode, FlowNode> oldNewFlowNodeMap = null;
-            this.PrepareForDrop(droppedObjects,
-                out objToNewFlowNodeMap,
-                out flowNodeModelItemMap,
-                out oldNewFlowNodeMap);
-            bool shouldStoreCurrentSizeViewState = true;
-            foreach (object droppedObject in droppedObjects)
-            {
-                if (droppedObject == null)
-                {
-                    continue;
-                }
-                droppedModelItem = droppedObject as ModelItem;
-
-                // archor point
-                Point anchorPoint = DragDropHelper.GetDragDropAnchorPoint(e);
-
-
-                ICompositeView srcContainer = droppedModelItem != null
-                    ? DragDropHelper.GetCompositeView(droppedModelItem.View as WorkflowViewElement) as ICompositeView
-                    : null;
-                bool keepRelativePosition = srcContainer is FlowchartDesigner;
-                // This is the case of dragging from toolbox
-                if (anchorPoint.X < 0 && anchorPoint.Y < 0)
-                {
-                    keepRelativePosition = false;
-                }
-
-                // This is the case of dragging from the designer surface
-                else if (droppedModelItem != null)
-                {
-                    WorkflowViewElement view = (WorkflowViewElement)droppedModelItem.View;
-                    anchorPoint.Offset(-relativeLocations[view].X, -relativeLocations[view].Y);
-                }
-
-
-                if (droppedModelItem != null && srcContainer != null && srcContainer.Equals(this))
-                {
-                    if (shouldStoreCurrentSizeViewState)
-                    {
-                        // Moving may change the size of flowchart; need this to undo the size change.
-                        this.StoreCurrentSizeViewStateWithUndo();
-                        shouldStoreCurrentSizeViewState = false;
-                    }
-                    //InternalMove
-                    PerformInternalMove(modelElement[droppedModelItem], e.GetPosition(this.panel), anchorPoint, autoConnectDirection, connectorToSplit);
-                }
-                else
-                {
-                    //External model Item drop.
-                    if (droppedModelItem != null)
-                    {
-                        if ((IsFlowStepAction(droppedModelItem)
-                            || IsFlowNode(droppedModelItem))
-                            && !IsParentOf(droppedModelItem, this.ModelItem))
-                        {
-                            if (shouldStoreCurrentSizeViewState)
-                            {
-                                // Drop may change the size of flowchart; need this to undo the size change.
-                                this.StoreCurrentSizeViewStateWithUndo();
-                                shouldStoreCurrentSizeViewState = false;
-                            }
-
-                            FlowNode flowElement = objToNewFlowNodeMap[droppedObject];
-                            ModelItem flowElementMI;
-                            if (flowNodeModelItemMap.TryGetValue(flowElement, out flowElementMI))
-                            {
-                                // FlowNode comes from some other flowchart. 
-                                this.ModelItem.Properties["Nodes"].Collection.Add(flowElementMI);
-                            }
-                            else
-                            {
-                                // FlowNode is a new created one, which means this is an Activity dragged
-                                // from somewhere else, outside of Flowchart.
-                                flowElementMI = this.ModelItem.Properties["Nodes"].Collection.Add(flowElement);
-                                flowNodeModelItemMap[flowElement] = flowElementMI;
-                            }
-                            newFlowStepMI = flowElementMI;
-                        }
-                        else
-                        {
-                            //We want to route the event in the case that the flowchart is dropped upon itself.
-                            if (droppedModelItem.Equals(this.ModelItem))
-                            {
-                                e.Handled = false;
-                            }
-                            //Don't add anything for what is neither a Activity nor a flowlink.
-                            continue;
-                        }
-
-                        if (droppedModelItem != null && droppedModelItem.View != null)
-                        {
-                            movedViewElements.Add((WorkflowViewElement)droppedModelItem.View);
-                        }
-
-                        // the external item may come from other panel (sequence) which is already given
-                        // a size by its previous layout panel.  That might give an inaccurate size to the
-                        // dropped object (i.e. Bug 198290).  Therefore, when the object is dropped externally
-                        // the FC should erases its previous hint size, forcing the FC to recompute an appropriate
-                        // size based on the workflowelementview size.
-                        VirtualizedContainerService.SetHintSize(droppedModelItem.GetCurrentValue(), null);
-                    }
-                    //Tool box drop.
-                    else
-                    {
-                        if (typeof(Activity).IsAssignableFrom(droppedObject.GetType()))
-                        {
-                            FlowStep flowStep = new FlowStep();
-                            flowStep.Action = (Activity)droppedObject;
-                            if (shouldStoreCurrentSizeViewState)
-                            {
-                                // Drop may change the size of flowchart; need this to undo the size change.
-                                this.StoreCurrentSizeViewStateWithUndo();
-                                shouldStoreCurrentSizeViewState = false;
-                            }
-
-                            newFlowStepMI = this.ModelItem.Properties["Nodes"].Collection.Add(flowStep);
-                            droppedModelItem = newFlowStepMI.Properties["Action"].Value;
-                        }
-                        else if (typeof(FlowNode).IsAssignableFrom(droppedObject.GetType()))
-                        {
-                            if (shouldStoreCurrentSizeViewState)
-                            {
-                                // Drop may change the size of flowchart; need this to undo the size change.
-                                this.StoreCurrentSizeViewStateWithUndo();
-                                shouldStoreCurrentSizeViewState = false;
-                            }
-                            droppedModelItem = this.ModelItem.Properties["Nodes"].Collection.Add(droppedObject);
-                            newFlowStepMI = droppedModelItem;
-                        }
-
-                        // Now,  toolbox drop doesn't support multiple drop
-                        // If multi-drop from tool box, use an array here.
-                        modelItemDroppedFromToolBox = droppedModelItem;
-                        keepRelativePosition = false;
-                    } // tool box 
-
-                    WorkflowViewElement view = droppedModelItem.View as WorkflowViewElement;
-                    if (view == null || view.ExpandState)
-                    {
-                        //Creating a new view to get the size of collapsed view.
-                        view = this.ViewService.GetView(droppedModelItem) as WorkflowViewElement;
-                        ViewUtilities.MeasureView(view, true);
-                    }
-
-                    if (view != null)
-                    {
-                        PostDropUpdateViewState(view,
-                            newFlowStepMI,
-                            autoConnectDirection,
-                            connectorToSplit,
-                            e.GetPosition(this.panel),
-                            anchorPoint,
-                            keepRelativePosition,
-                            shapeOffsetter);
-                    }
-                } // external move
-            } // foreach
-
-            // Remap references.
-            // The re-map here is different from the remaping in copy/paste.
-            // In copy paste, all the values are copied. but here, some value are
-            // set by Properties["key"].SetValue().
-            // Don't move this into PrepareMove. Some value setting is added to 
-            // Change. So the operation here will decide the order of Change.Apply().
-            // PropertyChange in some case, must happen after ModelItem is moved to 
-            // new places.
-            foreach (FlowNode flowNode in oldNewFlowNodeMap.Keys)
-            {
-                UpdateCloneReferenceByModelItem(flowNode, flowNodeModelItemMap, oldNewFlowNodeMap);
-            }
-
-            DragDropHelper.SetDragDropMovedViewElements(e, movedViewElements);
-            
-            //Backward compatibility for 4.0
-            if (droppedObjects.Count() == 1 && movedViewElements.Count == 1)
-            {
-                #pragma warning disable 618
-                DragDropHelper.SetDragDropCompletedEffects(e, DragDropEffects.Move);
-                #pragma warning restore 618
-            }
-
-            if (modelItemDroppedFromToolBox != null)
-            {
-                // if it is dropped from toolbox, select
-                this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (Action)(() =>
-                {
-                    UIElement view = (UIElement)(modelItemDroppedFromToolBox.View);
-                    if (view != null)
-                    {
-                        Keyboard.Focus(view);
-                        Selection.SelectOnly(this.Context, modelItemDroppedFromToolBox);
-                    }
-                }));
-            }
-
-            if (droppedModelItem != null)
-            {
-                if (IsFlowNode(droppedModelItem))
-                {
-                    return droppedModelItem;
-                }
-                else if (IsFlowStepAction(droppedModelItem))
-                {
-                    if (newFlowStepMI != null)
-                    {
-                        return newFlowStepMI;
-                    }
-                    else
-                    {
-                        return this.GetParentFlowStepModelItem(droppedModelItem);
-                    }
-                }
-                return null;
-            }
-
-            return null;
-        }
-
-        Point CalculateDropLocationForAutoConnect(AutoConnectDirections autoConnectDirection, Size droppedSize)
-        {
-            return AutoConnectHelper.CalculateDropLocation(droppedSize, this.panel.CurrentAutoConnectTarget, autoConnectDirection, this.shapeLocations);
-        }
-
-        Point CalculateDropLocationForAutoSplit(Point mousePosition, Point originalDropLocation, Connector connector, Size droppedSize)
-        {
-            return AutoSplitHelper.CalculateDropLocation(mousePosition, originalDropLocation, connector, droppedSize, this.shapeLocations);
-        }
-
-        private void OnFlowchartGridDrop(object sender, DragEventArgs e)
-        {
-            ModelItemHelper.TryCreateImmediateEditingScopeAndExecute(this.ModelItem.GetEditingContext(), System.Activities.Presentation.SR.CollectionAddEditingScopeDescription, (es) =>
-                {
-                    this.DoFlowchartGridDrop(e, AutoConnectDirections.None, null);
-                    if (es != null)
-                    {
-                        es.Complete();
-                    }
-                });
-        }
-
-        // Prepare some maps for drag/drop in Flowchart
-        // objToNewFlowNodeMap : 
-        //    <DroppedObject, FlowNodeToBeDropInDestFlowchart>
-        // flowNodeNewModelItemMap : 
-        //    <OldFlowNode, NewModelItemInDestFlowchart>
-        //    For FlowSwitch/FlowDecision: NewModelItemINDestFlowchart is the source ModelItem.
-        //    For FlowStep, leeve NewModeItemInDestFlowchart Null, this value could not be decided here.
-        // flowNodeMovingMap: 
-        //    <OldFlowNode, NewFlowNode>
-        //    If a droppedObject is not a flownode, say it is from tool box, this value is empty.
-        private void PrepareForDrop(IEnumerable<object> objects,
-                out Dictionary<object, FlowNode> objToNewFlowNodeMap,
-                out Dictionary<FlowNode, ModelItem> flowNodeNewModelItemMap,
-                out Dictionary<FlowNode, FlowNode> oldNewFlowNodeMap)
-        {
-            Fx.Assert(objects != null, "dropping null objects");
-            objToNewFlowNodeMap = new Dictionary<object, FlowNode>();
-            oldNewFlowNodeMap = new Dictionary<FlowNode, FlowNode>();
-            flowNodeNewModelItemMap = new Dictionary<FlowNode, ModelItem>();
-            // 1) Get flow node and Composite view
-            foreach (object obj in objects)
-            {
-                if (obj == null)
-                {
-                    Fx.Assert("obj == null");
-                    continue;
-                }
-
-                objToNewFlowNodeMap[obj] = null;
-                ModelItem modelItem = obj as ModelItem;
-                if (modelItem == null)
-                {
-                    // if not a model item, return
-                    continue;
-                }
-
-                ICompositeView compositeView = DragDropHelper.GetCompositeView(modelItem.View as WorkflowViewElement) as ICompositeView;
-                if (compositeView == null)
-                {
-                    continue;
-                }
-
-                // This means a internal move, no extra thing needed.
-                if (compositeView.Equals(this))
-                {
-                    // internal move.
-                    continue;
-                }
-
-                if (!IsFlowStepAction(modelItem)
-                    && !IsFlowNode(modelItem))
-                {
-
-                    Fx.Assert(modelItem.ItemType.Equals(typeof(StartNode)),
-                        "should not happen. Not a Activity, FlowNode or StartSymbol");
-                    // don't do anything if the dropped object is either an Activity or
-                    // Flownode.
-                    continue;
-                }
-
-                FlowNode flowNode = null;
-                FlowchartDesigner fcDesigner = compositeView as FlowchartDesigner;
-                if (fcDesigner != null)
-                {
-                    // If the source view is a FlowchartDesigner, we need to do some to prepare
-                    // the remap.
-                    ModelItem flowElementMI = fcDesigner.GetFlowElementMI(modelItem);
-                    Fx.Assert(flowElementMI != null, "flowElementMI != null");
-                    FlowNode oldFlowNode = flowElementMI.GetCurrentValue() as FlowNode;
-                    Fx.Assert(oldFlowNode != null, "oldFlowNode != null");
-                    flowNode = oldFlowNode;
-                    flowNodeNewModelItemMap[oldFlowNode] = flowElementMI;
-                    oldNewFlowNodeMap[oldFlowNode] = flowNode;
-                }
-                else
-                {
-                    // The object is moved from somewhere else, say Sequence. 
-                    // We create a FlowStep for it.
-                    FlowStep flowStep = new FlowStep();
-                    flowStep.Action = (Activity)modelItem.GetCurrentValue();
-                    flowNode = flowStep;
-                }
-                objToNewFlowNodeMap[obj] = flowNode;
-            }
-        }
-
-        // Move the object to correct position after drop
-        private void PostDropUpdateViewState(WorkflowViewElement view,
-            ModelItem flownodeMI,
-            AutoConnectDirections autoConnectDirection,
-            Connector connectorToSplit,
-            Point newPoint,
-            Point anchorPoint,
-            bool keepRelativePosition,
-            ShapeOffsetter shapeOffsetter)
-        {
-            Fx.Assert((view != null && flownodeMI != null),
-            "movedItem != null && flownodeMI != null");
-            Point shapeLocationPtr;
-            if (autoConnectDirection != AutoConnectDirections.None)
-            {
-                shapeLocationPtr = this.CalculateDropLocationForAutoConnect(autoConnectDirection, view.DesiredSize);
-            }
-            else
-            {
-                shapeLocationPtr = SnapVisualToGrid(view, newPoint, anchorPoint, keepRelativePosition);
-                if (!keepRelativePosition)
-                {
-                    // To avoid overlaps
-                    shapeLocationPtr = shapeOffsetter.OffsetShapeLocation(shapeLocationPtr);
-                }
-            }
-
-            if (connectorToSplit != null)
-            {
-                shapeLocationPtr = this.CalculateDropLocationForAutoSplit(newPoint, shapeLocationPtr, connectorToSplit, view.DesiredSize);
-            }
-
-            // 
-            if (keepRelativePosition)
-            {
-                this.OffsetDroppedItemToNewPosition(flownodeMI, shapeLocationPtr);
-            }
-            else
-            {
-                this.StoreShapeViewState(flownodeMI, shapeLocationPtr);
-            }
-        }
-
-        private void OffsetDroppedItemToNewPosition(ModelItem flownodeMI, Point newLocationPtr)
-        {
-            object locationOfShape = this.ViewStateService.RetrieveViewState(flownodeMI, shapeLocation);
-            if (locationOfShape == null)
-            {
-                return;
-            }
-            Point oldLocationPoint = (Point)locationOfShape;
-            Vector offset = newLocationPtr - oldLocationPoint;
-            this.OffSetViewState(offset, flownodeMI, true);
-        }
-
-        private void OnFlowchartGridDragEnter(object sender, DragEventArgs e)
-        {
-            OnFlowchartGridDrag(sender, e);
-        }
-
-        private void OnFlowchartGridDragOver(object sender, DragEventArgs e)
-        {
-            OnFlowchartGridDrag(sender, e);
-        }
-
-        private bool IsDropAllowed(DragEventArgs e)
-        {
-            return DragDropHelper.AllowDrop(e.Data, this.Context, typeof(Activity), typeof(FlowNode), typeof(StartNode));
-        }
-
-        private void OnFlowchartGridDrag(object sender, DragEventArgs e)
-        {
-            if (!e.Handled)
-            {
-                if (!this.IsDropAllowed(e))
-                {
-                    e.Effects = DragDropEffects.None;
-                }
-                e.Handled = true;
-            }
-        }
-
-        static bool IsLinkModelItemSelectable(ModelItem linkModelItem)
-        {
-            return linkModelItem != null &&
-                // link from FlowDecision
-                   !typeof(FlowDecision).IsAssignableFrom(linkModelItem.ItemType) &&
-                // link from StartNode
-                   !typeof(Flowchart).IsAssignableFrom(linkModelItem.ItemType);
-        }
-
-        private void OnFlowchartGridKeyDown(object sender, KeyEventArgs e)
-        {
-            if (srcConnectionPoint != null)
-            {
-                // Ignore KeyBoard input when creating connector.
-                e.Handled = true;
-                return;
-            }
-
-            Selection currentSelection = this.Context.Items.GetValue<Selection>();
-            if (e.Key == Key.Delete && this.selectedConnector != null && currentSelection.SelectionCount <= 1)
-            {
-                // process the delete if only the connector is selected
-                ModelItem primarySelection = currentSelection.PrimarySelection;
-                //Delete connector
-                ModelItem linkModelItem = FlowchartDesigner.GetLinkModelItem(this.selectedConnector);
-                if ((primarySelection == null && !IsLinkModelItemSelectable(linkModelItem)) ||
-                    object.Equals(primarySelection, linkModelItem))
-                {
-                    DeleteLink(this.selectedConnector);
-                    this.selectedConnector = null;
-                    e.Handled = true;
-                }
-            }
-            else if ((new List<Key> { Key.Left, Key.Right, Key.Up, Key.Down }).Contains(e.Key)
-                && currentSelection.SelectedObjects.All<ModelItem>((p) => { return this.modelElement.ContainsKey(p); }))
-            {
-                KeyboardMove(e.Key);
-                e.Handled = true;
-            }
-        }
-
-        private void FlowchartDesignerKeyDown(object sender, KeyEventArgs e)
-        {
-            // Ignore KeyBoard input when in resizing mode.
-            e.Handled = IsResizing;
-        }
-
-        private void FlowchartDesignerPreviewKeyDown(object sender, KeyEventArgs e)
-        {
-            // Enter cannot be captured in KeyDown, so handle it in PreviewKeyDown event.
-            e.Handled = IsResizing && e.Key == Key.Enter;
-        }
-
-        void KeyboardMove(Key key)
-        {
-            Vector moveDir = FreeFormPanel.CalculateMovement(key, this.IsRightToLeft);
-
-            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.ItemMove))
-            {
-                bool shouldStoreCurrentSizeViewState = true;
-                foreach (ModelItem selectedModelItem in this.Context.Items.GetValue<Selection>().SelectedObjects)
-                {
-                    UIElement shapeToMove = this.modelElement[selectedModelItem];
-                    Point currentLocation = FreeFormPanel.GetLocation(shapeToMove);
-                    Point newLocation = Point.Add(currentLocation, moveDir);
-
-                    // Make sure the newLocation is positive.
-                    newLocation.X = FreeFormPanel.ZeroIfNegative(newLocation.X);
-                    newLocation.Y = FreeFormPanel.ZeroIfNegative(newLocation.Y);
-
-                    if (newLocation == currentLocation)
-                    {
-                        continue;
-                    }
-
-                    if (shouldStoreCurrentSizeViewState)
-                    {
-                        // Moving may change the size of flowchart; need this to undo the size change.
-                        this.StoreCurrentSizeViewStateWithUndo();
-                        shouldStoreCurrentSizeViewState = false;
-                    }
-                    PerformInternalMove(shapeToMove, newLocation, null, AutoConnectDirections.None, null);
-                }
-                es.Complete();
-            }
-        }
-
-        private void OnFlowchartGridPreviewMouseDown(object sender, MouseButtonEventArgs e)
-        {
-            this.selectedConnector = null;
-        }
-
-        private void OnFlowchartGridPreviewMouseUp(object sender, MouseButtonEventArgs e)
-        {
-            if (this.srcConnectionPoint != null)
-            {
-                UIElement destElement = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(e.OriginalSource as DependencyObject);
-                if (destElement != null && this.panel.Children.Contains(destElement))
-                {
-                    string errorMessage = string.Empty;
-                    Point mouseUpLocation = e.GetPosition(sender as IInputElement);
-
-                    if (!CreateLinkGesture(this.srcConnectionPoint, destElement, mouseUpLocation, out errorMessage, false, null) && !errorMessage.Equals(string.Empty))
-                    {
-                        ErrorReporting.ShowErrorMessage(errorMessage);
-                    }
-                    this.srcConnectionPoint = null;
-                    RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-                    RemoveAdorner(destElement, typeof(FlowchartConnectionPointsAdorner));
-                    // Simulate a MouseEnter to show connection points
-                    ChildElement_MouseEnter(destElement, null);
-                }
-            }
-        }
-
-        enum ConnectorType
-        {
-            Default = 0, ErrorConnector = 1
-        };
-
-        void OnConnectNodesCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            e.CanExecute = false;
-            Selection selection = this.Context.Items.GetValue<Selection>();
-            if (selection.SelectionCount > 1)
-            {
-                e.CanExecute = true;
-                foreach (ModelItem item in selection.SelectedObjects)
-                {
-                    if (!this.modelElement.ContainsKey(item))
-                    {
-                        e.CanExecute = false;
-                        break;
-                    }
-                }
-            }
-            e.Handled = true;
-        }
-
-        void OnConnectNodesCommandExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.FCCreateLink))
-            {
-                List<ModelItem> selectedFlowchartItems = new List<ModelItem>(this.Context.Items.GetValue<Selection>().SelectedObjects);
-                selectedFlowchartItems.Reverse();
-                CreateLinks(selectedFlowchartItems);
-                es.Complete();
-            }
-        }
-
-        void OnShowAllConditionsCommandExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            this.ShowAllConditions = false;
-            this.ShowAllConditions = true;
-        }
-
-        void OnShowAllConditionsCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            e.CanExecute = true;
-            e.Handled = true;
-        }
-
-        void OnHideAllConditionsCommandExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            this.ShowAllConditions = true;
-            this.ShowAllConditions = false;
-        }
-
-        void OnHideAllConditionsCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            e.CanExecute = true;
-            e.Handled = true;
-        }
-
-        internal static void DropActivityBelow(ViewStateService viewStateService, ModelItem modelItem, Activity activity, double interval)
-        {
-            // Extracting information
-            ModelItem flowStep = modelItem.Parent;
-            ModelItemCollection nodes = flowStep.Parent as ModelItemCollection;
-            ModelItem flowchart = nodes.Parent;
-            FlowchartDesigner flowchartDesigner = ((FlowchartDesigner)flowchart.View);
-
-            // Creating FlowStep ModelItem
-            ModelTreeManager modelTreeManager = (modelItem as IModelTreeItem).ModelTreeManager;
-            FlowStep step = new FlowStep() { Action = activity };
-            ModelItem activityModelItem = modelTreeManager.WrapAsModelItem(step);
-
-            // Compute the 'correct' location
-            Point point = (Point)viewStateService.RetrieveViewState(flowStep, shapeLocation);
-            point.Y += (((WorkflowViewElement)modelItem.View).ActualHeight + interval);
-            viewStateService.StoreViewState(activityModelItem, shapeLocation, point);
-            flowchartDesigner.UpdateViewStateToAvoidOverlapOnPaste(new List<ModelItem> { activityModelItem });
-
-            // Add it to the model tree
-            nodes.Add(activityModelItem);
-        }
-
-        void OnAdornerDecoratorLoaded(object sender, RoutedEventArgs e)
-        {
-            this.adornerLayer = ((AdornerDecorator)sender).AdornerLayer;
-            // This might not be the best event to handle, ideally we would like to have the event when the list of adorner changes.
-            this.adornerLayer.LayoutUpdated += new EventHandler(OnAdornerLayerLayoutUpdated);
-        }
-
-        void OnAdornerLayerLayoutUpdated(object sender, EventArgs e)
-        {
-            // Extract the set of all adorners
-            List<Adorner> adornerList = new List<Adorner>();
-            foreach (object logicalChild in LogicalTreeHelper.GetChildren(adornerLayer))
-            {
-                Fx.Assert(logicalChild is Adorner, "What else could an adornerLayer hold?");
-                adornerList.Add((Adorner)logicalChild);
-            }
-            Adorner[] adorners = adornerList.ToArray();
-            if (FlowchartDesigner.Pack(adorners, (adorner => adorner is FlowchartExpressionAdorner)))
-            {
-                foreach (Adorner adorner in adorners)
-                {
-                    adornerLayer.Remove(adorner);
-                }
-                foreach (Adorner adorner in adorners)
-                {
-                    adornerLayer.Add(adorner);
-                }
-            }
-        }
-
-        // do not proprogate up to FlowchartDesigner, because designer will set selection to itself on GotFocus event.
-        private void OnAdornerLayerGotFocus(object sender, RoutedEventArgs e)
-        {
-            e.Handled = true;
-        }
-
-        // Within the connection points with least number of connectors, get the one closest to the midpoint.
-        private static ConnectionPoint GetConnectionPointForAutoConnect(List<ConnectionPoint> availableConnectionPoints)
-        {
-            int minConnectorCount = availableConnectionPoints.Min<ConnectionPoint>((p) =>
-                {
-                    return p.AttachedConnectors.Count;
-                });
-
-            List<ConnectionPoint> connectionPoints = new List<ConnectionPoint>(availableConnectionPoints.Where<ConnectionPoint>((p) =>
-                {
-                    return p.AttachedConnectors.Count == minConnectorCount;
-                }));
-
-            ConnectionPoint midPoint = availableConnectionPoints[availableConnectionPoints.Count / 2];
-            if (connectionPoints.Contains(midPoint))
-            {
-                return midPoint;
-            }
-            double dist;
-            return ConnectionPoint.GetClosestConnectionPoint(connectionPoints, midPoint.Location, out dist);
-        }
-
-        private ConnectionPoint GetSourceConnectionPointForAutoConnect(UIElement designer, EdgeLocation edgeLocation)
-        {
-            List<ConnectionPoint> connectionPoints = FlowchartDesigner.GetAllConnectionPoints(designer);
-            connectionPoints = new List<ConnectionPoint>(connectionPoints.Where<ConnectionPoint>((p) =>
-            {
-                return p != null && p.PointType != ConnectionPointKind.Incoming && p.EdgeLocation == edgeLocation;
-            }));
-            Fx.Assert(connectionPoints.Count > 0, "There should be at least one src connection point available");
-            return FlowchartDesigner.GetConnectionPointForAutoConnect(connectionPoints);
-        }
-
-        internal static ConnectionPoint GetDestinationConnectionPointForAutoConnect(UIElement dest, ConnectionPoint srcConnPoint)
-        {
-            EdgeLocation destEdgeLocation = EdgeLocation.Top;
-            if (!((dest is VirtualizedContainerService.VirtualizingContainer) && ((VirtualizedContainerService.VirtualizingContainer)dest).ModelItem.ItemType == typeof(FlowDecision)))
-            {
-                switch (srcConnPoint.EdgeLocation)
-                {
-                    case EdgeLocation.Top:
-                        destEdgeLocation = EdgeLocation.Bottom;
-                        break;
-                    case EdgeLocation.Bottom:
-                        destEdgeLocation = EdgeLocation.Top;
-                        break;
-                    case EdgeLocation.Left:
-                        destEdgeLocation = EdgeLocation.Right;
-                        break;
-                    case EdgeLocation.Right:
-                        destEdgeLocation = EdgeLocation.Left;
-                        break;
-                }
-            }
-            List<ConnectionPoint> destConnectionPoints = new List<ConnectionPoint>(FlowchartDesigner.GetConnectionPoints(dest).Where<ConnectionPoint>((p) =>
-            {
-                return p.PointType != ConnectionPointKind.Outgoing && p.EdgeLocation == destEdgeLocation;
-            }));
-            Fx.Assert(destConnectionPoints.Count > 0, "There should be at least one dest connection point available");
-            return FlowchartDesigner.GetConnectionPointForAutoConnect(destConnectionPoints);
-        }
-
-        private ModelItem GetSourceModelItemForAutoConnect(UIElement sourceElement)
-        {
-            ModelItem sourceModelItem = null;
-            if (sourceElement is WorkflowViewElement)
-            {
-                sourceModelItem = ((WorkflowViewElement)sourceElement).ModelItem;
-            }
-            else if (sourceElement is VirtualizedContainerService.VirtualizingContainer)
-            {
-                sourceModelItem = ((VirtualizedContainerService.VirtualizingContainer)sourceElement).ModelItem;
-            }
-            if (sourceModelItem != null && IsFlowStepAction(sourceModelItem))
-            {
-                sourceModelItem = this.GetParentFlowStepModelItem(sourceModelItem);
-                Fx.Assert(typeof(FlowStep).IsAssignableFrom(sourceModelItem.ItemType), "The parent should be FlowNode");
-            }
-            return sourceModelItem;
-        }
-
-        private ModelItem GetParentFlowStepModelItem(ModelItem activityModelItem)
-        {
-            foreach (ModelItem flowNodeModelItem in this.ModelItem.Properties["Nodes"].Collection)
-            {
-                if (typeof(FlowStep).IsAssignableFrom(flowNodeModelItem.ItemType))
-                {
-                    if (flowNodeModelItem.Properties["Action"].Value == activityModelItem)
-                    {
-                        return flowNodeModelItem;
-                    }
-                }
-            }
-            return null;
-        }
-
-        public void DoAutoConnect(DragEventArgs e, UIElement targetElement, AutoConnectDirections direction)
-        {
-            UIElement sourceElement = targetElement;
-            bool immediatelyCommit = ModelItemHelper.CanCreateImmediateEditingScope(this.ModelItem);
-
-            using (EditingScope scope = (EditingScope)this.ModelItem.BeginEdit(SR.AutoConnect, immediatelyCommit))
-            {
-                ModelItem droppedModelItem = this.DoFlowchartGridDrop(e, direction, null);
-                bool autoConnected = false;
-                if (droppedModelItem != null)
-                {
-                    ModelItem sourceModelItem = this.GetSourceModelItemForAutoConnect(sourceElement);
-                    if (sourceModelItem != null)
-                    {
-                        if (sourceModelItem.ItemType == typeof(FlowStep))
-                        {
-                            sourceModelItem.Properties["Next"].SetValue(droppedModelItem);
-                            autoConnected = true;
-                        }
-                        else if (sourceModelItem.ItemType == typeof(FlowDecision))
-                        {
-                            if (direction == AutoConnectDirections.Left)
-                            {
-                                sourceModelItem.Properties["True"].SetValue(droppedModelItem);
-                                autoConnected = true;
-                            }
-                            else if (direction == AutoConnectDirections.Right)
-                            {
-                                sourceModelItem.Properties["False"].SetValue(droppedModelItem);
-                                autoConnected = true;
-                            }
-                        }
-                        else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(sourceModelItem.ItemType))
-                        {
-                            string message = string.Empty;
-                            autoConnected = this.CreateFlowSwitchLink(this.srcConnectionPointForAutoConnect, sourceModelItem, droppedModelItem, null, null, ref message);
-                        }
-                        else if (sourceModelItem.ItemType == typeof(StartNode))
-                        {
-                            this.ModelItem.Properties["StartNode"].SetValue(droppedModelItem);
-                            autoConnected = true;
-                        }
-                    }
-                }
-                if (autoConnected)
-                {
-                    this.srcConnectionPointForAutoConnect = this.GetSourceConnectionPointForAutoConnect(sourceElement, AutoConnectHelper.AutoConnectDirection2EdgeLocation(direction));
-                    scope.Complete();
-                }
-                else
-                {
-                    scope.Revert();
-                }
-            }
-        }
-
-        public AutoConnectDirections GetDirectionsAllowed(DragEventArgs e, UIElement targetElement)
-        {
-            List<Type> draggedTypes = DragDropHelper.GetDraggedTypes(e.Data);
-            if (draggedTypes.Count != 1)
-            {
-                return AutoConnectDirections.None;
-            }
-            Type draggedType = draggedTypes[0];
-            if (!typeof(Activity).IsAssignableFrom(draggedType) &&
-                  !typeof(FlowNode).IsAssignableFrom(draggedType) &&
-                  !IsActivityTemplateFactory(draggedType))
-            {
-                return AutoConnectDirections.None;
-            }
-            ModelItem sourceModelItem = this.GetSourceModelItemForAutoConnect(targetElement);
-            if (sourceModelItem != null)
-            {
-                if (sourceModelItem.ItemType == typeof(FlowStep))
-                {
-                    if (sourceModelItem.Properties["Next"].Value != null)
-                    {
-                        return AutoConnectDirections.None;
-                    }
-                }
-                else if (sourceModelItem.ItemType == typeof(FlowDecision))
-                {
-                    AutoConnectDirections directions = AutoConnectDirections.None;
-                    if (sourceModelItem.Properties["True"].Value == null)
-                    {
-                        directions |= AutoConnectDirections.Left;
-                    }
-                    if (sourceModelItem.Properties["False"].Value == null)
-                    {
-                        directions |= AutoConnectDirections.Right;
-                    }
-                    return directions;
-                }
-                else if (sourceModelItem.ItemType == typeof(StartNode))
-                {
-                    if (this.ModelItem.Properties["StartNode"].Value != null)
-                    {
-                        return AutoConnectDirections.None;
-                    }
-                }
-            }
-            return AutoConnectDirections.Top | AutoConnectDirections.Bottom | AutoConnectDirections.Left | AutoConnectDirections.Right;
-        }
-
-        public bool CanAutoSplit(DragEventArgs e)
-        {
-            if (!this.IsDropAllowed(e))
-            {
-                return false;
-            }
-            ModelItem draggedModelItem = e.Data.GetData(DragDropHelper.ModelItemDataFormat) as ModelItem;
-
-            // The start node
-            if (draggedModelItem is FakeModelItemImpl)
-            {
-                return false;
-            }
-
-            if (draggedModelItem != null && this.modelElement.ContainsKey(draggedModelItem))
-            {
-                if (this.GetAttachedConnectors(this.modelElement[draggedModelItem]).Count > 0)
-                {
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        internal static int GetConnectionPointIndex(UIElement element, ConnectionPoint pnt)
-        {
-            List<ConnectionPoint> list = FlowchartDesigner.GetAllConnectionPoints(element);
-            return list.IndexOf(pnt);
-        }
-
-        internal static ConnectionPoint GetConnectionPointFromIndex(UIElement element, int index)
-        {
-            List<ConnectionPoint> list = FlowchartDesigner.GetAllConnectionPoints(element);
-            if (index >= 0 && index < list.Count)
-            {
-                return list[index];
-            }
-            return null;
-        }
-
-        internal UIElement GetView(ModelItem item)
-        {
-            if (item == this.ModelItem)
-            {
-                return this.StartSymbol;
-            }
-            return this.modelElement[item];
-        }
-
-        public void DoAutoSplit(DragEventArgs e, Connector connector)
-        {
-            bool immediatelyCommit = ModelItemHelper.CanCreateImmediateEditingScope(this.ModelItem);
-
-            using (EditingScope scope = (EditingScope)this.ModelItem.BeginEdit(SR.AutoSplit, immediatelyCommit))
-            {
-                ModelItem droppedModelItem = this.DoFlowchartGridDrop(e, AutoConnectDirections.None, connector);
-                bool autoSplit = false;
-                ModelItem sourceModelItem = null;
-                ModelItem destinationModelItem = null;
-                if (droppedModelItem != null)
-                {
-                    this.StoreConnectorViewState(connector, true);
-                    IFlowSwitchLink flowSwitchLink = this.DeleteLink(connector, true);
-
-                    bool linkCreated = true;
-                    string message = string.Empty;
-                    UIElement srcDesigner = FreeFormPanel.GetSourceConnectionPoint(connector).ParentDesigner;
-                    UIElement destDesigner = FreeFormPanel.GetDestinationConnectionPoint(connector).ParentDesigner;
-                    if (srcDesigner is StartSymbol)
-                    {
-                        sourceModelItem = this.ModelItem;
-                        this.ModelItem.Properties["StartNode"].SetValue(droppedModelItem);
-                    }
-                    else if (srcDesigner is VirtualizedContainerService.VirtualizingContainer)
-                    {
-                        sourceModelItem = ((VirtualizedContainerService.VirtualizingContainer)srcDesigner).ModelItem;
-                        ModelItem srcFlowNodeModelItem = sourceModelItem;
-                        if (!IsFlowNode(srcFlowNodeModelItem))
-                        {
-                            srcFlowNodeModelItem = this.GetParentFlowStepModelItem(srcFlowNodeModelItem);
-                        }
-                        Fx.Assert(IsFlowNode(srcFlowNodeModelItem), "srcFlowNodeModelItem should be a FlowNode");
-
-                        if (typeof(FlowStep) == srcFlowNodeModelItem.ItemType)
-                        {
-                            srcFlowNodeModelItem.Properties["Next"].SetValue(droppedModelItem);
-                        }
-                        else if (typeof(FlowDecision) == srcFlowNodeModelItem.ItemType && FreeFormPanel.GetSourceConnectionPoint(connector).Equals(GetTrueConnectionPoint(srcDesigner)))
-                        {
-                            srcFlowNodeModelItem.Properties["True"].SetValue(droppedModelItem);
-                        }
-                        else if (typeof(FlowDecision) == srcFlowNodeModelItem.ItemType && FreeFormPanel.GetSourceConnectionPoint(connector).Equals(GetFalseConnectionPoint(srcDesigner)))
-                        {
-                            srcFlowNodeModelItem.Properties["False"].SetValue(droppedModelItem);
-                        }
-                        else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(srcFlowNodeModelItem.ItemType))
-                        {
-                            linkCreated = CreateFlowSwitchLink(FreeFormPanel.GetSourceConnectionPoint(connector), srcFlowNodeModelItem, droppedModelItem, flowSwitchLink, null, ref message);
-                        }
-                    }
-
-                    if (linkCreated && string.IsNullOrEmpty(message))
-                    {
-                        destinationModelItem = ((VirtualizedContainerService.VirtualizingContainer)destDesigner).ModelItem;
-                        ModelItem destFlowNodeModelItem = destinationModelItem;
-                        if (!IsFlowNode(destFlowNodeModelItem))
-                        {
-                            destFlowNodeModelItem = this.GetParentFlowStepModelItem(destFlowNodeModelItem);
-                        }
-
-                        Fx.Assert(IsFlowNode(destFlowNodeModelItem), "destFlowNodeModelItem should be a FlowNode");
-
-                        if (droppedModelItem.ItemType == typeof(FlowStep))
-                        {
-                            droppedModelItem.Properties["Next"].SetValue(destFlowNodeModelItem);
-                            autoSplit = true;
-                        }
-                        else if (GenericFlowSwitchHelper.IsGenericFlowSwitch(droppedModelItem.ItemType))
-                        {
-                            droppedModelItem.Properties["Default"].SetValue(destFlowNodeModelItem);
-                            autoSplit = true;
-                        }
-                        else if (droppedModelItem.ItemType == typeof(FlowDecision))
-                        {
-                            droppedModelItem.Properties["True"].SetValue(destFlowNodeModelItem);
-                            autoSplit = true;
-                        }
-                    }
-                }
-
-                if (autoSplit)
-                {
-                    Fx.Assert(sourceModelItem != null, "sourceModelItem != null");
-                    Fx.Assert(destinationModelItem != null, "destinationModelItem != null");
-
-                    int srcIndex = GetConnectionPointIndex(this.GetView(sourceModelItem), FreeFormPanel.GetSourceConnectionPoint(connector));
-                    int desIndex = GetConnectionPointIndex(this.GetView(destinationModelItem), FreeFormPanel.GetDestinationConnectionPoint(connector));
-
-                    EdgeLocation entryEdgeForAutoSplit;
-                    EdgeLocation exitEdgeForAutoSplit;
-                    AutoSplitHelper.CalculateEntryExitEdges(e.GetPosition(this.panel),
-                        connector, out entryEdgeForAutoSplit, out exitEdgeForAutoSplit);
-
-                    FlowchartDesigner.SetAutoSplitDataWithUndo(
-                        this.ModelItem, sourceModelItem, destinationModelItem, srcIndex, desIndex, entryEdgeForAutoSplit, exitEdgeForAutoSplit);
-
-                    scope.Complete();
-                }
-                else
-                {
-                    scope.Revert();
-                }
-            }
-        }
-
-        private ConnectionPoint GetEmptyEdgeMidConnectionPointNotOfType(UIElement designer, EdgeLocation edgeLocation, ConnectionPointKind invalidType)
-        {
-            List<ConnectionPoint> connectionPoints = FlowchartDesigner.GetAllConnectionPoints(designer);
-            connectionPoints = new List<ConnectionPoint>(connectionPoints.Where<ConnectionPoint>((p) =>
-            {
-                return p != null && p.PointType != invalidType && p.AttachedConnectors.Count == 0 && p.EdgeLocation == edgeLocation;
-            }));
-
-            if (connectionPoints.Count > 0)
-            {
-                return connectionPoints[connectionPoints.Count / 2];
-            }
-
-            return null;
-        }
-
-        private ConnectionPoint GetDestinationConnectionPointForAutoSplit(ConnectionPoint srcConnPoint, UIElement destDesigner)
-        {
-            this.MeasureView(destDesigner);
-            ConnectionPoint point = this.GetEmptyEdgeMidConnectionPointNotOfType(destDesigner, this.entryEdgeForAutoSplit, ConnectionPointKind.Outgoing);
-            if (point == null)
-            {
-                point = this.FindClosestConnectionPointNotOfType(srcConnPoint, new List<ConnectionPoint>(FlowchartDesigner.GetConnectionPoints(destDesigner).Where<ConnectionPoint>(p =>
-                {
-                    return p.AttachedConnectors.Count == 0;
-                })), ConnectionPointKind.Outgoing);
-            }
-
-            return point;
-        }
-
-        private ConnectionPoint GetSourceConnectionPointForAutoSplit(ConnectionPoint destConnPoint, UIElement srcDesigner)
-        {
-            this.MeasureView(srcDesigner);
-            ConnectionPoint point = this.GetEmptyEdgeMidConnectionPointNotOfType(srcDesigner, this.exitEdgeForAutoSplit, ConnectionPointKind.Incoming);
-            if (point == null)
-            {
-                point = this.FindClosestConnectionPointNotOfType(destConnPoint, new List<ConnectionPoint>(FlowchartDesigner.GetConnectionPoints(srcDesigner).Where<ConnectionPoint>(p =>
-                {
-                    return p.AttachedConnectors.Count == 0;
-                })), ConnectionPointKind.Incoming);
-            }
-
-            return point;
-        }
-
-        private void MeasureView(UIElement view)
-        {
-            if (this.panel.Children.Contains(view))
-            {
-                this.panel.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
-            }
-            else if (VisualTreeHelper.GetParent(view) == null)
-            {
-                StackPanel stackPanel = new StackPanel();
-                stackPanel.Children.Add(view);
-                if (view is VirtualizedContainerService.VirtualizingContainer)
-                {
-                    ((VirtualizedContainerService.VirtualizingContainer)view).Populate();
-                }
-                stackPanel.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
-                stackPanel.UpdateLayout();
-                stackPanel.Children.Remove(view);
-                FreeFormPanel.SetChildSize(view, view.DesiredSize);
-            }
-            else
-            {
-                Fx.Assert(false, "The view should either be un-rooted or contained in the FreeFormPanel");
-            }
-        }
-
-        private void StoreCurrentSizeViewStateWithUndo()
-        {
-            this.ViewStateService.StoreViewStateWithUndo(
-                this.ModelItem,
-                FlowchartSizeFeature.WidthPropertyName,
-                this.ViewStateService.RetrieveViewState(this.ModelItem, FlowchartSizeFeature.WidthPropertyName));
-
-            this.ViewStateService.StoreViewStateWithUndo(
-                this.ModelItem,
-                FlowchartSizeFeature.HeightPropertyName,
-                this.ViewStateService.RetrieveViewState(this.ModelItem, FlowchartSizeFeature.HeightPropertyName));
-        }
-
-        static private bool IsFlowStepAction(ModelItem modelItem)
-        {
-            // modelItem.CurrentValue is an Activity which is an Action of a FlowStep
-            return typeof(Activity).IsAssignableFrom(modelItem.ItemType);
-        }
-
-        static private bool IsFlowNode(ModelItem modelItem)
-        {
-            return typeof(FlowNode).IsAssignableFrom(modelItem.ItemType);
-        }
-
-        sealed private class ShapeOffsetter
-        {
-            private Point lastShape;
-            private bool isFirstShape = true;
-
-            public Point OffsetShapeLocation(Point shapeLocation)
-            {
-                if (this.isFirstShape)
-                {
-                    this.lastShape = shapeLocation;
-                    this.isFirstShape = false;
-                    return shapeLocation;
-                }
-
-                // the shapeLocation must be at least at right-down of lastShape
-                Double detX = shapeLocation.X - (lastShape.X + FreeFormPanel.GridSize);
-                Double detY = shapeLocation.Y - (lastShape.Y + FreeFormPanel.GridSize);
-                if (detX < 0 || detY < 0)
-                {
-                    // overlapped
-                    // then offset shapeLocation. 
-                    // offsetX and offsetY must be from Integer * FreeFormPanel.GridSize, because
-                    // shapeLocation is aligned to grid, and we expect after the offset, it is 
-                    // still aligned.
-                    Double offsetX = Math.Ceiling(-detX / FreeFormPanel.GridSize) * FreeFormPanel.GridSize;
-                    Double offsetY = Math.Ceiling(-detY / FreeFormPanel.GridSize) * FreeFormPanel.GridSize;
-                    shapeLocation.Offset(offsetX, offsetY);
-                }
-                this.lastShape = shapeLocation;
-                return this.lastShape;
-            }
-        }
-
-        private static void SetAutoSplitDataWithUndo(
-            ModelItem fcModelItem,
-            ModelItem srcModelItem,
-            ModelItem destModelItem,
-            int srcIndex,
-            int destIndex,
-            EdgeLocation entryEdgeForAutoSplit,
-            EdgeLocation exitEdgeForAutoSplit)
-        {
-            using (EditingScope es = (EditingScope)fcModelItem.BeginEdit(SR.AutoSplit, false))
-            {
-                es.Changes.Add(
-                    new SetAutoSplitConnectionPointChange(
-                        fcModelItem,
-                        srcModelItem,
-                        destModelItem,
-                        srcIndex,
-                        destIndex,
-                        entryEdgeForAutoSplit,
-                        exitEdgeForAutoSplit
-                        ));
-                es.Complete();
-            }
-        }
-
-        private static bool IsActivityTemplateFactory(Type type)
-        {
-            return type.GetInterface(typeof(IActivityTemplateFactory).FullName) != null ||
-                   type.GetInterface(typeof(IActivityTemplateFactory<>).FullName) != null;
-        }
-
-        // In AutoSplit, a mark,this.SrcConnPntAutoSplit & this.DestConnPntAutoSplit,
-        // is set telling the CreateLink, which is called later in Complete(), to use AutoSplit
-        // way to route the connector. 
-        // SetAutoSplitConnectionPointChange makes sure the mark is set during Redo.
-        // This Change does nothing in Undo.
-        private class SetAutoSplitConnectionPointChange : Change
-        {
-            private ModelItem Owner { get; set; }
-            private EdgeLocation EntryEdgeForAutoSplit { get; set; }
-            private EdgeLocation ExitEdgeForAutoSplit { get; set; }
-            private ModelItem SrcModelItem { get; set; }
-            private ModelItem DestModelItem { get; set; }
-            private int SrcConnPntIndex { get; set; }
-            private int DestConnPntIndex { get; set; }
-
-            private bool IsUndo { get; set; }
-
-            public SetAutoSplitConnectionPointChange(
-                ModelItem fcModelItem,
-                ModelItem srcModelItem,
-                ModelItem destModelItem,
-                int srcIndex,
-                int destIndex,
-                EdgeLocation entryEdgeForAutoSplit,
-                EdgeLocation exitEdgeForAutoSplit
-                )
-            {
-                this.Owner = fcModelItem;
-                this.SrcModelItem = srcModelItem;
-                this.DestModelItem = destModelItem;
-                this.SrcConnPntIndex = srcIndex;
-                this.DestConnPntIndex = destIndex;
-                this.EntryEdgeForAutoSplit = entryEdgeForAutoSplit;
-                this.ExitEdgeForAutoSplit = exitEdgeForAutoSplit;
-                this.IsUndo = false;
-            }
-
-            private SetAutoSplitConnectionPointChange()
-            {
-            }
-
-            public override string Description
-            {
-                get { return SR.AutoSplit; }
-            }
-
-            public override bool Apply()
-            {
-                if (this.IsUndo)
-                {
-                    return true;
-                }
-                FlowchartDesigner designer = this.Owner.View as FlowchartDesigner;
-                Fx.Assert(designer != null, "null designer");
-                UIElement srcElem = designer.GetView(this.SrcModelItem);
-                UIElement desElem = designer.GetView(this.DestModelItem);
-                ConnectionPoint srcConnPnt = GetConnectionPointFromIndex(srcElem, this.SrcConnPntIndex);
-                ConnectionPoint desConnPnt = GetConnectionPointFromIndex(desElem, this.DestConnPntIndex);
-                Fx.Assert(srcConnPnt != null, "srcConnPnt");
-                Fx.Assert(desConnPnt != null, "desConnPnt");
-
-                // setting values
-                designer.srcConnectionPointForAutoSplit = srcConnPnt;
-                designer.destConnectionPointForAutoSplit = desConnPnt;
-                designer.entryEdgeForAutoSplit = this.EntryEdgeForAutoSplit;
-                designer.exitEdgeForAutoSplit = this.ExitEdgeForAutoSplit;
-                return true;
-            }
-
-            public override Change GetInverse()
-            {
-                return new SetAutoSplitConnectionPointChange
-                {
-                    Owner = this.Owner,
-                    IsUndo = !this.IsUndo,
-                    EntryEdgeForAutoSplit = this.EntryEdgeForAutoSplit,
-                    ExitEdgeForAutoSplit = this.ExitEdgeForAutoSplit,
-                    SrcModelItem = this.SrcModelItem,
-                    DestModelItem = this.DestModelItem,
-                    SrcConnPntIndex = this.SrcConnPntIndex,
-                    DestConnPntIndex = this.DestConnPntIndex
-                };
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesignerCommands.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartDesignerCommands.cs
deleted file mode 100644 (file)
index 6280b7e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Windows.Input;
-
-//This class can  be removed if we make FlowchartDesigner public.
-//The purpose of this is so that VS can raise the command defined for the flowchart designer.
-namespace System.Activities.Core.Presentation
-{
-    public static class FlowchartDesignerCommands
-    {
-        public static readonly RoutedCommand ConnectNodesCommand = new RoutedCommand("ConnectNodes", typeof(FlowchartDesignerCommands));
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAdorner.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAdorner.cs
deleted file mode 100644 (file)
index 0f0c63a..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Documents;
-    using System.Windows.Media;
-    using System.Windows.Media.Effects;
-
-    class FlowchartExpressionAdorner : Adorner
-    {
-        string expressionString;
-        bool isTextRightToLeft;
-
-        public FlowchartExpressionAdorner(UIElement adornedElement)
-            : base(adornedElement)
-        {
-            expressionString = GetExpressionString();
-            this.isTextRightToLeft = FreeFormPanelUtilities.IsRightToLeft(adornedElement);
-        }
-
-        protected override void OnRender(DrawingContext drawingContext)
-        {
-            Transform transform = isTextRightToLeft ? new MatrixTransform(-1, 0, 0, 1, 0, 0) : Transform.Identity;
-            Border tooltip = new Border
-            {
-                Background = new SolidColorBrush(Colors.White),
-                BorderBrush = new SolidColorBrush(WorkflowDesignerColors.WorkflowViewElementBorderColor),
-                BorderThickness = new Thickness(1),
-                CornerRadius = new CornerRadius(4),
-                Margin = new Thickness(10),
-                Child = new TextBlock
-                {
-                    Margin = new Thickness(4, 0, 4, 0),
-                    MaxHeight = 100,
-                    Text = expressionString,
-                },
-                Effect = new DropShadowEffect
-                {
-                    Color = Colors.Black,
-                    BlurRadius = 4,
-                    Opacity = 0.5
-                },
-                RenderTransform = transform
-            };
-            tooltip.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
-
-            VisualBrush brush = new VisualBrush()
-            {
-                Visual = tooltip
-            };
-
-            Rect adornedElementRect = new Rect(this.AdornedElement.DesiredSize);
-            Rect tooltipRect = new Rect(adornedElementRect.TopLeft + new Vector(adornedElementRect.Width, -tooltip.DesiredSize.Height), tooltip.DesiredSize);
-            Pen renderPen = new Pen();
-            drawingContext.DrawRectangle(brush, renderPen, tooltipRect);
-        }        
-
-        public static string GetExpressionString(UIElement adornedElement)
-        {
-            string expressionPropertyName;
-            ModelItem modelItem;
-            if (adornedElement is FlowDecisionDesigner)
-            {
-                expressionPropertyName = "Condition";
-                modelItem = ((FlowDecisionDesigner)adornedElement).ModelItem;
-            }
-            else
-            {
-                Fx.Assert(adornedElement is FlowSwitchDesigner, "this.AdornedElement is either FlowDecisionDesigner or FlowSwitchDesigner");
-                expressionPropertyName = "Expression";
-                modelItem = ((FlowSwitchDesigner)adornedElement).ModelItem;
-            }
-            Activity expressionActivity = modelItem.Properties[expressionPropertyName].ComputedValue as Activity;
-            return ExpressionHelper.GetExpressionString(expressionActivity, modelItem);
-        }
-
-        string GetExpressionString()
-        {
-            return GetExpressionString(this.AdornedElement);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAutomationPeer.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartExpressionAutomationPeer.cs
deleted file mode 100644 (file)
index 17e4914..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Automation.Peers;
-
-    [Fx.Tag.XamlVisible(false)]
-    class FlowchartExpressionAutomationPeer : UIElementAutomationPeer
-    {
-        const string ExpressionNotShown = "(null)";
-        AutomationPeer wrappedAutomationPeer;
-
-        public FlowchartExpressionAutomationPeer(FrameworkElement owner, AutomationPeer wrappedAutomationPeer)
-            : base(owner)
-        {
-            this.wrappedAutomationPeer = wrappedAutomationPeer;
-        }
-
-        protected override string GetItemStatusCore()
-        {
-            Fx.Assert(this.Owner != null, "FlowchartExpressionAutomationPeer should have this.Owner != null.");
-            bool expressionShown = false;
-            if (this.Owner is FlowDecisionDesigner)
-            {
-                expressionShown = ((FlowDecisionDesigner)this.Owner).ExpressionShown;
-            }
-            else
-            {
-                Fx.Assert(this.Owner is FlowSwitchDesigner, "this.Owner should either be FlowDecisionDesigner or FlowSwitchDesigner.");
-                expressionShown = ((FlowSwitchDesigner)this.Owner).ExpressionShown;
-            }
-            return expressionShown ? FlowchartExpressionAdorner.GetExpressionString(this.Owner) : ExpressionNotShown;
-        }
-
-        protected override string GetClassNameCore()
-        {
-            return this.wrappedAutomationPeer.GetClassName();
-        }
-
-        protected override string GetNameCore()
-        {
-            return this.wrappedAutomationPeer.GetName();
-        }
-
-        protected override string GetAutomationIdCore()
-        {
-            return this.wrappedAutomationPeer.GetAutomationId();
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartFreeFormPanel.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartFreeFormPanel.cs
deleted file mode 100644 (file)
index 50e429e..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.FreeFormEditing;
-
-    // This is a workaround. Internal type FreeFromPanel cannot be used in xaml even if System.Activities.Presentation is configured to
-    // be InternalsVisibleTo System.Activities.Core.Presentation
-    internal sealed class FlowchartFreeFormPanel : FreeFormPanel
-    {
-        public FlowchartFreeFormPanel()
-        {
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartResizeGrip.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartResizeGrip.cs
deleted file mode 100644 (file)
index a9ec0a1..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.Activities.Core.Presentation
-{
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Runtime;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation;
-    using System.ComponentModel;
-    using System.Activities.Presentation.FreeFormEditing;
-
-    //This class is visual representation of ResizeGrip like control, which is used in a Grid to allow resizing.
-    class FlowchartResizeGrip : Control
-    {
-        public static readonly DependencyProperty IconProperty =
-            DependencyProperty.Register("Icon", typeof(DrawingBrush), typeof(FlowchartResizeGrip));
-
-        public static readonly DependencyProperty ParentFlowchartDesignerProperty =
-            DependencyProperty.Register("ParentFlowchartDesigner", typeof(FlowchartDesigner), typeof(FlowchartResizeGrip));
-
-        public static readonly DependencyProperty ParentGridProperty =
-            DependencyProperty.Register("ParentGrid", typeof(Grid), typeof(FlowchartResizeGrip));
-
-        public static readonly DependencyProperty DisabledProperty =
-            DependencyProperty.Register("Disabled", typeof(bool), typeof(FlowchartResizeGrip), new UIPropertyMetadata(false));
-
-        Point offset;
-
-        public DrawingBrush Icon
-        {
-            get { return (DrawingBrush)GetValue(IconProperty); }
-            set { SetValue(IconProperty, value); }
-        }
-
-        public FlowchartDesigner ParentFlowchartDesigner
-        {
-            get { return (FlowchartDesigner)GetValue(ParentFlowchartDesignerProperty); }
-            set { SetValue(ParentFlowchartDesignerProperty, value); }
-        }
-
-        public Grid ParentGrid
-        {
-            get { return (Grid)GetValue(ParentGridProperty); }
-            set { SetValue(ParentGridProperty, value); }
-        }
-
-        public bool Disabled
-        {
-            get { return (bool)GetValue(DisabledProperty); }
-            set { SetValue(DisabledProperty, value); }
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-            this.Cursor = Cursors.SizeNWSE;
-        }
-
-        protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
-        {
-            if (!this.Disabled)
-            {
-                this.offset = e.GetPosition(this);
-                this.CaptureMouse();
-                ParentFlowchartDesigner.IsResizing = true;
-                e.Handled = true;
-            }
-            base.OnPreviewMouseLeftButtonDown(e);
-        }
-
-        protected override void OnMouseMove(MouseEventArgs args)
-        {
-            base.OnMouseMove(args);
-            if (!this.Disabled)
-            {
-                if (args.LeftButton == MouseButtonState.Pressed && this.IsMouseCaptured)
-                {
-                    FlowchartDesigner flowchartDesigner = this.ParentFlowchartDesigner;
-                    FreeFormPanel panel = flowchartDesigner.panel;
-                    Grid flowchartGrid = this.ParentGrid;
-                    Point currentPosition = Mouse.GetPosition(flowchartGrid);
-
-                    currentPosition.Offset(this.offset.X, this.offset.Y);
-
-                    flowchartDesigner.FlowchartWidth = Math.Min(Math.Max(panel.RequiredWidth, currentPosition.X), flowchartGrid.MaxWidth);
-                    flowchartDesigner.FlowchartHeight = Math.Min(Math.Max(panel.RequiredHeight, currentPosition.Y), flowchartGrid.MaxHeight);
-                    args.Handled = true;
-                }
-            }
-        }
-
-        protected override void OnPreviewMouseLeftButtonUp(MouseButtonEventArgs e)
-        {
-            if (!this.Disabled)
-            {
-                FlowchartDesigner flowchartDesigner = this.ParentFlowchartDesigner;
-                ModelItem flowchartModelItem = this.ParentFlowchartDesigner.ModelItem;
-                using (ModelEditingScope scope = flowchartModelItem.BeginEdit(SR.FCResizeUndoUnitName))
-                {
-                    TypeDescriptor.GetProperties(flowchartModelItem)[FlowchartSizeFeature.WidthPropertyName].SetValue(flowchartModelItem, flowchartDesigner.FlowchartWidth);
-                    TypeDescriptor.GetProperties(flowchartModelItem)[FlowchartSizeFeature.HeightPropertyName].SetValue(flowchartModelItem, flowchartDesigner.FlowchartHeight);
-                    scope.Complete();
-                }
-                Mouse.OverrideCursor = null;
-                Mouse.Capture(null);
-                ParentFlowchartDesigner.IsResizing = false;
-                e.Handled = true;
-            }
-            base.OnPreviewMouseLeftButtonUp(e);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartSizeFeature.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FlowchartSizeFeature.cs
deleted file mode 100644 (file)
index f01c6bb..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Collections.Generic;
-    using System.Windows;
-
-    class FlowchartSizeFeature : ViewStateAttachedPropertyFeature
-    {
-        public const string WidthPropertyName = "Width";
-        public const string HeightPropertyName = "Height";
-        public const double DefaultWidth = 600;
-        public const double DefaultHeight = 600;
-
-        protected override IEnumerable<AttachedPropertyInfo> AttachedProperties
-        {
-            get
-            {
-                yield return new AttachedPropertyInfo<Nullable<double>> { IsBrowsable = false, PropertyName = WidthPropertyName, DefaultValue = DefaultWidth };
-                yield return new AttachedPropertyInfo<Nullable<double>> { IsBrowsable = false, PropertyName = HeightPropertyName, DefaultValue = DefaultHeight };
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ForEachDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ForEachDesigner.xaml.cs
deleted file mode 100644 (file)
index 7a18a4a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities;
-    using System.Activities.Statements;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Diagnostics;
-    using System.Windows;
-    using System.Runtime;
-    using System.Activities.Presentation;
-    using System.Reflection;
-
-    /// <summary>
-    /// Interaction logic for ForEachDesigner.xaml
-    /// </summary>
-    partial class ForEachDesigner
-    {
-        public ForEachDesigner()
-        {
-            InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type[] types = new Type[]
-            {
-                typeof(System.Activities.Statements.ForEach<>),
-                typeof(System.Activities.Statements.ParallelForEach<>)
-            };
-
-            foreach (Type type in types)
-            {
-                builder.AddCustomAttributes(type, new DesignerAttribute(typeof(ForEachDesigner)));
-                builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
-            }
-
-            builder.AddCustomAttributes(typeof(System.Activities.Statements.ForEach<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
-            builder.AddCustomAttributes(typeof(System.Activities.Statements.ParallelForEach<>), new FeatureAttribute(typeof(UpdatableGenericArgumentsFeature)));
-            builder.AddCustomAttributes(typeof(System.Activities.Core.Presentation.Factories.ForEachWithBodyFactory<>), new DefaultTypeArgumentAttribute(typeof(int)));
-            builder.AddCustomAttributes(typeof(System.Activities.Core.Presentation.Factories.ParallelForEachWithBodyFactory<>), new DefaultTypeArgumentAttribute(typeof(int)));
-         
-        }
-
-        void OnValuesBoxLoaded(object sender, RoutedEventArgs e)
-        {
-            ExpressionTextBox etb = sender as ExpressionTextBox;
-            Fx.Assert(null != etb, "sender should not be null!");
-            etb.ExpressionType = typeof(IEnumerable<>).MakeGenericType(this.ModelItem.ItemType.GetGenericArguments());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FreeFormPanelUtilities.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/FreeFormPanelUtilities.cs
deleted file mode 100644 (file)
index 3f0adae..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.View;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Media;
-
-    internal static class FreeFormPanelUtilities
-    {
-        internal static bool IsRightToLeft(Visual visual)
-        {
-            Fx.Assert(visual != null, "visual != null");
-            Transform trf = ViewUtilities.GetTransformToRoot(visual) as Transform;
-            Matrix matrix = trf != null ? trf.Value : Matrix.Identity;
-            Vector dir = new Vector(1, 0); // Point to right.
-            dir = matrix.Transform(dir);
-            return dir.X < dir.Y;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericFlowSwitchHelper.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericFlowSwitchHelper.cs
deleted file mode 100644 (file)
index 764e5fe..0000000
+++ /dev/null
@@ -1,557 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Globalization;
-    using System.Reflection;
-    using System.Runtime;
-
-    internal static class GenericFlowSwitchHelper
-    {
-        static readonly MethodInfo genericCopy = typeof(GenericFlowSwitchHelper).GetMethod("GenericCopy");
-        static readonly MethodInfo genericCreateGenericFlowSwitchLink = typeof(GenericFlowSwitchHelper).GetMethod("CreateGenericFlowSwitchLink");
-        static readonly MethodInfo genericGetCaseName = typeof(GenericFlowSwitchHelper).GetMethod("GenericGetCaseName");
-        static readonly MethodInfo genericRemapFlowSwitch = typeof(GenericFlowSwitchHelper).GetMethod("GenericRemapFlowSwitch");
-        const string flowSwitchCasesKeyIdentifier = "key";
-        const string flowSwitchNullCaseKeyIdentifier = "(null)";
-        const string flowSwitchEmptyCaseKeyIdentifier = "(empty)";
-
-        public static string FlowSwitchCasesKeyIdentifier
-        {
-            get
-            {
-                return flowSwitchCasesKeyIdentifier;
-            }
-        }
-
-        public static string FlowSwitchNullCaseKeyIdentifier
-        {
-            get
-            {
-                return flowSwitchNullCaseKeyIdentifier;
-            }
-        }
-
-        public static string FlowSwitchEmptyCaseKeyIdentifier
-        {
-            get
-            {
-                return flowSwitchEmptyCaseKeyIdentifier;
-            }
-        }
-
-        public static void Copy(Type genericType, FlowNode currentFlowElement, Dictionary<FlowNode, FlowNode> clonedFlowElements)
-        {
-            MethodInfo copy = genericCopy.MakeGenericMethod(new Type[] { genericType });
-            copy.Invoke(null, new object[] { currentFlowElement, clonedFlowElements });
-        }
-
-        public static void GenericCopy<T>(FlowNode currentFlowElement, Dictionary<FlowNode, FlowNode> clonedFlowElements)
-        {
-            FlowSwitch<T> currentFlowSwitch = (FlowSwitch<T>)currentFlowElement;
-            FlowSwitch<T> clonedFlowSwitch = (FlowSwitch<T>)clonedFlowElements[currentFlowElement];
-
-            //Update the default case.
-            FlowNode defaultCase = currentFlowSwitch.Default;
-            if (defaultCase != null && clonedFlowElements.ContainsKey(defaultCase))
-            {
-                clonedFlowSwitch.Default = clonedFlowElements[defaultCase];
-            }
-            else
-            {
-                clonedFlowSwitch.Default = null;
-            }
-
-            //Update the Cases dictionary.
-            foreach (T key in currentFlowSwitch.Cases.Keys)
-            {
-                if (clonedFlowElements.ContainsKey(currentFlowSwitch.Cases[key]))
-                {
-                    clonedFlowSwitch.Cases.Add(key, clonedFlowElements[currentFlowSwitch.Cases[key]]);
-                }
-            }
-        }
-
-        // This is different from GenericCopy because all the reference shuold be set
-        // from property: swtich.Default = SomeValue should be 
-        // switch.Properties["Default"] = SomeValue.
-        public static void ReferenceCopy(Type genericType,
-                FlowNode currentFlowElement,
-                Dictionary<FlowNode, ModelItem> modelItems,
-                Dictionary<FlowNode, FlowNode> clonedFlowElements)
-        {
-            ModelItem modelItem = null;
-            if (modelItems.TryGetValue(currentFlowElement, out modelItem))
-            {
-                MethodInfo copy = genericRemapFlowSwitch.MakeGenericMethod(new Type[] { genericType });
-                copy.Invoke(null, new object[] { currentFlowElement, modelItem, clonedFlowElements });
-            }
-            else
-            {
-                Fx.Assert("should not happen!");
-            }
-        }
-
-        // oldNewFlowNodeMap: <OldFlowNode, NewFlowNode>
-        //    sometimes, OldFlowNode == NewFlowNode, say, FlowNode is a FlowDecesion.
-        //    if FlowNode is FlowStep, OldFlowNode != NewFlowNode
-        public static void GenericRemapFlowSwitch<T>(FlowNode currentFlowElement,
-            ModelItem modelItem, Dictionary<FlowNode, FlowNode> oldNewFlowNodeMap)
-        {
-            FlowSwitch<T> currentFlowSwitch = (FlowSwitch<T>)currentFlowElement;
-
-            //Update the default case.
-            FlowNode defaultCase = currentFlowSwitch.Default;
-            if (defaultCase != null && oldNewFlowNodeMap.ContainsKey(defaultCase))
-            {
-                modelItem.Properties["Default"].SetValue(oldNewFlowNodeMap[defaultCase]);
-            }
-            else
-            {
-                modelItem.Properties["Default"].SetValue(null);
-            }
-
-
-            // collect all the cases that should be update
-            Dictionary<object, object> keyValueMap = new Dictionary<object, object>();
-            foreach (T key in currentFlowSwitch.Cases.Keys)
-            {
-                if (oldNewFlowNodeMap.ContainsKey(currentFlowSwitch.Cases[key]))
-                {
-                    keyValueMap.Add(key, oldNewFlowNodeMap[currentFlowSwitch.Cases[key]]);
-                }
-            }
-            // Update the Cases dictionary.
-            ModelProperty casesProperty = modelItem.Properties["Cases"];
-
-            // remove all key
-            foreach (ModelItem key in GenericFlowSwitchHelper.GetCaseKeys(casesProperty))
-            {
-                GenericFlowSwitchHelper.RemoveCase(casesProperty, key.GetCurrentValue());
-            }
-
-            // add back keys
-            foreach (T key in keyValueMap.Keys)
-            {
-                GenericFlowSwitchHelper.AddCase(casesProperty, key, keyValueMap[key]);
-            }
-        }
-
-        public static bool IsGenericFlowSwitch(Type type)
-        {
-            return type.IsGenericType && type.GetGenericTypeDefinition() == typeof(FlowSwitch<>);
-        }
-
-        public static IFlowSwitchLink CreateFlowSwitchLink(Type flowSwitchType, ModelItem currentMI, object caseValue, bool isDefault)
-        {
-            Type genericType = null;
-            object key = null;
-            genericType = flowSwitchType.GetGenericArguments()[0];
-            if (caseValue is string)
-            {
-                key = GetObject(caseValue as string, genericType);
-            }
-            else
-            {
-                key = caseValue;
-            }
-            MethodInfo method = genericCreateGenericFlowSwitchLink.MakeGenericMethod(genericType);
-            return method.Invoke(null, new object[] { currentMI, key, isDefault }) as IFlowSwitchLink;
-        }
-
-        public static IFlowSwitchLink CreateGenericFlowSwitchLink<T>(ModelItem currentMI, T caseValue, bool isDefault)
-        {
-            if (isDefault)
-            {
-                return new FlowSwitchDefaultLink<T>(currentMI, caseValue, isDefault);
-            }
-            else
-            {
-                return new FlowSwitchCaseLink<T>(currentMI, caseValue, isDefault);
-            }
-        }
-
-        public static string GetCaseName(ModelProperty casesProperties, Type type, out string errorMessage)
-        {
-            object casesDict = casesProperties.Dictionary.GetCurrentValue();
-            ModelItemCollection collection = casesProperties.Value.Properties["ItemsCollection"].Collection;
-            MethodInfo method = genericGetCaseName.MakeGenericMethod(type);
-            object[] parameters = new object[] { collection, null };
-            string result = (string)method.Invoke(null, parameters);
-            errorMessage = (string)parameters[1];
-            return result;
-        }
-
-        public static string GenericGetCaseName<T>(ModelItemCollection collection, out string errorMessage)
-        {
-            int maxName = 100000;
-            Type type = typeof(T);
-            errorMessage = string.Empty;
-            if (typeof(string).IsAssignableFrom(type))
-            {
-                string caseName = "caseN";
-                for (int i = 1; i <= maxName; i++)
-                {
-                    caseName = string.Format(CultureInfo.InvariantCulture, SR.CaseFormat, i);
-                    if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, caseName))
-                    {
-                        break;
-                    }
-                }
-                return caseName;
-            }
-            else if (GenericFlowSwitchHelper.IsIntegralType(type))
-            {
-                if (type == typeof(sbyte))
-                {
-                    sbyte maxCount = (sbyte.MaxValue < maxName) ? sbyte.MaxValue : (sbyte)maxName;
-                    for (sbyte i = 0; i <= maxCount; i++)
-                    {
-                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
-                        {
-                            return GenericFlowSwitchHelper.GetString(i, type);
-                        }
-                    }
-                }
-                else if (type == typeof(byte))
-                {
-                    byte maxCount = (byte.MaxValue < maxName) ? byte.MaxValue : (byte)maxName;
-                    for (byte i = 0; i <= maxCount; i++)
-                    {
-                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
-                        {
-                            return GenericFlowSwitchHelper.GetString(i, type);
-                        }
-                    }
-                }
-                else if (type == typeof(char))
-                {
-                    char maxCount = unchecked((char)maxName);
-                    for (char i = (char)48; i <= maxCount; i++)
-                    {
-                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
-                        {
-                            return GenericFlowSwitchHelper.GetString(i, type);
-                        }
-                    }
-                }
-                else if (type == typeof(short))
-                {
-                    short maxCount = (short)maxName;
-                    for (short i = 0; i <= maxCount; i++)
-                    {
-                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
-                        {
-                            return GenericFlowSwitchHelper.GetString(i, type);
-                        }
-                    }
-                }
-                else if (type == typeof(ushort))
-                {
-                    ushort maxCount = (ushort)maxName;
-                    for (ushort i = 0; i <= maxCount; i++)
-                    {
-                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
-                        {
-                            return GenericFlowSwitchHelper.GetString(i, type);
-                        }
-                    }
-                }
-                else if (type == typeof(int))
-                {
-                    for (int i = 0; i <= maxName; i++)
-                    {
-                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
-                        {
-                            return GenericFlowSwitchHelper.GetString(i, type);
-                        }
-                    }
-                }
-                else if (type == typeof(uint))
-                {
-                    for (uint i = 0; i <= (uint)maxName; i++)
-                    {
-                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
-                        {
-                            return GenericFlowSwitchHelper.GetString(i, type);
-                        }
-                    }
-                }
-                else if (type == typeof(long))
-                {
-                    for (long i = 0; i <= (long)maxName; i++)
-                    {
-                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
-                        {
-                            return GenericFlowSwitchHelper.GetString(i, type);
-                        }
-                    }
-                }
-                else if (type == typeof(ulong))
-                {
-                    for (ulong i = 0; i <= (ulong)maxName; i++)
-                    {
-                        if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i))
-                        {
-                            return GenericFlowSwitchHelper.GetString(i, type);
-                        }
-                    }
-                }
-                errorMessage = SR.InvalidFlowSwitchCaseMessage;
-                return string.Empty;
-            }
-            else if (type.IsEnum)
-            {
-                Array array = type.GetEnumValues();
-                foreach (object value in array)
-                {
-                    if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, value))
-                    {
-                        return GenericFlowSwitchHelper.GetString(value, type);
-                    }
-                }
-                errorMessage = SR.InvalidFlowSwitchCaseMessage;
-                return string.Empty;
-            }
-            else if (type == typeof(bool))
-            {
-                if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, true))
-                {
-                    return GenericFlowSwitchHelper.GetString(true, type);
-                }
-                else if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, false))
-                {
-                    return GenericFlowSwitchHelper.GetString(false, type);
-                }
-                errorMessage = SR.InvalidFlowSwitchCaseMessage;
-                return string.Empty;
-            }
-            return string.Empty;
-        }
-
-        public static bool IsIntegralType(Type type)
-        {
-            if (type == typeof(sbyte) || type == typeof(byte) || type == typeof(char) || type == typeof(short) ||
-                type == typeof(ushort) || type == typeof(int) || type == typeof(uint) || type == typeof(long) || type == typeof(ulong))
-            {
-                return true;
-            }
-            else
-            {
-                return false;
-            }
-        }
-
-        public static string GetString(object key, Type type)
-        {
-            string result = null;
-            if (key == null)
-            {
-                Fx.Assert(type == null || !type.IsValueType, "Value type should not have null value");
-                result = FlowSwitchNullCaseKeyIdentifier;
-            }
-            else
-            {
-                result = GetRawString(key);
-                if (result == string.Empty && typeof(string).IsAssignableFrom(type))
-                {
-                    result = FlowSwitchEmptyCaseKeyIdentifier;
-                }
-            }
-            return result;
-        }
-
-        //Raw string means the null is not represented as "<null>" and string.Empty is not represented as "<empty>".
-        static string GetRawString(object caseObject)
-        {
-            string result = null;
-
-            if (caseObject == null)
-            {
-                return null;
-            }
-            if (!(caseObject is string))
-            {
-                result = XamlUtilities.GetConverter(caseObject.GetType()).ConvertToString(caseObject);
-            }
-            else
-            {
-                result = (string)caseObject;
-            }
-            return result;
-        }
-
-        public static object GetObject(string caseString, Type genericType)
-        {
-            object result;
-            if (!genericType.IsValueType && caseString == FlowSwitchNullCaseKeyIdentifier)
-            {
-                result = null;
-            }
-            else if (typeof(string).IsAssignableFrom(genericType))
-            {
-                if (caseString == FlowSwitchEmptyCaseKeyIdentifier)
-                {
-                    result = string.Empty;
-                }
-                else
-                {
-                    result = caseString;
-                }
-            }
-            else
-            {
-                //If target type is value type and the caseString is null, we should leave converter to process it.
-                //If target type is reference type, the caseString is a non-null value here.
-                result = XamlUtilities.GetConverter(genericType).ConvertFromString(caseString);
-            }
-            return result;
-        }
-
-        public static bool ContainsCaseKey(ModelProperty casesProp, object key)
-        {
-            ModelItemCollection itemsCollection = casesProp.Value.Properties["ItemsCollection"].Collection;
-            return ContainsCaseKey(itemsCollection, key);
-        }
-
-        static bool ContainsCaseKey(ModelItemCollection itemsCollection, object key)
-        {
-            if (GenericFlowSwitchHelper.FlowSwitchNullCaseKeyIdentifier.Equals(key))
-            {
-                key = null;
-            }
-
-            foreach (ModelItem item in itemsCollection)
-            {
-                object value = item.Properties["Key"].ComputedValue;
-                if (value == key || ((value != null) && item.Properties["Key"].ComputedValue.Equals(key)))
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        public static ModelItem GetCaseModelItem(ModelProperty casesProp, object key)
-        {
-            ModelItemCollection itemsCollection = casesProp.Value.Properties["ItemsCollection"].Collection;
-            return GenericFlowSwitchHelper.GetCaseModelItem(itemsCollection, key);
-        }
-
-        static ModelItem GetCaseModelItem(ModelItemCollection itemsCollection, object key)
-        {
-            if (GenericFlowSwitchHelper.FlowSwitchNullCaseKeyIdentifier.Equals(key))
-            {
-                key = null;
-            }
-
-            foreach (ModelItem item in itemsCollection)
-            {
-                object value = item.Properties["Key"].ComputedValue;
-                if (value == key || (value != null && item.Properties["Key"].ComputedValue.Equals(key)))
-                {
-                    return item.Properties["Value"].Value;
-                }
-            }
-            string caseName = GetString(key, itemsCollection.ItemType);
-            throw FxTrace.Exception.AsError(new KeyNotFoundException(caseName));
-        }
-
-        public static object GetCase(ModelItemCollection itemsCollection, object key)
-        {
-            return GenericFlowSwitchHelper.GetCaseModelItem(itemsCollection, key).GetCurrentValue();
-        }
-
-        public static ModelItem[] GetCaseKeys(ModelProperty casesProp)
-        {
-            ModelItemCollection itemsCollection = casesProp.Value.Properties["ItemsCollection"].Collection;
-            ModelItem[] keys = new ModelItem[itemsCollection.Count];
-            for (int i = 0; i < itemsCollection.Count; i++)
-            {
-                keys[i] = (ModelItem) itemsCollection[i].Properties["Key"].Value;
-            }
-            return keys;
-        }
-
-        public static void RemoveCase(ModelProperty casesProp, object key)
-        {
-            ModelItemCollection itemsCollection = casesProp.Value.Properties["ItemsCollection"].Collection;
-            
-            if (GenericFlowSwitchHelper.FlowSwitchNullCaseKeyIdentifier.Equals(key))
-            {
-                key = null;
-            }
-            foreach (ModelItem item in itemsCollection)
-            {
-                object value = item.Properties["Key"].ComputedValue;
-                if (value == key || (value != null && item.Properties["Key"].ComputedValue.Equals(key)))
-                {
-                    itemsCollection.Remove(item);
-                    return;
-                }
-                
-            }
-            string caseName = GetString(key, itemsCollection.ItemType.GetGenericArguments()[0]);
-            throw FxTrace.Exception.AsError(new KeyNotFoundException(caseName));
-        }
-        
-        public static void AddCase(ModelProperty casesPropperties, object newKey, object newCase)
-        {
-            Type propertyType = casesPropperties.PropertyType;
-            Fx.Assert(propertyType.IsGenericType && propertyType.GetGenericTypeDefinition() == typeof(IDictionary<,>), "Property type should be IDictonary<T, FlowNode>");
-            Type keyType = propertyType.GetGenericArguments()[0];
-            ModelItemCollection itemsCollection = casesPropperties.Value.Properties["ItemsCollection"].Collection;
-             
-            Type caseType = typeof(ModelItemKeyValuePair<,>).MakeGenericType(new Type[] { keyType, typeof(FlowNode) });
-            object mutableKVPair = Activator.CreateInstance(caseType, new object[] { newKey, newCase });
-            itemsCollection.Add(mutableKVPair);
-        }
-
-        public static bool CanBeGeneratedUniquely(Type typeArgument)
-        {
-            return typeArgument.IsEnum || typeof(string).IsAssignableFrom(typeArgument)
-                || GenericFlowSwitchHelper.IsIntegralType(typeArgument) || typeof(bool) == typeArgument;
-        }
-
-        public static bool CheckEquality(object value, Type targetType)
-        {
-            if (value == null)
-            {
-                return true;
-            }
-            else
-            {
-                string stringValue = GetString(value, targetType);
-                object newValue = GetObject(stringValue, targetType);
-                return value.GetHashCode() == newValue.GetHashCode() && value.Equals(newValue);
-            }
-        }
-
-        public static bool ValidateCaseKey(object obj, ModelProperty casesProp, Type genericType, out string reason)
-        {
-            reason = string.Empty;
-            string key = GenericFlowSwitchHelper.GetString(obj, genericType);
-            if (GenericFlowSwitchHelper.CheckEquality(obj, genericType))
-            {
-                if (GenericFlowSwitchHelper.ContainsCaseKey(casesProp, obj))
-                {
-                    reason = string.Format(CultureInfo.CurrentCulture, SR.DuplicateCaseKey, key);
-                    return false;
-                }
-                return true;
-            }
-            else
-            {
-                reason = string.Format(CultureInfo.CurrentUICulture, SR.EqualityError, genericType.Name);
-                return false;
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericTypeArgumentConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/GenericTypeArgumentConverter.cs
deleted file mode 100644 (file)
index bf84af9..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Windows.Data;
-    using System.Runtime;
-    using System.Globalization;
-
-    public sealed class GenericTypeArgumentConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            Fx.Assert(targetType == typeof(Type), "GenericTypeArgumentConverter is expected to be a Type to Type converter with an integer parameter");
-            Fx.Assert(value is Type, "GenericTypeArgumentConverter is expected to be a Type to Type converter with an integer parameter");
-            Type source = value as Type;
-            return source.GetGenericArguments()[Int32.Parse(parameter.ToString(), culture)];
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            // It is theoretically impossible to convert from a generic type argument back to its original type.
-            throw FxTrace.Exception.AsError(new NotSupportedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextConverter.cs
deleted file mode 100644 (file)
index c8a0539..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Windows;
-    using System.Windows.Data;
-
-    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
-    internal sealed class HintTextConverter : IMultiValueConverter
-    {
-        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            // values represented in XAML
-            //   values[0] = ModelItem.XXX
-            //   values[1] = ModelItem.XXX.DisplayName
-
-            if (values[0] == null || values[1] == DependencyProperty.UnsetValue)
-            {
-                return SR.AddActivityHintText;
-            }
-            else
-            {
-                return (values[1] as string) ?? string.Empty;
-            }
-        }
-
-        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotImplementedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextMaxWidthConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/HintTextMaxWidthConverter.cs
deleted file mode 100644 (file)
index 3964862..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Windows;
-    using System.Windows.Data;
-
-    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
-    internal sealed class HintTextMaxWidthConverter : IValueConverter
-    {
-        public object Convert(object o, Type targetType, object parameter, CultureInfo culture)
-        {
-            // If o == null, this means the Activity inside Default/Cases is null.
-            // We need to show SR.ClickToAdd instruction as a whole string without trim.
-            // So we need to set the MaxWidth to double.PositiveInfinity. Otherwise, we
-            // set it according to the parameter and TextBlock will do proper trimming.
-            double maxWidth = double.Parse(parameter as string, CultureInfo.InvariantCulture.NumberFormat);
-            return o != null ? maxWidth : DependencyProperty.UnsetValue;
-        }
-
-        public object ConvertBack(object o, Type targetType, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotImplementedException());
-        }
-
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IFlowSwitch.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IFlowSwitch.cs
deleted file mode 100644 (file)
index 9de7397..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.ComponentModel;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Statements;
-    using System.Windows;
-    using System.Windows.Data;
-
-    interface IFlowSwitchLink
-    {
-        [BrowsableAttribute(false)]
-        ModelItem ModelItem
-        { get; set; }
-
-        [BrowsableAttribute(false)]
-        FlowNode ParentFlowSwitch
-        {
-            get;
-            set;
-        }
-
-        bool IsDefaultCase
-        {
-            get;
-            set;
-        }
-
-        string CaseName
-        {
-            get;
-        }
-
-        object CaseObject
-        {
-            get;
-        }
-
-        MultiBinding CreateConnectorLabelTextBinding();
-    }
-
-    interface IFlowSwitchDefaultLink : IFlowSwitchLink
-    {
-        string DefaultCaseDisplayName
-        {
-            get;
-            set;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IfElseDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IfElseDesigner.xaml.cs
deleted file mode 100644 (file)
index acfced6..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Data;
-
-    /// <summary>
-    /// Interaction logic for IfElseDesigner.xaml
-    /// </summary>
-    partial class IfElseDesigner
-    {
-        public IfElseDesigner()
-        {
-            InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(If);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(IfElseDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Then"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Else"), BrowsableAttribute.No);
-
-            builder.AddCustomAttributes(type, type.GetProperty("Condition"), new HidePropertyInOutlineViewAttribute());
-        }
-
-        void OnExpressionEditorLoaded(object sender, RoutedEventArgs e)
-        {
-            ExpressionTextBox expressionTextBox = sender as ExpressionTextBox;
-            Fx.Assert(expressionTextBox != null, "sender should be userControl");
-            //bind ExpressionProperty of Expression textbox to ModelItem.Condition
-            Binding b = new Binding();
-            ArgumentToExpressionConverter argumentToExpressionConverter = new ArgumentToExpressionConverter();
-            b.Converter = argumentToExpressionConverter;
-            b.Mode = BindingMode.TwoWay;
-
-            b.Source = this.ModelItem;
-            b.Path = new PropertyPath("Condition");
-            if (BindingOperations.GetBinding(expressionTextBox, ExpressionTextBox.ExpressionProperty) != null)
-            {
-                BindingOperations.ClearBinding(expressionTextBox, ExpressionTextBox.ExpressionProperty);
-            }
-            expressionTextBox.SetBinding(ExpressionTextBox.ExpressionProperty, b);
-            //bind OwnerActivityProperty of Expression textbox to ModelItem
-            Binding b1 = new Binding();
-            b1.Source = this.ModelItem;
-            if (BindingOperations.GetBinding(expressionTextBox, ExpressionTextBox.OwnerActivityProperty) != null)
-            {
-                BindingOperations.ClearBinding(expressionTextBox, ExpressionTextBox.OwnerActivityProperty);
-            }
-            expressionTextBox.SetBinding(ExpressionTextBox.OwnerActivityProperty, b1);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InteropDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InteropDesigner.xaml.cs
deleted file mode 100644 (file)
index 71f0968..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.IO;
-    using System.Runtime;
-    using System.Windows.Threading;
-    
-    partial class InteropDesigner
-    {
-        private static Func<Type, bool> filter; 
-        private static string interopTypeAssemblyQualifiedName = null;
-
-        public InteropDesigner()
-        {
-            this.InitializeComponent();
-        }
-
-        public static Func<Type, bool> Filter
-        {
-            get 
-            {
-                if (InteropDesigner.filter == null)
-                {
-                    // We will build type name for System.Workflow.ComponentModel.Activity
-                    string typeName = typeof(Activity).AssemblyQualifiedName;
-                    typeName = typeName.Replace("System.Activities", "System.Workflow.ComponentModel");
-
-                    Type activityType = GetTypeByQualifiedName(typeName);
-                    if (activityType != null)
-                    {
-                        //Interop.Body has to be a 3.5 Activity
-                        InteropDesigner.filter = (type) => activityType.IsAssignableFrom(type);
-                    }
-                }
-
-                return InteropDesigner.filter; 
-            }
-        }
-
-        public static string InteropTypeAssemblyQualifiedName
-        {
-            get
-            {
-                if (interopTypeAssemblyQualifiedName == null)
-                {
-                    // Construct the type name dynamically to avoid hardcoding the version number and public key token.
-                    // The constructed type name should look like: "System.Activities.Statements.Interop, System.Workflow.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-                    interopTypeAssemblyQualifiedName = typeof(Parallel).AssemblyQualifiedName.Replace("Parallel", "Interop").Replace("System.Activities,", "System.Workflow.Runtime,");
-                }
-
-                return interopTypeAssemblyQualifiedName;
-            }
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            base.OnModelItemChanged(newItem);
-            this.ModelItem.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(OnModelItemPropertyChanged);
-        }
-
-        private void OnModelItemPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
-        {
-            if (e.PropertyName == "ActivityType")
-            {
-                //Whenever ActivityType property changes, the activity will generate a new set of 
-                // dynamic properties. the property browser will not pick up the changes till
-                // we select some other modelitem and then select this back.
-                // modelItem.root is theone that will be always available.
-
-                this.Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, (Action)(() =>
-                {
-                    Selection.SelectOnly(this.Context, this.ModelItem.Root);
-                }));
-                this.Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, (Action)(() =>
-                {
-                    Selection.SelectOnly(this.Context, this.ModelItem);
-                }));
-               
-            }
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type activityType = GetTypeByQualifiedName(InteropDesigner.InteropTypeAssemblyQualifiedName);
-
-            //activityType will be null in ClientSKU since System.Workflow.Runtime.dll is not a part of clientSKU.
-            if (activityType != null)
-            {
-                builder.AddCustomAttributes(activityType, new DesignerAttribute(typeof(InteropDesigner)));
-                builder.AddCustomAttributes(
-                            activityType,
-                            "ActivityType",
-                            new EditorOptionAttribute { Name = TypePropertyEditor.BrowseTypeDirectly, Value = true });
-                builder.AddCustomAttributes(
-                            activityType,
-                            "ActivityType",
-                            new EditorOptionAttribute { Name = TypePropertyEditor.Filter, Value = Filter });
-                builder.AddCustomAttributes(
-                            activityType,
-                            "ActivityType",
-                            new RefreshPropertiesAttribute(RefreshProperties.All));
-                builder.AddCustomAttributes(activityType, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-            }
-        }
-
-        // Gets a System.Type object using the type's assembly qualified name.
-        // Non-fatal exceptions are ----ed.
-        private static Type GetTypeByQualifiedName(string assemblyQualifiedName)
-        {
-            Fx.Assert(assemblyQualifiedName != null, "assemblyQualifiedName cannot be null.");
-
-            try
-            {
-                Type type = Type.GetType(assemblyQualifiedName);
-                return type;
-            }
-            catch (Exception e)
-            {
-                if (Fx.IsFatal(e))
-                {
-                    throw;
-                }
-            }
-
-            return null;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateDesigner.xaml.cs
deleted file mode 100644 (file)
index 258a912..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Windows;
-
-    internal sealed partial class InvokeDelegateDesigner
-    {
-        private const string DelegatePropertyName = "Delegate";
-        private const string DelegateArgumentsPropertyName = "DelegateArguments";
-        private const string DefaultPropertyName = "Default";
-
-        private bool isSetInternally;
-
-        public InvokeDelegateDesigner()
-        {
-            this.InitializeComponent();
-            this.chooser.Filter = IsActivityDelegate;
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            builder.AddCustomAttributes(typeof(InvokeDelegate), new DesignerAttribute(typeof(InvokeDelegateDesigner)));
-            builder.AddCustomAttributes(typeof(InvokeDelegate), new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-            builder.AddCustomAttributes(typeof(InvokeDelegate), new FeatureAttribute(typeof(InvokeDelegateValidationFeature)));
-            builder.AddCustomAttributes(typeof(InvokeDelegate), DelegatePropertyName, BrowsableAttribute.No);
-            builder.AddCustomAttributes(typeof(InvokeDelegate), DelegateArgumentsPropertyName, PropertyValueEditor.CreateEditorAttribute(typeof(DelegateArgumentsValueEditor)), BrowsableAttribute.Yes);
-            builder.AddCustomAttributes(typeof(InvokeDelegate), DefaultPropertyName, BrowsableAttribute.No);
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-
-            this.Loaded += new RoutedEventHandler(this.OnLoaded);
-            this.Unloaded += new RoutedEventHandler(this.OnUnloaded);
-        }
-
-        protected override void OnReadOnlyChanged(bool isReadOnly)
-        {
-            this.chooser.IsEnabled = !isReadOnly;
-        }
-
-        private static bool IsActivityDelegate(DynamicActivityProperty instance)
-        {
-            return instance.Type == typeof(ActivityDelegate) || instance.Type.IsSubclassOf(typeof(ActivityDelegate));
-        }
-
-        private void OnLoaded(object sender, RoutedEventArgs e)
-        {
-            if (ModelItem.Root.ItemType != typeof(ActivityBuilder))
-            {
-                return;
-            }
-
-            this.ModelItem.PropertyReferenceChanged += this.OnPropertyReferenceChanged;
-
-            this.isSetInternally = true;
-            this.chooser.Properties = ModelItem.Root.Properties["Properties"].Collection;
-            this.chooser.SelectedPropertyName = ModelItem.Properties[DelegatePropertyName].Reference;
-            this.isSetInternally = false;
-        }
-
-        private void OnUnloaded(object sender, RoutedEventArgs e)
-        {
-            this.ModelItem.PropertyReferenceChanged -= this.OnPropertyReferenceChanged;
-        }
-
-        private void OnPropertyReferenceChanged(object sender, PropertyReferenceChangedEventArgs e)
-        {
-            if (ModelItem.Root.ItemType != typeof(ActivityBuilder))
-            {
-                return;
-            }
-
-            string propertyName = this.ModelItem.Properties[DelegatePropertyName].Reference;
-
-            this.isSetInternally = true;
-            if (!string.IsNullOrEmpty(propertyName))
-            {
-                this.chooser.SelectedPropertyName = propertyName;
-            }
-            else
-            {
-                this.chooser.SelectedPropertyName = null;
-            }
-
-            this.isSetInternally = false;
-        }
-
-        private void OnSelectedPropertyNameChanged(object sender, SelectedPropertyNameChangedEventArgs e)
-        {
-            if (this.isSetInternally)
-            {
-                return;
-            }
-
-            if (ModelItem.Root.ItemType != typeof(ActivityBuilder))
-            {
-                return;
-            }
-
-            string propertyName = this.chooser.SelectedPropertyName;
-
-            if (propertyName != null && !this.chooser.IsUpdatingDropDownItems)
-            {
-                this.ModelItem.Properties[DelegatePropertyName].SetReference(propertyName);
-
-                this.FillArguments();
-            }
-        }
-
-        private void FillArguments()
-        {
-            string propertyName = PropertyReferenceUtilities.GetPropertyReference(this.ModelItem.GetCurrentValue(), DelegatePropertyName);
-
-            if (string.IsNullOrEmpty(propertyName))
-            {
-                return;
-            }
-
-            ModelTreeManager manager = this.Context.Services.GetService<ModelTreeManager>();
-            DynamicActivityProperty property = DynamicActivityPropertyUtilities.Find(manager.Root.Properties["Properties"].Collection, propertyName);
-
-            if (property == null || !property.Type.IsSubclassOf(typeof(ActivityDelegate)))
-            {
-                return;
-            }
-
-            ActivityDelegateMetadata metadata = ActivityDelegateUtilities.GetMetadata(property.Type);
-
-            ModelItemCollection collection = this.ModelItem.Properties[DelegateArgumentsPropertyName].Value.Properties["ItemsCollection"].Collection;
-
-            Type underlyingArgumentType = this.ModelItem.Properties[DelegateArgumentsPropertyName].Value.GetCurrentValue().GetType().GetGenericArguments()[1];
-            if (!typeof(Argument).IsAssignableFrom(underlyingArgumentType))
-            {
-                return;
-            }
-
-            if (collection.Count == 0)
-            {
-                using (ModelEditingScope change = collection.BeginEdit(SR.FillDelegateArguments))
-                {
-                    Type dictionaryEntryType = typeof(ModelItemKeyValuePair<,>).MakeGenericType(new Type[] { typeof(string), underlyingArgumentType });
-                    foreach (ActivityDelegateArgumentMetadata arg in metadata)
-                    {
-                        Argument argument = Argument.Create(arg.Type, arg.Direction == ActivityDelegateArgumentDirection.In ? ArgumentDirection.In : ArgumentDirection.Out);
-                        object mutableKVPair = Activator.CreateInstance(dictionaryEntryType, new object[] { arg.Name, argument });
-                        ModelItem argumentKVPair = collection.Add(mutableKVPair);
-                    }
-
-                    change.Complete();
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateValidationFeature.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeDelegateValidationFeature.cs
deleted file mode 100644 (file)
index 3446319..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Expressions;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Statements;
-    using System.Activities.Validation;
-    using System.Collections.Generic;
-    using System.Collections.ObjectModel;
-    using System.Globalization;
-    using System.Reflection;
-    using System.Runtime;
-    using System.Text;
-
-    internal class InvokeDelegateValidationFeature : DesignTimeValidationFeature
-    {
-        private List<Constraint> constraints;
-        private EditingContext editingContext;
-
-        protected override Type ApplyTo
-        {
-            get { return typeof(InvokeDelegate); }
-        }
-
-        protected override IList<Constraint> DesignTimeConstraints
-        {
-            get
-            {
-                if (this.constraints == null)
-                {
-                    this.constraints = new List<Constraint> { this.CreateCheckDelegateRule(this.editingContext) };
-                }
-
-                return this.constraints;
-            }
-        }
-
-        public override void Initialize(EditingContext context, Type modelType)
-        {
-            this.editingContext = context;
-            base.Initialize(context, modelType);
-        }
-
-        private Constraint CreateCheckDelegateRule(EditingContext editingContext)
-        {
-            DelegateInArgument<InvokeDelegate> invokeDelegate = new DelegateInArgument<InvokeDelegate>();
-            DelegateInArgument<ValidationContext> context = new DelegateInArgument<ValidationContext>();
-
-            return new Constraint<InvokeDelegate>
-            {
-                Body = new ActivityAction<InvokeDelegate, ValidationContext>
-                {
-                    Argument1 = invokeDelegate,
-                    Argument2 = context,
-                    Handler = new CheckDelegateRule
-                    {
-                        Activity = invokeDelegate,
-                        EditingContext = editingContext,
-                    }
-                }
-            };
-        }
-
-        private class CheckDelegateRule : NativeActivity
-        {
-            public CheckDelegateRule()
-            {
-                this.WarningMessageVariable = new Variable<string>();
-                this.ErrorMessageVariable = new Variable<string>();
-                this.ShowWarning = new AssertValidation()
-                {
-                    Assertion = false,
-                    IsWarning = true,
-                    Message = new VariableValue<string> { Variable = this.WarningMessageVariable }
-                };
-                this.ShowError = new AssertValidation()
-                {
-                    Assertion = false,
-                    IsWarning = false,
-                    Message = new VariableValue<string> { Variable = this.ErrorMessageVariable }
-                };
-            }
-
-            [RequiredArgument]
-            public InArgument<InvokeDelegate> Activity { get; set; }
-
-            public EditingContext EditingContext { get; set; }
-
-            private Variable<string> WarningMessageVariable { get; set; }
-
-            private Variable<string> ErrorMessageVariable { get; set; }
-
-            private AssertValidation ShowWarning { get; set; }
-
-            private AssertValidation ShowError { get; set; }
-
-            protected override void CacheMetadata(NativeActivityMetadata metadata)
-            {
-                RuntimeArgument activityArgument = new RuntimeArgument("Activity", typeof(InvokeDelegate), ArgumentDirection.In, true);
-                metadata.Bind(this.Activity, activityArgument);
-                metadata.SetArgumentsCollection(new Collection<RuntimeArgument> { activityArgument });
-
-                metadata.AddImplementationChild(this.ShowWarning);
-                metadata.AddImplementationChild(this.ShowError);
-                metadata.AddImplementationVariable(this.WarningMessageVariable);
-                metadata.AddImplementationVariable(this.ErrorMessageVariable);
-            }
-
-            protected override void Execute(NativeActivityContext context)
-            {
-                StringBuilder errorBuilder = new StringBuilder();
-                InvokeDelegate activity = this.Activity.Get(context);
-
-                string reference = PropertyReferenceUtilities.GetPropertyReference(activity, "Delegate");
-
-                if (reference != null)
-                {
-                    DynamicActivityProperty property = null;
-
-                    ModelTreeManager manager = this.EditingContext.Services.GetService<ModelTreeManager>();
-                    if (manager.Root.ItemType == typeof(ActivityBuilder))
-                    {
-                        property = DynamicActivityPropertyUtilities.Find(manager.Root.Properties["Properties"].Collection, reference);
-                    }
-
-                    if (property == null)
-                    {
-                        this.EmitValidationError(context, string.Format(CultureInfo.CurrentUICulture, SR.PropertyReferenceNotResolved, reference));
-                        return;
-                    }
-
-                    if (property.Type == typeof(ActivityDelegate))
-                    {
-                        this.EmitValidationWarning(context, string.Format(CultureInfo.CurrentUICulture, SR.PropertyIsNotAConcreteActivityDelegate, reference));
-                        return;
-                    }
-
-                    if (!property.Type.IsSubclassOf(typeof(ActivityDelegate)))
-                    {
-                        this.EmitValidationError(context, string.Format(CultureInfo.CurrentUICulture, SR.PropertyIsNotAnActivityDelegate, reference));
-                        return;
-                    }
-
-                    if (property.Type.IsAbstract)
-                    {
-                        this.EmitValidationWarning(context, string.Format(CultureInfo.CurrentUICulture, SR.PropertyIsNotAConcreteActivityDelegate, reference));
-                        return;
-                    }
-
-                    ActivityDelegateMetadata metadata = ActivityDelegateUtilities.GetMetadata(property.Type);
-
-                    if (activity.DelegateArguments.Count != metadata.Count)
-                    {
-                        this.EmitValidationWarning(context, SR.WrongNumberOfArgumentsForActivityDelegate);
-                        return;
-                    }
-
-                    foreach (ActivityDelegateArgumentMetadata expectedArgument in metadata)
-                    {
-                        Argument delegateArgument = null;
-
-                        if (activity.DelegateArguments.TryGetValue(expectedArgument.Name, out delegateArgument))
-                        {
-                            if ((expectedArgument.Direction == ActivityDelegateArgumentDirection.In && delegateArgument.Direction != ArgumentDirection.In) ||
-                                (expectedArgument.Direction == ActivityDelegateArgumentDirection.Out && delegateArgument.Direction != ArgumentDirection.Out))
-                            {
-                                errorBuilder.AppendFormat(CultureInfo.CurrentUICulture, SR.DelegateArgumentsDirectionalityMismatch, expectedArgument.Name, delegateArgument.Direction, expectedArgument.Direction);
-                            }
-
-                            if (delegateArgument.ArgumentType != expectedArgument.Type)
-                            {
-                                if (expectedArgument.Direction == ActivityDelegateArgumentDirection.In)
-                                {
-                                    if (!TypeHelper.AreTypesCompatible(delegateArgument.ArgumentType, expectedArgument.Type))
-                                    {
-                                        errorBuilder.AppendFormat(CultureInfo.CurrentUICulture, SR.DelegateInArgumentTypeMismatch, expectedArgument.Name, expectedArgument.Type, delegateArgument.ArgumentType);
-                                    }
-                                }
-                                else
-                                {
-                                    if (!TypeHelper.AreTypesCompatible(expectedArgument.Type, delegateArgument.ArgumentType))
-                                    {
-                                        errorBuilder.AppendFormat(CultureInfo.CurrentUICulture, SR.DelegateOutArgumentTypeMismatch, expectedArgument.Name, expectedArgument.Type, delegateArgument.ArgumentType);
-                                    }
-                                }
-                            }
-                        }
-                        else
-                        {
-                            errorBuilder.AppendFormat(CultureInfo.CurrentUICulture, SR.DelegateArgumentMissing, expectedArgument.Name);
-                        }
-                    }
-
-                    if (errorBuilder.Length > 0)
-                    {
-                        this.EmitValidationWarning(context, errorBuilder.ToString());
-                    }
-                }
-            }
-
-            private void EmitValidationWarning(NativeActivityContext context, string message)
-            {
-                this.WarningMessageVariable.Set(context, message);
-                context.ScheduleActivity(this.ShowWarning);
-            }
-
-            private void EmitValidationError(NativeActivityContext context, string message)
-            {
-                this.ErrorMessageVariable.Set(context, message);
-                context.ScheduleActivity(this.ShowError);
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeMethodDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/InvokeMethodDesigner.xaml.cs
deleted file mode 100644 (file)
index 1a43c14..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Expressions;
-    using System.Activities.Statements;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Activities.Presentation.View;
-
-    /// <summary>
-    /// Interaction logic for InvokeMethodDesigner.xaml
-    /// </summary>
-    partial class InvokeMethodDesigner
-    {
-        public InvokeMethodDesigner()
-        {
-            InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(InvokeMethod);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(InvokeMethodDesigner)));
-            builder.AddCustomAttributes(
-                        type,
-                        "GenericTypeArguments",
-                        PropertyValueEditor.CreateEditorAttribute(typeof(TypeCollectionPropertyEditor)),
-                        new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.AllowDuplicate, Value = true });
-            builder.AddCustomAttributes(
-                        type,
-                        "Parameters",
-                        PropertyValueEditor.CreateEditorAttribute(typeof(ArgumentCollectionPropertyEditor)));
-            builder.AddCustomAttributes(
-                        type,
-                        "TargetType",
-                        new EditorOptionAttribute { Name = TypePropertyEditor.AllowNull, Value = true },
-                        new EditorOptionAttribute { Name = TypePropertyEditor.BrowseTypeDirectly, Value = false });
-            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-
-            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) => new ArgumentAccessor[]
-            {
-                new ArgumentAccessor
-                {
-                    Getter = (ownerActivity) => ((InvokeMethod)ownerActivity).TargetObject,
-                    Setter = (ownerActivity, arg) =>
-                    {
-                        ((InvokeMethod)ownerActivity).TargetObject = arg as InArgument;
-                    },
-                },
-                new ArgumentAccessor
-                {
-                    Getter = (ownerActivity) => ((InvokeMethod)ownerActivity).Result,
-                    Setter = (ownerActivity, arg) =>
-                    {
-                        ((InvokeMethod)ownerActivity).Result = arg as OutArgument;
-                    },
-                },
-            };
-            ActivityArgumentHelper.RegisterAccessorsGenerator(type, argumentAccessorGenerator);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsLastSelectedItemConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsLastSelectedItemConverter.cs
deleted file mode 100644 (file)
index c764164..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-
-    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Justification = "Used in XAML")]
-    internal class IsLastSelectedItemConverter : IMultiValueConverter
-    {
-        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
-        {
-            int selectedItemIndex = (int)values[0];
-            int itemsCount = (int)values[1];
-         
-            if ((itemsCount - 1) == selectedItemIndex)
-            {
-                return true;
-            }
-  
-            return false;
-        }
-
-        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotImplementedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsStateRootDesignerConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/IsStateRootDesignerConverter.cs
deleted file mode 100644 (file)
index 2e63ebf..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Globalization;
-    using System.Windows.Data;
-
-    // This converter is used to resolve Bug 198561 and 216429.
-    // originally, using "IsRootDesigner" and the binding path directly would cause Bug 201214,
-    // as a workaround, we resolved to use "ShowExpanded" as the binding path, but this cause Bug 216429.
-    // The resolution would require us to go back to "IsRootDesigner" as the binding path. But
-    // we would need to use a converter in between, and thus we made this converter
-    internal sealed class IsStateRootDesignerConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            WorkflowViewElement workflowViewElement = value as WorkflowViewElement;
-
-            if (null != workflowViewElement)
-            {
-                return workflowViewElement.IsRootDesigner;
-            }
-
-            return false;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotSupportedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/LocationChangedEventArgs.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/LocationChangedEventArgs.cs
deleted file mode 100644 (file)
index ba5a798..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Windows;
-    using System.Runtime;
-
-    [Fx.Tag.XamlVisible(false)]
-    public class LocationChangedEventArgs : EventArgs
-    {
-        Point newLocation;
-               
-        public LocationChangedEventArgs(Point newLocation)
-        {
-            this.newLocation = newLocation;
-        }
-
-        public Point NewLocation
-        {
-            get
-            {
-                return this.newLocation;
-            }
-        }
-    }
-
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MaxValueConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MaxValueConverter.cs
deleted file mode 100644 (file)
index 5fcf702..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Globalization;
-    using System.Windows.Data;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Statements;
-
-    //Returns the maximum of input values. Input values should be of type double.
-    class MaxValueConverter : IMultiValueConverter
-    {
-        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
-        {
-            double maxValue = double.MinValue;
-            foreach (object value in values)
-            {
-                double val = (double)value;
-                if (!double.IsNaN(val) && val > maxValue)
-                {
-                    maxValue = val;
-                }
-            }
-            if (maxValue == double.MinValue)
-            {
-                maxValue = double.NaN;
-            }
-            return maxValue;
-        }
-
-        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotSupportedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MorphHelpers.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/MorphHelpers.cs
deleted file mode 100644 (file)
index 11ae939..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.Hosting;
-    using System.ComponentModel;
-    using Microsoft.VisualBasic.Activities;
-    using System.Runtime;
-    using System.Linq;
-    using System.Activities.Expressions;
-    using System.Activities.Presentation.View;
-    using System.Collections.Generic;
-    using System.Activities.ExpressionParser;
-    using System.Diagnostics;
-    using System.Globalization;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Reflection;
-    using System.IO;
-    using System.Activities.Presentation;
-    using System.Windows;
-
-    static class MorphHelpers
-    {
-
-        public static object ArgumentMorphHelper(ModelItem originalValue, ModelProperty newModelProperty)
-        {
-            Type expressionTypeArgument = newModelProperty.PropertyType.GetGenericArguments()[0];
-
-            return MorphArgument(originalValue, expressionTypeArgument);
-        }
-
-        internal static Argument MorphArgument(ModelItem originalValue, Type targetType)
-        {
-            Argument morphed = null;
-            Argument original = (Argument)originalValue.GetCurrentValue();
-            ActivityWithResult originalExpression = original.Expression;
-            
-            if (originalExpression != null)
-            {
-                Type expressionType = originalExpression.GetType();
-                Type expressionGenericType = expressionType.IsGenericType ? expressionType.GetGenericTypeDefinition() : null;
-
-                if (expressionGenericType != null)
-                {       
-                    bool isLocation = ExpressionHelper.IsGenericLocationExpressionType(originalExpression);
-                    ActivityWithResult morphedExpression;
-                    EditingContext context = originalValue.GetEditingContext();
-                    morphed = Argument.Create(targetType, original.Direction);
-                    if (ExpressionHelper.TryMorphExpression(originalExpression, isLocation, targetType, 
-                        context, out morphedExpression))
-                    {                        
-                        morphed.Expression = morphedExpression;
-                    }
-                    //[....] 
-
-                }
-            }
-            return morphed;
-        }
-
-        public static object ActivityActionMorphHelper(ModelItem originalValue, ModelProperty newModelProperty)
-        {
-            Fx.Assert(newModelProperty.PropertyType.GetGenericArguments().Count() == 1, "This should only be applied for ActivityAction<T>");
-            Type activityActionTypeArgument = newModelProperty.PropertyType.GetGenericArguments()[0];
-            Type activityActionType = typeof(ActivityAction<>).MakeGenericType(activityActionTypeArgument);
-            object activityAction = Activator.CreateInstance(activityActionType);
-            ModelItem morphed = ModelFactory.CreateItem(originalValue.GetEditingContext(), activityAction);
-
-            ModelItem originalActivityActionArgument = originalValue.Properties[PropertyNames.ActionArgument].Value;
-            if (originalActivityActionArgument != null)
-            {
-                Type variableType = typeof(DelegateInArgument<>).MakeGenericType(activityActionTypeArgument);
-                DelegateInArgument iterationDelegateArgument = (DelegateInArgument)Activator.CreateInstance(variableType);
-                iterationDelegateArgument.Name = (string)originalActivityActionArgument.Properties[PropertyNames.NameProperty].Value.GetCurrentValue();
-                morphed.Properties[PropertyNames.ActionArgument].SetValue(iterationDelegateArgument);
-            }
-
-            ModelItem originalActivityActionHandler = originalValue.Properties[PropertyNames.ActionHandler].Value;
-            if (originalActivityActionHandler != null)
-            {
-                morphed.Properties[PropertyNames.ActionHandler].SetValue(originalActivityActionHandler);
-                originalValue.Properties[PropertyNames.ActionHandler].SetValue(null);
-            }
-
-            return morphed;
-        }
-
-        public static object ActivityFuncMorphHelper(ModelItem originalValue, ModelProperty newModelProperty)
-        {
-            Fx.Assert(newModelProperty.PropertyType.GetGenericArguments().Count() == 2, "This should only be applied for ActivityFunc<TArgument, TResult>");
-            Type activityFuncArgumentType = newModelProperty.PropertyType.GetGenericArguments()[0];
-            Type activityFuncResultType = newModelProperty.PropertyType.GetGenericArguments()[1];
-            Type activityFuncType = typeof(ActivityFunc<,>).MakeGenericType(activityFuncArgumentType, activityFuncResultType);
-            object activityFunc = Activator.CreateInstance(activityFuncType);
-            ModelItem morphed = ModelFactory.CreateItem(originalValue.GetEditingContext(), activityFunc);
-
-            ModelItem originalActivityFuncArgument = originalValue.Properties[PropertyNames.ActionArgument].Value;
-            if (originalActivityFuncArgument != null)
-            {
-                Type argumentType = typeof(DelegateInArgument<>).MakeGenericType(activityFuncArgumentType);
-                DelegateInArgument newActivityActionArgument = (DelegateInArgument)Activator.CreateInstance(argumentType);
-                newActivityActionArgument.Name = (string)originalActivityFuncArgument.Properties[PropertyNames.NameProperty].Value.GetCurrentValue();
-                morphed.Properties[PropertyNames.ActionArgument].SetValue(newActivityActionArgument);
-            }
-
-            ModelItem originalActivityFuncResult = originalValue.Properties[PropertyNames.ResultProperty].Value;
-            if (originalActivityFuncResult != null)
-            {
-                Type resultType = typeof(DelegateOutArgument<>).MakeGenericType(activityFuncResultType);
-                DelegateOutArgument newActivityActionResult = (DelegateOutArgument)Activator.CreateInstance(resultType);
-                newActivityActionResult.Name = (string)originalActivityFuncResult.Properties[PropertyNames.NameProperty].Value.GetCurrentValue();
-                morphed.Properties[PropertyNames.ResultProperty].SetValue(newActivityActionResult);
-            }
-
-            ModelItem originalActivityActionHandler = originalValue.Properties[PropertyNames.ActionHandler].Value;
-            if (originalActivityActionHandler != null)
-            {
-                morphed.Properties[PropertyNames.ActionHandler].SetValue(originalActivityActionHandler);
-                originalValue.Properties[PropertyNames.ActionHandler].SetValue(null);
-            }
-
-            return morphed;
-        }
-
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NoPersistScopeDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NoPersistScopeDesigner.xaml.cs
deleted file mode 100644 (file)
index 67d5cc7..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-
-    partial class NoPersistScopeDesigner
-    {
-        public const string BodyPropertyName = "Body";
-
-        public NoPersistScopeDesigner()
-        {
-            InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(NoPersistScope);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(NoPersistScopeDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty(NoPersistScopeDesigner.BodyPropertyName), BrowsableAttribute.No);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NotConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/NotConverter.cs
deleted file mode 100644 (file)
index daf2262..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    // Code borrowed from System.Activities.Presentation
-
-    using System;
-    using System.ComponentModel;
-    using System.Windows;
-    using System.Windows.Data;
-    using System.Globalization;
-    using System.Reflection;
-    using System.Diagnostics.CodeAnalysis;
-
-    // <summary>
-    // Transform bool value using logical not.
-    // </summary>
-    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
-    internal sealed class NotConverter : IValueConverter
-    {
-        // IValueConverter Members
-
-        public object Convert(object o, Type targetType, object parameter, CultureInfo culture)
-        {
-            return !(bool)o;
-        }
-
-        public object ConvertBack(object o, Type targetType, object parameter, CultureInfo culture)
-        {
-            return !AssureBool(o, false);
-        }
-
-        static bool AssureBool(object value, bool defaultIfNull)
-        {
-            if (value is bool?)
-            {
-                bool? nbValue = (bool?)value;
-
-                if (nbValue.HasValue)
-                {
-                    return nbValue.Value;
-                }
-                else
-                {
-                    return defaultIfNull;
-                }
-            }
-
-            return (bool)value;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelDesigner.xaml.cs
deleted file mode 100644 (file)
index 43df03d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-
-    // <summary>
-    // Paralle Designer
-    // </summary>
-    partial class ParallelDesigner
-    {
-        public ParallelDesigner()
-        {
-            InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(Parallel);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(ParallelDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Branches"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
-
-            builder.AddCustomAttributes(type, type.GetProperty("Branches"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false });
-            builder.AddCustomAttributes(type, type.GetProperty("CompletionCondition"), new HidePropertyInOutlineViewAttribute());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelSeparator.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ParallelSeparator.xaml.cs
deleted file mode 100644 (file)
index c917004..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Hosting;
-    using System.Windows;
-    using System.Windows.Media.Animation;
-
-    partial class ParallelSeparator
-    {
-        public static readonly DependencyProperty AllowedItemTypeProperty =
-            DependencyProperty.Register("AllowedItemType", typeof(Type), typeof(ParallelSeparator), new UIPropertyMetadata(typeof(object)));
-
-        public static readonly DependencyProperty ContextProperty = DependencyProperty.Register(
-            "Context",
-            typeof(EditingContext),
-            typeof(ParallelSeparator));
-
-        public ParallelSeparator()
-        {
-            this.InitializeComponent();
-        }
-
-        public Type AllowedItemType
-        {
-            get { return (Type)GetValue(AllowedItemTypeProperty); }
-            set { SetValue(AllowedItemTypeProperty, value); }
-        }
-
-        public EditingContext Context
-        {
-            get { return (EditingContext)GetValue(ContextProperty); }
-            set { SetValue(ContextProperty, value); }
-        }
-
-        protected override void OnDragEnter(DragEventArgs e)
-        {
-            CheckAnimate(e, "Expand");
-            this.dropTarget.Visibility = Visibility.Visible;
-        }
-
-        protected override void OnDragLeave(DragEventArgs e)
-        {
-            CheckAnimate(e, "Collapse");
-            this.dropTarget.Visibility = Visibility.Collapsed;
-        }
-
-        protected override void OnDrop(DragEventArgs e)
-        {
-            this.dropTarget.Visibility = Visibility.Collapsed;
-            base.OnDrop(e);
-        }
-
-        void CheckAnimate(DragEventArgs e, string storyboardResourceName)
-        {
-            if (!e.Handled)
-            {
-                if (!this.Context.Items.GetValue<ReadOnlyState>().IsReadOnly &&
-                    DragDropHelper.AllowDrop(e.Data, this.Context, this.AllowedItemType))
-                {
-                    BeginStoryboard((Storyboard)this.Resources[storyboardResourceName]);
-                    return;
-                }
-                else
-                {
-                    e.Effects = DragDropEffects.None;
-                }
-                e.Handled = true;
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickBranchDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickBranchDesigner.xaml.cs
deleted file mode 100644 (file)
index 3a3ca97..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    
-
-    /// <summary>
-    /// Interaction logic for PickBranchDesigner.xaml
-    /// </summary>
-    partial class PickBranchDesigner
-    {
-        public PickBranchDesigner()
-        {
-            this.InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(PickBranch);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(PickBranchDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Action"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Trigger"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, new ShowInOutlineViewAttribute());
-        }
-
-        protected override string GetAutomationIdMemberName()
-        {
-            return "DisplayName";
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickDesigner.xaml.cs
deleted file mode 100644 (file)
index a5eb93b..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Input;
-
-    partial class PickDesigner
-    {
-        public static readonly RoutedCommand CreateBranchCommand = new RoutedCommand("CreateBranchCommand", typeof(PickDesigner));
-        WorkflowItemsPresenter branchesPresenter;
-
-        public PickDesigner()
-        {
-            this.InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(System.Activities.Statements.Pick);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(PickDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Branches"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Branches"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false });
-            builder.AddCustomAttributes(type, new FeatureAttribute(typeof(PickValidationErrorSourceLocatorFeature)));
-        }
-
-        void OnBranchesPresenterLoaded(object sender, RoutedEventArgs e)
-        {
-            this.branchesPresenter = (WorkflowItemsPresenter)sender;
-        }
-
-        void OnBranchesPresenterUnloaded(object sender, RoutedEventArgs e)
-        {
-            this.branchesPresenter = null;
-        }
-
-        void OnCreateBranchCommandExecute(object sender, ExecutedRoutedEventArgs e)
-        {
-            if (!e.Handled)
-            {
-                // Simulate a PickBranch being drop onto the Branches WIsP.
-                object instance = DragDropHelper.GetDroppedObjectInstance(this.branchesPresenter, this.Context, typeof(PickBranch), null);
-                if (instance != null)
-                {
-                    this.ModelItem.Properties["Branches"].Collection.Add(instance);
-                }
-                e.Handled = true;
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocator.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocator.cs
deleted file mode 100644 (file)
index 806d183..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-// <copyright>
-//   Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Validation;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-
-    internal class PickValidationErrorSourceLocator : IValidationErrorSourceLocator
-    {
-        public List<object> FindSourceDetailFromActivity(Activity errorSource, object errorSourceDetail)
-        {
-            if (errorSourceDetail == null)
-            {
-                return new List<object> { errorSource };
-            }
-            else
-            {
-                return FindRelativePath((Pick)errorSource, errorSourceDetail);
-            }
-        }
-
-        public void ReplaceParentChainWithSource(Activity parentActivity, List<object> parentChain)
-        {
-            Pick pick = (Pick)parentActivity;
-
-            if (parentChain.Count > 1)
-            {
-                // assume last object in parentChain is PickBranchBody
-
-                // remove PickBranchBody
-                parentChain.RemoveAt(parentChain.Count - 1);
-
-                Activity targetActivity = (Activity)parentChain[parentChain.Count - 1];
-
-                // the targetActivity will be available in the path
-                parentChain.RemoveAt(parentChain.Count - 1);
-
-                List<object> path = FindRelativePath(pick, targetActivity);
-
-                foreach (object pathObject in path)
-                {
-                    parentChain.Add(pathObject);
-                }
-            }
-        }
-
-        private static List<object> FindRelativePath(Pick pickActivity, object descendent)
-        {
-            List<object> path = FindDescendentFromPick(pickActivity, descendent);
-            path.Reverse();
-            return path;
-        }
-
-        private static List<object> FindDescendentFromPick(Pick pickActivity, object descendent)
-        {
-            List<object> path = new List<object>();
-            path.Add(pickActivity);
-            foreach (PickBranch branch in pickActivity.Branches)
-            {
-                if (branch == descendent)
-                {
-                    break;
-                }
-                else if (branch.Trigger == descendent)
-                {
-                    path.Add(branch);
-                    break;
-                }
-                else if (branch.Action == descendent)
-                {
-                    path.Add(branch);
-                    break;
-                }
-                else
-                {
-                    bool isVariableError = false;
-                    foreach (Variable variable in branch.Variables)
-                    {
-                        if (variable.Default == descendent)
-                        {
-                            isVariableError = true;
-                            break;
-                        }
-                    }
-
-                    if (isVariableError)
-                    {
-                        path.Add(branch);
-                        break;
-                    }
-                }
-            }
-
-            path.Add(descendent);
-            return path;
-        }       
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocatorFeature.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PickValidationErrorSourceLocatorFeature.cs
deleted file mode 100644 (file)
index d9ca5d2..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-// <copyright>
-//   Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Validation;
-
-    internal class PickValidationErrorSourceLocatorFeature : ValidationErrorSourceLocatorFeature
-    {
-        protected override IValidationErrorSourceLocator ValidationErrorSourceLocator
-        {
-            get { return new PickValidationErrorSourceLocator(); }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PropertyNames.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/PropertyNames.cs
deleted file mode 100644 (file)
index 4a02db0..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-
-    // This class is holding names of the used property names, so access to model item's 
-    // properties collection is somehow "strongly typed"
-    internal static class PropertyNames
-    {
-        public readonly static string ObjectInitializationAction = "InitializationAction";
-        public readonly static string Action = "Action";
-        public readonly static string ActionArgument = "Argument";
-        public readonly static string ActionArgument1 = "Argument1";
-        public readonly static string ActionArgument2 = "Argument2";
-        public readonly static string ActionHandler = "Handler";
-        public readonly static string AssignSequence = "Activities";
-        public readonly static string VarDataReader = "dbDataReader";
-        public readonly static string VarRecord = "resultObject";
-        public readonly static string NameProperty = "Name";
-        public readonly static string AssignTo = "To";
-        public readonly static string AssignValue = "Value";
-        public readonly static string DisplayName = "DisplayName";
-        public readonly static string Parameters = "Parameters";
-        public readonly static string ArgumentName = "DynamicParameterName";
-        public readonly static string Expression = "Expression";
-        public readonly static string VBExpressionText = "ExpressionText";
-        public readonly static string ConnectionContext = "ConnectionContext";
-        public readonly static string ResultsCollection = "Results";
-        public readonly static string RowsAffected = "RowsAffected";
-        public readonly static string ParameterDirection = "Direction";
-        public readonly static string ArgumentType = "ArgumentType";
-        public readonly static string Body = "Body";
-        public readonly static string ExceptionType = "ExceptionType";
-        public readonly static string ResultProperty = "Result";
-
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/RegisterMetadataDelayedWorker.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/RegisterMetadataDelayedWorker.cs
deleted file mode 100644 (file)
index 29a550c..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-// <copyright>
-//   Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Metadata;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Reflection;
-    using System.Runtime;
-
-    internal class RegisterMetadataDelayedWorker
-    {
-        private Dictionary<string, List<Action<AttributeTableBuilder>>> delayedWorkItems;
-        private AssemblyLoadEventHandler onAssemblyLoadedEventHandler;
-
-        public Dictionary<string, List<Action<AttributeTableBuilder>>> DelayedWorkItems
-        {
-            get
-            {
-                if (this.delayedWorkItems == null)
-                {
-                    this.delayedWorkItems = new Dictionary<string, List<Action<AttributeTableBuilder>>>();
-                }
-
-                return this.delayedWorkItems;
-            }
-        }
-
-        public void RegisterMetadataDelayed(string assemblyName, Action<AttributeTableBuilder> delayedWork)
-        {
-            Fx.Assert(assemblyName != null, "Checked by caller");
-            Fx.Assert(delayedWork != null, "Checked by caller");
-            if (this.onAssemblyLoadedEventHandler == null)
-            {
-                this.onAssemblyLoadedEventHandler = new AssemblyLoadEventHandler(this.OnAssemblyLoaded);
-                AppDomain.CurrentDomain.AssemblyLoad += this.onAssemblyLoadedEventHandler;
-            }
-
-            List<Action<AttributeTableBuilder>> currentDelayedWorkItems;
-            if (!this.DelayedWorkItems.TryGetValue(assemblyName, out currentDelayedWorkItems))
-            {
-                currentDelayedWorkItems = new List<Action<AttributeTableBuilder>>();
-                this.DelayedWorkItems.Add(assemblyName, currentDelayedWorkItems);
-            }
-
-            currentDelayedWorkItems.Add(delayedWork);
-        }
-
-        public void WorkNowIfApplicable()
-        {
-            foreach (Assembly loadedAssembly in AppDomain.CurrentDomain.GetAssemblies())
-            {
-                this.CheckAndWork(loadedAssembly);
-            }
-        }
-
-        private void OnAssemblyLoaded(object sender, AssemblyLoadEventArgs args)
-        {
-            try
-            {
-                this.CheckAndWork(args.LoadedAssembly);
-            }
-            catch
-            {
-                Fx.AssertAndFailFast("OnAssemblyLoad should not throw exception");
-                throw;
-            }
-        }
-
-        private void CheckAndWork(Assembly loadedAssembly)
-        {
-            List<Action<AttributeTableBuilder>> currentDelayedWorkItems;
-            if (this.DelayedWorkItems.TryGetValue(loadedAssembly.GetName().Name, out currentDelayedWorkItems))
-            {
-                Action delayedRegisterMetadataWork = new DelayedRegisterMetadataWorkContext(currentDelayedWorkItems).Work;
-
-                // Retrieve the top level type descriptor from the stack
-                TypeDescriptionProvider currentTypeDescriptor = TypeDescriptor.GetProvider(typeof(object));
-
-                // Intercept any existing changes.
-                TypeDescriptor.AddProvider(new TypeDescriptionProviderInterceptor(currentTypeDescriptor, delayedRegisterMetadataWork), typeof(object));
-            }
-        }
-
-        private class DelayedRegisterMetadataWorkContext
-        {
-            private List<Action<AttributeTableBuilder>> currentDelayedWorkItems;
-
-            public DelayedRegisterMetadataWorkContext(List<Action<AttributeTableBuilder>> currentDelayedWorkItems)
-            {
-                this.currentDelayedWorkItems = currentDelayedWorkItems;
-            }
-
-            public void Work()
-            {
-                AttributeTableBuilder builder = new AttributeTableBuilder();
-                foreach (Action<AttributeTableBuilder> delayedWork in this.currentDelayedWorkItems)
-                {
-                    delayedWork(builder);
-                }
-
-                MetadataStore.AddSystemAttributeTable(builder.CreateTable());
-            }
-        }
-
-        private class TypeDescriptionProviderInterceptor : TypeDescriptionProvider
-        {
-            private Action interceptingWork;
-
-            public TypeDescriptionProviderInterceptor(TypeDescriptionProvider parent, Action interceptingWork)
-                : base(parent)
-            {
-                this.interceptingWork = interceptingWork;
-            }
-
-            public override object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args)
-            {
-                this.PerformInterceptingWork();
-                return base.CreateInstance(provider, objectType, argTypes, args);
-            }
-
-            public override IDictionary GetCache(object instance)
-            {
-                this.PerformInterceptingWork();
-                return base.GetCache(instance);
-            }
-
-            public override ICustomTypeDescriptor GetExtendedTypeDescriptor(object instance)
-            {
-                this.PerformInterceptingWork();
-                return base.GetExtendedTypeDescriptor(instance);
-            }
-
-            public override string GetFullComponentName(object component)
-            {
-                this.PerformInterceptingWork();
-                return base.GetFullComponentName(component);
-            }
-
-            public override Type GetReflectionType(Type objectType, object instance)
-            {
-                this.PerformInterceptingWork();
-                return base.GetReflectionType(objectType, instance);
-            }
-
-            public override Type GetRuntimeType(Type reflectionType)
-            {
-                this.PerformInterceptingWork();
-                return base.GetRuntimeType(reflectionType);
-            }
-
-            public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
-            {
-                this.PerformInterceptingWork();
-                return base.GetTypeDescriptor(objectType, instance);
-            }
-
-            public override bool IsSupportedType(Type type)
-            {
-                this.PerformInterceptingWork();
-                return base.IsSupportedType(type);
-            }
-
-            private void PerformInterceptingWork()
-            {
-                // Make sure the intercepting work is done only once.
-                TypeDescriptor.RemoveProvider(this, typeof(object));
-                if (this.interceptingWork != null)
-                {
-                    this.interceptingWork();
-                    this.interceptingWork = null;
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ReorderableListEditor.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/ReorderableListEditor.xaml.cs
deleted file mode 100644 (file)
index f82f69f..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Internal.PropertyEditing;
-    using System.Collections.ObjectModel;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Input;
-
-    internal partial class ReorderableListEditor : UserControl
-    {
-        public static readonly DependencyProperty ItemTemplateProperty = DependencyProperty.Register("ItemTemplate", typeof(DataTemplate), typeof(ReorderableListEditor), new PropertyMetadata(null));
-        public static readonly DependencyProperty ListProperty = DependencyProperty.Register("List", typeof(ObservableCollection<ExpandableItemWrapper>), typeof(ReorderableListEditor), new PropertyMetadata(null));
-        public static readonly DependencyProperty SelectedListItemProperty = DependencyProperty.Register("SelectedListItem", typeof(ExpandableItemWrapper), typeof(ReorderableListEditor), new PropertyMetadata(null));
-
-        public ReorderableListEditor()
-        {
-            this.InitializeComponent();
-        }
-        
-        public DataTemplate ItemTemplate
-        {
-            get { return (DataTemplate)this.GetValue(ItemTemplateProperty); }
-            set { this.SetValue(ItemTemplateProperty, value); }
-        }
-
-        public ObservableCollection<ExpandableItemWrapper> List
-        {
-            get { return (ObservableCollection<ExpandableItemWrapper>)this.GetValue(ListProperty); }
-            set { this.SetValue(ListProperty, value); }
-        }
-
-        public ExpandableItemWrapper SelectedListItem
-        {
-            get { return (ExpandableItemWrapper)this.GetValue(SelectedListItemProperty); }
-            set { this.SetValue(SelectedListItemProperty, value); }
-        }
-
-        protected override void OnIsKeyboardFocusWithinChanged(DependencyPropertyChangedEventArgs e)
-        {
-            if (!this.listBox.IsKeyboardFocusWithin)
-            {
-                this.listBox.UnselectAll();
-            }
-
-            base.OnIsKeyboardFocusWithinChanged(e);
-        }
-
-        private void OnListBoxPreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
-        {
-            ListBoxItem item = VisualTreeUtils.FindVisualAncestor<ListBoxItem>(e.OriginalSource as DependencyObject);
-
-            if (item != null)
-            {
-                this.SelectedListItem = item.Content as ExpandableItemWrapper;
-            }
-        }
-
-        private void OnUpArrowClicked(object sender, RoutedEventArgs e)
-        {
-            int oldIndex = this.List.IndexOf(this.SelectedListItem);
-            if (oldIndex > 0)
-            {
-                this.List.Move(oldIndex, oldIndex - 1);
-            }
-        }
-
-        private void OnDownArrowClicked(object sender, RoutedEventArgs e)
-        {
-            int oldIndex = this.List.IndexOf(this.SelectedListItem);
-            if (oldIndex < this.List.Count - 1)
-            {
-                this.List.Move(oldIndex, oldIndex + 1);
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SelectedPropertyNameChangedEventArgs.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SelectedPropertyNameChangedEventArgs.cs
deleted file mode 100644 (file)
index c8bde67..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    internal delegate void SelectedPropertyNameChangedEventHandler(object sender, SelectedPropertyNameChangedEventArgs e);
-
-    internal sealed class SelectedPropertyNameChangedEventArgs : EventArgs
-    {
-        public SelectedPropertyNameChangedEventArgs(string propertyName)
-        {
-            this.PropertyName = propertyName;
-        }
-
-        public string PropertyName
-        {
-            get;
-            private set;
-        }
-    }   
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SequenceDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SequenceDesigner.xaml.cs
deleted file mode 100644 (file)
index 4eaba3a..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-
-    partial class SequenceDesigner
-    {
-        const string ExpandViewStateKey = "IsExpanded";
-
-        public SequenceDesigner()
-        {
-            this.InitializeComponent();
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            // Make sequence designer always expand by default, but only if the user didnt explicitly specify collapsed or expanded.
-            ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
-            if (viewStateService != null)
-            {
-                bool? isExpanded = (bool?)viewStateService.RetrieveViewState((ModelItem)newItem, ExpandViewStateKey);
-                if (isExpanded == null)
-                {
-                    viewStateService.StoreViewState((ModelItem)newItem, ExpandViewStateKey, true);
-                }
-            }
-            base.OnModelItemChanged(newItem);
-
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(Sequence);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(SequenceDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Activities"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Activities"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false });
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartNode.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartNode.cs
deleted file mode 100644 (file)
index 24e7498..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    class StartNode
-    {
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartSymbol.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StartSymbol.xaml.cs
deleted file mode 100644 (file)
index 8f7f6e1..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Linq;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Input;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.Model;
-
-    partial class StartSymbol
-    {
-
-        public static readonly DependencyProperty TextProperty =
-            DependencyProperty.Register("Text", typeof(string), typeof(StartSymbol));
-
-        public string Text
-        {
-            get { return (string)GetValue(TextProperty); }
-            set { SetValue(TextProperty, value); }
-        }
-
-        public static StartSymbol CreateStartSymbol(EditingContext context)
-        {
-            StartSymbol start = new StartSymbol();
-            FakeRoot fakeRoot = new FakeRoot { StartNode = new StartNode() };
-            ModelTreeManager manager = context.Services.GetService<ModelTreeManager>();
-            start.ModelItem = new FakeModelItemImpl(manager, typeof(FakeRoot), fakeRoot, null).Properties["StartNode"].Value;
-            start.Name = "StartSymbol";
-            start.Focusable = true;
-            start.Context = context;
-            start.DataContext = start;
-            return start;
-        }
-
-        StartSymbol()
-        {
-            InitializeComponent();
-        }
-
-        protected override void OnContextMenuOpening(ContextMenuEventArgs e)
-        {
-            e.Handled = true;
-        }
-
-        protected override void OnPreviewKeyDown(KeyEventArgs e)
-        {
-            if (e.Key == Key.Delete)
-            {
-                Selection selection = this.Context.Items.GetValue<Selection>();
-
-                if (selection.SelectionCount == 1)
-                {
-                    Fx.Assert(selection.PrimarySelection.Parent.ItemType == typeof(FakeRoot), "StartNode should have a fakeroot.");
-                    // Avoid calling the delete command, if only the start node is selected.
-                    e.Handled = true;
-                }
-            }
-
-            base.OnPreviewKeyDown(e);
-        }
-    }
-
-
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateConnectionPointToolTip.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateConnectionPointToolTip.xaml.cs
deleted file mode 100644 (file)
index 4e775a5..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//------------------------------------------------------------------------------
-// <copyright file="StateConnectionPointToolTip.cs" company="Microsoft">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//------------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Linq;
-    using System.Text;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Documents;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Windows.Media.Imaging;
-    using System.Windows.Navigation;
-    using System.Windows.Shapes;
-
-    /// <summary>
-    /// Interaction logic for StateConnectionPointToolTip.xaml
-    /// </summary>
-    internal partial class StateConnectionPointToolTip : UserControl
-    {
-        public StateConnectionPointToolTip()
-        {
-            this.InitializeComponent();
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.CompositeView.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.CompositeView.cs
deleted file mode 100644 (file)
index 057ece5..0000000
+++ /dev/null
@@ -1,594 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.Internal.PropertyEditing;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-    using System.Globalization;
-    using System.IO;
-    using System.Linq;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Windows.Threading;
-    using System.Xaml;
-
-    partial class StateContainerEditor : IMultipleDragEnabledCompositeView
-    {
-        public static readonly DependencyProperty DroppingTypeResolvingOptionsProperty =
-            DependencyProperty.Register("DroppingTypeResolvingOptions", typeof(TypeResolvingOptions), typeof(StateContainerEditor));
-
-        public TypeResolvingOptions DroppingTypeResolvingOptions
-        {
-            get { return (TypeResolvingOptions)GetValue(DroppingTypeResolvingOptionsProperty); }
-            set { SetValue(DroppingTypeResolvingOptionsProperty, value); }
-        }
-
-        public bool IsDefaultContainer
-        {
-            get { return true; }
-        }        
-
-        public void OnItemMoved(ModelItem modelItem)
-        {
-            Fx.Assert(this.modelItemToUIElement.ContainsKey(modelItem), "Moved item does not exist.");
-            this.DoDeleteItems(new List<ModelItem> { modelItem }, false);
-        }
-
-        public object OnItemsCopied(List<ModelItem> itemsToCopy)
-        {
-            itemsToCopy.Remove(this.initialModelItem);
-
-            // If the item copied is Transition, save its destination state guid to find the destination state when pasting.
-            if (itemsToCopy.Count == 1)
-            {
-                ModelItem item = itemsToCopy.First();
-                if (item != null && item.ItemType == typeof(Transition))
-                {
-                    ModelItem destinationState = item.Properties[TransitionDesigner.ToPropertyName].Value;
-
-                    if (!modelItemToGuid.ContainsKey(destinationState))
-                    {
-                        modelItemToGuid.Add(destinationState, Guid.NewGuid().ToString());
-                    }
-
-                    CopiedTransitionDestinationState = destinationState;
-                    return modelItemToGuid[destinationState];
-                }
-            }
-
-            itemsToCopy.RemoveAll(item => item.ItemType == typeof(Transition));
-
-            // Save the locations of copied items relative to the statemachine editor to the metadata.
-            // The metadata will be used to translate the location view states of pasted items to the pasting target.
-            PointCollection metaData = new PointCollection();
-            foreach (ModelItem modelItem in itemsToCopy)
-            {
-                object viewState = this.ViewStateService.RetrieveViewState(modelItem, ShapeLocationViewStateKey);
-                Point location = (Point)viewState;
-                StateContainerEditor parentDesigner = VisualTreeUtils.FindVisualAncestor<StateContainerEditor>(GetStateView(modelItem));
-                location = parentDesigner.panel.GetLocationRelativeToOutmostPanel(location);
-                metaData.Add(location);
-            }
-            
-            CopiedTransitionDestinationState = null;
-            return metaData;
-        }
-
-        public object OnItemsCut(List<ModelItem> itemsToCut)
-        {
-            object metaData = OnItemsCopied(itemsToCut);
-            this.OnItemsDelete(itemsToCut);
-            return metaData;
-        }
-
-        public void OnItemsDelete(List<ModelItem> itemsToDelete)
-        {
-            DoDeleteItems(itemsToDelete, true);
-        }
-
-        void DoDeleteItems(List<ModelItem> itemsToDelete, bool removeIncomingConnectors)
-        {
-            itemsToDelete.Remove(this.initialModelItem);
-
-            if (itemsToDelete.Count == 1 && itemsToDelete.First().ItemType == typeof(Transition))
-            {
-                this.DeleteConnectorModelItem(this.selectedConnector);
-                return;
-            }
-
-            itemsToDelete.RemoveAll(item => item.ItemType == typeof(Transition));
-
-            HashSet<Connector> connectorsToDelete = new HashSet<Connector>();
-            List<ModelItem> allStateModelItemsToDelete = new List<ModelItem>();
-            IEnumerable<ModelItem> selectedStateModelItems = this.Context.Items.GetValue<Selection>().SelectedObjects
-                .Where<ModelItem>((p) => { return p.ItemType == typeof(State); });
-
-            foreach (ModelItem stateModelItem in itemsToDelete)
-            {
-                allStateModelItemsToDelete.Add(stateModelItem);                
-            }
-
-            foreach (ModelItem modelItem in allStateModelItemsToDelete)
-            {
-                // We only need to delete incoming connectors to the states to be deleted; outgoing connectors will be deleted
-                // automatically when the containing state is deleted.
-                List<Connector> incomingConnectors = StateContainerEditor.GetIncomingConnectors(GetStateView(modelItem));
-                foreach (Connector connector in incomingConnectors)
-                {
-                    ModelItem transitionModelItem = StateContainerEditor.GetConnectorModelItem(connector);
-                    // If the transition is contained by the states to delete, we don't bother to delete it separately.
-                    if (!StateContainerEditor.IsTransitionModelItemContainedByStateModelItems(transitionModelItem, selectedStateModelItems))
-                    {
-                        connectorsToDelete.Add(connector);
-                    }
-                }
-            }
-
-            // If we don't need to remove incoming connectors, we still remove the transitions but then add them back later.
-            // This is in order to create an undo unit that contains the change notifications needed to make undo/redo work correctly.
-            foreach (Connector connector in connectorsToDelete)
-            {
-                ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(connector);
-                if (removeIncomingConnectors || connectorModelItem.ItemType == typeof(Transition))
-                {
-                    this.DeleteConnectorModelItem(connector);
-                }
-            }
-            if (!removeIncomingConnectors)
-            {
-                foreach (Connector connector in connectorsToDelete)
-                {
-                    ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(connector);
-                    if (connectorModelItem.ItemType == typeof(Transition))
-                    {
-                        StateContainerEditor.GetParentStateModelItemForTransition(connectorModelItem).Properties[StateDesigner.TransitionsPropertyName].Collection.Add(connectorModelItem);
-                    }
-                }
-            }
-
-            if (null != itemsToDelete)
-            {
-                itemsToDelete.ForEach(p => this.DeleteState(p, removeIncomingConnectors));
-            }
-        }
-
-        public bool CanPasteItems(List<object> itemsToPaste)
-        {
-            if (itemsToPaste != null && itemsToPaste.Count > 0)
-            {
-                if (itemsToPaste.Count == 1 && itemsToPaste.First() is Transition)
-                {
-                    string errorMessage;
-                    IEnumerable<ModelItem> selectedStateModelItems = this.Context.Items.GetValue<Selection>().SelectedObjects;
-                    return selectedStateModelItems.All(item => CanPasteTransition(item, out errorMessage));
-                }
-                else
-                {
-                    return itemsToPaste.All(p =>
-                        {
-                            Type type = (p is Type) ? (Type)p : p.GetType();
-                            return (typeof(State) == type || typeof(FinalState) == type);
-                        }
-                    );
-                }
-            }
-
-            return false;
-        }
-
-        private bool CanPasteTransition(ModelItem sourceStateItem, out string errorMessage)
-        {
-            Fx.Assert(sourceStateItem != null, "sourceStateItem cannot be null");
-
-            if (sourceStateItem.ItemType != typeof(State))
-            {
-                errorMessage = SR.PasteTransitionOnNonStateItem;
-                return false;
-            }
-
-            if (!this.modelItemToUIElement.ContainsKey(sourceStateItem))
-            {
-                errorMessage = SR.PasteTransitionWithoutDestinationState;
-                return false;
-            }
-
-            State sourceState = (State)sourceStateItem.GetCurrentValue();
-
-            if (sourceState.IsFinal)
-            {
-                errorMessage = SR.PasteTransitionOnFinalState;
-                return false;
-            }
-
-            if (GetEmptyConnectionPoints(sourceStateItem.View as UIElement).Count < 1)
-            {
-                errorMessage = string.Format(CultureInfo.CurrentUICulture, SR.PasteTransitionWithoutAvailableConnectionPoints, sourceState.DisplayName);
-                return false;
-            }
-
-            errorMessage = null;
-            return true;
-        }
-
-        internal bool CanPasteTransition(ModelItem destinationStateItem, out string errorMessage, params ModelItem[] sourceStateItems)
-        {
-            bool isDestinationStateSelected = false;
-            foreach (ModelItem sourceStateItem in sourceStateItems)
-            {                
-                if (!CanPasteTransition(sourceStateItem, out errorMessage))
-                {
-                    return false;
-                }
-
-                if (sourceStateItem == destinationStateItem)
-                {
-                    isDestinationStateSelected = true;
-                }
-            }
-
-            int emptyConnectionPointsCountNeeded = isDestinationStateSelected ? sourceStateItems.Count() + 1 : sourceStateItems.Count();
-
-            if (GetEmptyConnectionPoints(destinationStateItem.View as UIElement).Count < emptyConnectionPointsCountNeeded)
-            {
-                errorMessage = string.Format(CultureInfo.CurrentUICulture, SR.PasteTransitionWithoutAvailableConnectionPoints, destinationStateItem.Properties["DisplayName"].Value);
-                return false;
-            }
-
-            errorMessage = null;
-            return true;
-        }
-
-        private ModelItem FindState(string guid)
-        {            
-            foreach (ModelItem item in this.modelItemToUIElement.Keys)
-            {
-                string itemGuid;
-                if (modelItemToGuid.TryGetValue(item, out itemGuid) && guid == itemGuid)
-                {
-                    return item;
-                }
-            }
-
-            return null;
-        }
-
-        public void OnItemsPasted(List<object> itemsToPaste, List<object> metaData, Point pastePoint, WorkflowViewElement pastePointReference)
-        {
-            if (this.ModelItem.ItemType == typeof(State))
-            {
-                WorkflowViewElement view = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(this);
-                if (view != null)
-                {
-                    StateContainerEditor container = (StateContainerEditor)DragDropHelper.GetCompositeView(view);
-                    container.OnItemsPasted(itemsToPaste, metaData, pastePoint, pastePointReference);
-                }
-
-                return;
-            }
-
-            if (itemsToPaste.Count == 1 && itemsToPaste.First() is Transition)
-            {
-                if (metaData == null || metaData.Count != 1 || !(metaData.First() is string))
-                {
-                    ShowMessageBox(SR.PasteTransitionWithoutDestinationState);
-                    return;
-                }
-
-                ModelItem destinationState = FindState(metaData.First() as string);
-
-                if (destinationState == null)
-                {
-                    ShowMessageBox(SR.PasteTransitionWithoutDestinationState);
-                    return;
-                }
-
-                this.PopulateVirtualizingContainer(destinationState);
-
-                ModelItem[] selectedItems = this.Context.Items.GetValue<Selection>().SelectedObjects.ToArray();
-                string errorMessage;
-                if (!CanPasteTransition(destinationState, out errorMessage, selectedItems))
-                {
-                    ShowMessageBox(errorMessage);
-                    return;
-                }
-
-                Transition pastedTransition = itemsToPaste.First() as Transition;
-                Fx.Assert(pastedTransition != null, "Copied Transition should not be null.");
-
-                using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(System.Activities.Presentation.SR.PropertyChangeEditingScopeDescription))
-                {
-                    string displayName = pastedTransition.DisplayName;
-                    bool isFirst = true;
-                    foreach (ModelItem selectedItem in selectedItems)
-                    {
-                        if (!isFirst)
-                        {
-                            StringReader reader = new StringReader(XamlServices.Save(pastedTransition));
-                            pastedTransition = (Transition)XamlServices.Load(reader);
-                        }
-
-                        ModelItem transitionModelItem = this.Context.Services.GetRequiredService<ModelTreeManager>().WrapAsModelItem(pastedTransition);
-                        ModelItem sourceState = selectedItem;
-                        sourceState.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(transitionModelItem);
-                        transitionModelItem.Properties[TransitionDesigner.ToPropertyName].SetValue(destinationState);
-
-                        if (isFirst)
-                        {
-                            this.ViewStateService.RemoveViewState(transitionModelItem, ConnectorLocationViewStateKey);
-                            this.ViewStateService.RemoveViewState(transitionModelItem, SrcConnectionPointIndexStateKey);
-                            this.ViewStateService.RemoveViewState(transitionModelItem, DestConnectionPointIndexStateKey);
-                            isFirst = false;
-                        }
-                    }
-
-                    es.Complete();
-                }
-            }
-            else
-            {
-                List<ModelItem> modelItemsPasted = new List<ModelItem>();
-                List<State> states = new List<State>();
-
-                foreach (object obj in itemsToPaste)
-                {
-                    State state;
-                    if (obj is FinalState)
-                    {
-                        state = new State() { DisplayName = DefaultFinalStateDisplayName, IsFinal = true };
-                    }
-                    else
-                    {
-                        state = (State)obj;
-                        if (state.DisplayName == null)
-                        {
-                            state.DisplayName = DefaultStateDisplayName;
-                        }
-                    }
-                    states.Add(state);
-                }
-
-                RemoveDanglingTransitions(states);
-
-                using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(
-                    System.Activities.Presentation.SR.CollectionAddEditingScopeDescription))
-                {
-                    // Fix 157591 by storing the height and width of the container "before" the new states are added to the
-                    // panel, and group the insertion inside one editing scope - such that Undo will also restore the 
-                    // size of the StateMachineContainer to pre-insert size.
-                    StoreShapeSizeWithUndoRecursively(this.ModelItem);
-
-                    foreach (State state in states)
-                    {
-                        ModelItem stateModelItem =
-                            (this.ModelItem.ItemType == typeof(StateMachine)) ?
-                            this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection.Add(state) :
-                            GetStateMachineModelItem(this.ModelItem).Properties[StateMachineDesigner.StatesPropertyName].Collection.Add(state);
-                        modelItemsPasted.Add(stateModelItem);
-                    }
-
-                    es.Complete();
-                }
-
-                if (modelItemsPasted.Count > 0)
-                {
-                    // translate location view states to be in the coordinate system of the pasting target
-                    Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Only StateMachine contain the StateContainerEditor.");
-
-                    this.UpdateLocationViewStatesByMetaData(modelItemsPasted, metaData, this);
-
-                    if (pastePoint.X > 0 && pastePoint.Y > 0)
-                    {
-                        if (pastePointReference != null)
-                        {
-                            pastePoint = pastePointReference.TranslatePoint(pastePoint, this.panel);
-                            pastePoint.X = pastePoint.X < 0 ? 0 : pastePoint.X;
-                            pastePoint.Y = pastePoint.Y < 0 ? 0 : pastePoint.Y;
-                        }
-                        this.UpdateLocationViewStatesByPoint(modelItemsPasted, pastePoint);
-                    }
-                    // If paste point is not available, paste the items to the top left corner.
-                    else
-                    {
-                        this.UpdateLocationViewStatesToAvoidOverlap(modelItemsPasted);
-                    }
-                }
-
-                this.Dispatcher.BeginInvoke(() =>
-                {
-                    if (modelItemsPasted.Count > 0 && modelItemsPasted[0] != null)
-                    {
-                        Keyboard.Focus(modelItemsPasted[0].View as IInputElement);
-                    }
-                    this.Context.Items.SetValue(new Selection(modelItemsPasted));
-                },
-                DispatcherPriority.ApplicationIdle
-                );
-            }
-        }
-
-
-        public List<ModelItem> SortSelectedItems(List<ModelItem> selectedItems)
-        {
-            if (selectedItems == null)
-            {
-                throw FxTrace.Exception.ArgumentNull("selectedItems");
-            }
-
-            DragDropHelper.ValidateItemsAreOnView(selectedItems, this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection);
-            return selectedItems;
-        }
-
-        public void OnItemsMoved(List<ModelItem> movedItems)
-        {
-            if (movedItems == null)
-            {
-                throw FxTrace.Exception.ArgumentNull("movedItems");
-            }
-
-            DragDropHelper.ValidateItemsAreOnView(movedItems, this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection);
-            this.DoDeleteItems(movedItems, false);
-        }
-
-        void UpdateLocationViewStatesByPoint(List<ModelItem> itemsPasted, Point point)
-        {
-            Point topLeft = new Point(Double.PositiveInfinity, Double.PositiveInfinity);
-            foreach (ModelItem stateModelItem in itemsPasted)
-            {
-                object viewState = this.ViewStateService.RetrieveViewState(stateModelItem, ShapeLocationViewStateKey);
-                if (viewState != null)
-                {
-                    Point location = (Point)viewState;
-                    topLeft.X = topLeft.X > location.X ? location.X : topLeft.X;
-                    topLeft.Y = topLeft.Y > location.Y ? location.Y : topLeft.Y;
-                }
-            }
-            OffsetLocationViewStates(new Vector(point.X - topLeft.X, point.Y - topLeft.Y), itemsPasted, GetTransitionModelItems(itemsPasted), false);
-        }
-
-        void UpdateLocationViewStatesByMetaData(List<ModelItem> itemsPasted, List<object> metaData, StateContainerEditor container)
-        {
-            Fx.Assert(container != null, "The view states must be calculated related to a parent StateContainerEditor.");
-            // If the states are not copied from state machine view (e.g., when the State designer is the breadcrumb root), 
-            // there is no meta data
-            if (metaData != null && metaData.Count > 0)
-            {
-                int ii = 0;
-                foreach (object data in metaData)
-                {
-                    PointCollection points = (PointCollection)data;
-                    foreach (Point point in points)
-                    {
-                        // translate location view states to be in the coordinate system of the pasting target
-                        this.ViewStateService.StoreViewState(itemsPasted[ii], ShapeLocationViewStateKey, container.panel.TranslatePoint(point, container.panel));
-                        ++ii;
-                    }
-                }
-                Fx.Assert(itemsPasted.Count == ii, "itemsCopied does not match the metaData.");
-            }
-        }
-
-        void OffsetLocationViewStates(Vector offsetVector, IEnumerable<ModelItem> stateModelItems, IEnumerable<ModelItem> transitionModelItems, bool enableUndo)
-        {
-            // Offset view state for states
-            if (stateModelItems != null)
-            {
-                foreach (ModelItem modelItem in stateModelItems)
-                {
-                    object viewState = this.ViewStateService.RetrieveViewState(modelItem, ShapeLocationViewStateKey);
-                    if (viewState != null)
-                    {
-                        viewState = Point.Add((Point)viewState, offsetVector);
-                        if (enableUndo)
-                        {
-                            this.ViewStateService.StoreViewStateWithUndo(modelItem, ShapeLocationViewStateKey, viewState);
-                        }
-                        else
-                        {
-                            this.ViewStateService.StoreViewState(modelItem, ShapeLocationViewStateKey, viewState);
-                        }
-                    }
-                }
-            }
-            // Offset view state for transitions
-            if (transitionModelItems != null)
-            {
-                foreach (ModelItem modelItem in transitionModelItems)
-                {
-                    object viewState = this.ViewStateService.RetrieveViewState(modelItem, ConnectorLocationViewStateKey);
-                    if (viewState != null)
-                    {
-                        PointCollection locations = (PointCollection)viewState;
-                        PointCollection newLocations = new PointCollection();
-                        foreach (Point location in locations)
-                        {
-                            Point newLocation = Point.Add(location, offsetVector);
-                            newLocation.X = newLocation.X < 0 ? 0 : newLocation.X;
-                            newLocation.Y = newLocation.Y < 0 ? 0 : newLocation.Y;
-                            newLocations.Add(newLocation);
-                        }
-                        if (enableUndo)
-                        {
-                            this.ViewStateService.StoreViewStateWithUndo(modelItem, ConnectorLocationViewStateKey, newLocations);
-                        }
-                        else
-                        {
-                            this.ViewStateService.StoreViewState(modelItem, ConnectorLocationViewStateKey, newLocations);
-                        }
-                    }
-                }
-            }
-        }
-
-        void UpdateLocationViewStatesToAvoidOverlap(List<ModelItem> itemsPasted)
-        {
-            int offset = 0;
-            if (itemsPasted.Count > 0)
-            {
-                //Check to see if the first element in the input list needs offset. Generalize that information for all ModelItems in the input list.
-                object location = this.ViewStateService.RetrieveViewState(itemsPasted[0], ShapeLocationViewStateKey);
-                HashSet<Point> targetOccupiedLocations = null;
-
-                if (this.ModelItem.ItemType == typeof(StateMachine))
-                {
-                    targetOccupiedLocations = this.shapeLocations;
-                }
-                else
-                {
-                    ModelItem stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.ModelItem);
-                    StateMachineDesigner designer = stateMachineModelItem.View as StateMachineDesigner;
-
-                    if (designer != null)
-                    {
-                        targetOccupiedLocations = designer.StateContainerEditor.shapeLocations;
-                    }
-                }
-
-                if (location != null && targetOccupiedLocations != null)
-                {
-                    Point locationOfShape = (Point)location;
-
-                    bool isOverlapped;
-
-                    do
-                    {
-                        isOverlapped = false;
-                        // need to check for each point on the canvas
-                        foreach (var point in targetOccupiedLocations)
-                        {
-                            // When the pasting occurs, the pasted point may not be exactly the same
-                            // as the copied point (with a slight margin of offset).  Therefore,
-                            // we need to detect if the pasted point is within the boundary of the copied
-                            // object.  If so, offset the pasted position such that the overlap is not observable.
-                            if ((locationOfShape.X < point.X + FreeFormPanel.GridSize &&
-                                 locationOfShape.X > point.X - FreeFormPanel.GridSize) &&
-                                (locationOfShape.Y < point.Y + FreeFormPanel.GridSize &&
-                                 locationOfShape.Y > point.Y - FreeFormPanel.GridSize))
-                            {
-                                offset++;
-                                locationOfShape.Offset(FreeFormPanel.GridSize, FreeFormPanel.GridSize);
-                                isOverlapped = true;
-                                break;
-                            }
-                        }
-                    } while (isOverlapped);
-                }
-            }
-            //Update ViewState according to calculated offset.
-            if (offset > 0)
-            {
-                double offsetValue = FreeFormPanel.GridSize * offset;
-                OffsetLocationViewStates(new Vector(offsetValue, offsetValue), itemsPasted, GetTransitionModelItems(itemsPasted), false);
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChangeReactions.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChangeReactions.cs
deleted file mode 100644 (file)
index 3fb93cf..0000000
+++ /dev/null
@@ -1,322 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Collections.Generic;
-    using System.Collections.Specialized;
-    using System.ComponentModel;
-    using System.Diagnostics;
-    using System.Windows;
-    using System.Windows.Media;
-    using System.Windows.Threading;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Statements;
-    using System.Runtime;
-    using System.Linq;
-
-    partial class StateContainerEditor
-    {
-        void OnStateCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
-        {
-            if (e.Action == NotifyCollectionChangedAction.Remove)
-            {
-                if (e.OldItems != null)
-                {
-                    foreach (ModelItem deleted in e.OldItems)
-                    {
-                        if (deleted != null)
-                        {
-                            ModelItemCollection transitions = deleted.Properties[StateDesigner.TransitionsPropertyName].Collection;
-                            if (this.listenedTransitionCollections.Contains(transitions))
-                            {
-                                transitions.CollectionChanged -=
-                                    new NotifyCollectionChangedEventHandler(this.OnTransitionCollectionChanged);
-                                this.listenedTransitionCollections.Remove(transitions);
-                            }
-
-                            if (this.modelItemToUIElement.ContainsKey(deleted))
-                            {
-                                this.RemoveStateVisual(this.modelItemToUIElement[deleted]);
-                            }
-                        }
-                    }
-                }
-            }
-
-            else if (e.Action == NotifyCollectionChangedAction.Add)
-            {
-                if (e.NewItems != null)
-                {
-                    foreach (ModelItem added in e.NewItems)
-                    {
-                        if (added != null)
-                        {
-                            ModelItemCollection transitions = added.Properties[StateDesigner.TransitionsPropertyName].Collection;
-                            if (!this.listenedTransitionCollections.Contains(transitions))
-                            {
-                                transitions.CollectionChanged +=
-                                    new NotifyCollectionChangedEventHandler(this.OnTransitionCollectionChanged);
-                                this.listenedTransitionCollections.Add(transitions);
-                            }
-                            this.AddStateVisuals(new List<ModelItem> { added });
-                        }
-                    }
-                }
-            }
-        }
-
-        void OnTransitionCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
-        {
-            if (e.Action == NotifyCollectionChangedAction.Remove)
-            {
-                if (e.OldItems != null)
-                {
-                    foreach (ModelItem deleted in e.OldItems)
-                    {
-                        if (deleted != null)
-                        {
-                            if (!this.transitionModelItemsRemoved.Contains(deleted))
-                            {
-                                this.transitionModelItemsRemoved.Add(deleted);
-                            }
-                        }
-                    }
-                }
-            }
-
-            else if (e.Action == NotifyCollectionChangedAction.Add)
-            {
-                // We have to postpone updating the visual until the editing scope completes because 
-                // the connector view state is not available at this moment
-                foreach (ModelItem item in e.NewItems)
-                {
-                    if (!this.transitionModelItemsAdded.Contains(item))
-                    {
-                        this.transitionModelItemsAdded.Add(item);
-                    }
-                }
-            }
-        }
-
-        void OnModelPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            if (e.PropertyName == StateMachineDesigner.InitialStatePropertyName)
-            {
-                Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Only StateMachine should have initial state");
-                this.initialStateChanged = true;
-            }
-        }
-
-        static bool ShouldSuppressAddingConnectorsWhenAddingStateVisuals(EditingScope scope)
-        {
-            return scope.Changes.Any<Change>((p) =>
-            {
-                return p != null && p.GetType() == typeof(SuppressAddingConnectorWhenAddingStateVisual);
-            });
-        }
-
-        static bool IsTransitionReordering(EditingScope scope)
-        {
-            return scope.Changes.Any<Change>((p) =>
-            {
-                return p != null && p.GetType() == typeof(TransitionReorderChange);
-            });
-        }
-
-        // All the connectors are directly contained by the statemachine editor. This is because connectors can go across states.
-        void OnEditingScopeCompleted(object sender, EditingScopeEventArgs e)
-        {
-            foreach (ModelItem item in e.EditingScope.ItemsRemoved)
-            {
-                modelItemToGuid.Remove(item);
-            }
-
-            if (ShouldSuppressAddingConnectorsWhenAddingStateVisuals(e.EditingScope))
-            {
-                this.suppressAddingConnectorsWhenAddingStateVisuals = true;
-            }
-            else
-            {
-                this.suppressAddingConnectorsWhenAddingStateVisuals = false;
-            }
-
-            foreach (Change change in e.EditingScope.Changes)
-            {
-                if (change is PropertyChange)
-                {
-                    PropertyChange propertyChange = change as PropertyChange;
-                    if (propertyChange.Owner.ItemType == typeof(Transition)
-                        && propertyChange.PropertyName == TransitionDesigner.ToPropertyName
-                        && propertyChange.NewValue != propertyChange.OldValue
-                        && !this.transitionModelItemsRemoved.Contains(propertyChange.Owner)
-                        && !this.transitionModelItemsAdded.Contains(propertyChange.Owner)
-                        && this.modelItemToUIElement.ContainsKey(propertyChange.NewValue))
-                    {
-                        if (propertyChange.OldValue != null)
-                        {
-                            Connector connector = this.GetConnectorInStateMachine(propertyChange.Owner);
-                            if (connector != null)
-                            {
-                                this.Remove(connector);
-                            }
-                        }
-
-                        if (propertyChange.NewValue != null)
-                        {
-                            this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
-                            {
-                                if (this.populated)
-                                {
-                                    this.AddTransitionVisual(propertyChange.Owner);
-                                }
-                            }));
-                        }
-                    }
-                }
-            }
-
-            if (!IsTransitionReordering(e.EditingScope))
-            {
-                if (this.transitionModelItemsAdded.Count > 0)
-                {
-                    // We need to wait until after the state visuals are updated
-                    this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
-                    {
-                        if (this.populated)
-                        {
-                            foreach (ModelItem transition in this.transitionModelItemsAdded)
-                            {
-                                if (transition.Properties[TransitionDesigner.ToPropertyName].Value != null)
-                                {
-                                    this.AddTransitionVisual(transition);
-                                }
-                            }
-                        }
-                        this.transitionModelItemsAdded.Clear();
-                    }));
-                }
-
-                if (this.transitionModelItemsRemoved.Count > 0)
-                {
-                    foreach (ModelItem transition in this.transitionModelItemsRemoved)
-                    {
-                        Connector connector = this.GetConnectorInStateMachine(transition);
-                        if (connector != null)
-                        {
-                            this.Remove(connector);
-                        }
-                    }
-                    this.transitionModelItemsRemoved.Clear();
-                }
-            }
-
-            if (this.initialStateChanged)
-            {
-                Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Only StateMachine should have initial state");
-                Fx.Assert(this.initialNode != null, "Initial node should not be null");
-
-                // Remove the old link
-                if (GetAttachedConnectors(this.initialNode).Count > 0)
-                {
-                    this.Remove(GetAttachedConnectors(this.initialNode)[0]);
-                }
-                // Add the new link if the new initial state is not null
-                ModelItem initialStateModelItem = this.ModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].Value;
-                if (initialStateModelItem != null)
-                {
-                    // We need to wait until after the state visuals are updated
-                    this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
-                    {
-                        if (this.populated)
-                        {
-                            this.AddInitialNodeConnector(GetStateView(initialStateModelItem));
-                        }
-                    }));
-                }
-                this.initialStateChanged = false;
-            }
-        }
-
-        void OnViewStateChanged(object sender, ViewStateChangedEventArgs e)
-        {
-            Fx.Assert(e.ParentModelItem != null, "ViewState should be associated with some modelItem");
-
-            if (!this.internalViewStateChange)
-            {
-                if (e.ParentModelItem == this.ModelItem)
-                {
-                    if (string.Equals(e.Key, StateContainerWidthViewStateKey, StringComparison.Ordinal))
-                    {
-                        double defaultWidth = ((this.ModelItem.ItemType == typeof(State)) ? DefaultWidthForState : DefaultWidthForStateMachine);
-                        object widthViewState = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerWidthViewStateKey);
-                        this.StateContainerWidth = (widthViewState != null) ? (double)widthViewState : defaultWidth;
-                    }
-                    else if (string.Equals(e.Key, StateContainerHeightViewStateKey, StringComparison.Ordinal))
-                    {
-                        double defaultHeight = ((this.ModelItem.ItemType == typeof(State)) ? DefaultHeightForState : DefaultHeightForStateMachine);
-                        object heightViewState = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerHeightViewStateKey);
-                        this.StateContainerHeight = (heightViewState != null) ? (double)heightViewState : defaultHeight;
-                    }
-                }
-
-                if ((e.ParentModelItem.ItemType == typeof(State) || (e.ParentModelItem.ItemType == typeof(StateMachine) && e.ParentModelItem == this.ModelItem)) &&
-                    e.Key.Equals(ShapeLocationViewStateKey))
-                {
-                    ModelItem modelItem = e.ParentModelItem;
-                    if (modelItem.ItemType == typeof(StateMachine))
-                    {
-                        modelItem = this.initialModelItem;
-                    }
-                    if (this.modelItemToUIElement.ContainsKey(modelItem))
-                    {
-                        if (e.NewValue != null)
-                        {
-                            FreeFormPanel.SetLocation(this.modelItemToUIElement[modelItem], (Point)e.NewValue);
-                            this.panel.InvalidateMeasure();
-                            if (e.OldValue != null)
-                            {
-                                this.shapeLocations.Remove((Point)e.OldValue);
-                            }
-                            this.shapeLocations.Add((Point)e.NewValue);
-                            // To reroute the links
-                            this.InvalidateMeasureForStateMachinePanel();
-                        }
-                    }
-                }
-
-                else if (e.ParentModelItem.ItemType == typeof(State) && e.Key.Equals(ShapeSizeViewStateKey))
-                {
-                    // To reroute the links
-                    this.InvalidateMeasureForStateMachinePanel();
-                }
-
-                // Only the statemachine editor should respond to connector changes because all connectors are
-                // only added to the outmost editor
-                else if (e.Key.Equals(ConnectorLocationViewStateKey) && !this.GetStateMachineContainerEditor().internalViewStateChange)
-                {
-                    Connector changedConnector = this.GetConnectorInStateMachine(e.ParentModelItem);
-                    if (changedConnector != null)
-                    {
-                        if (e.NewValue != null)
-                        {
-                            Fx.Assert(e.NewValue is PointCollection, "e.NewValue is not PointCollection");
-                            changedConnector.Points = e.NewValue as PointCollection;
-                            this.GetStateMachineContainerEditor().panel.RemoveConnectorEditor();
-                            this.InvalidateMeasureForStateMachinePanel();
-                            if (IsConnectorFromInitialNode(changedConnector))
-                            {
-                                this.initialStateChanged = true;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChanges.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.ModelChanges.cs
deleted file mode 100644 (file)
index 1d5e6c0..0000000
+++ /dev/null
@@ -1,332 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.Diagnostics;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Input;
-    using System.Windows.Media;
-
-    partial class StateContainerEditor
-    {
-        internal int DeleteConnectorModelItem(Connector connector, bool rerouting = false)
-        {
-            ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(connector);
-
-            if (!rerouting)
-            {
-                if (connector is ConnectorWithStartDot)
-                {
-                    connector.StartDot.MouseDown -= new MouseButtonEventHandler(OnConnectorStartDotMouseDown);
-                    connector.StartDot.MouseUp -= new MouseButtonEventHandler(OnConnectorStartDotMouseUp);
-                }
-
-                connector.GotKeyboardFocus -= new KeyboardFocusChangedEventHandler(OnConnectorGotKeyboardFocus);
-                connector.RequestBringIntoView -= new RequestBringIntoViewEventHandler(OnConnectorRequestBringIntoView);
-                connector.GotFocus -= new RoutedEventHandler(OnConnectorGotFocus);
-                connector.MouseDoubleClick -= new MouseButtonEventHandler(OnConnectorMouseDoubleClick);
-                connector.MouseDown -= new MouseButtonEventHandler(OnConnectorMouseDown);
-                connector.KeyDown -= new KeyEventHandler(OnConnectorKeyDown);
-                connector.ContextMenuOpening -= new ContextMenuEventHandler(OnConnectorContextMenuOpening);
-                connector.Unloaded -= new RoutedEventHandler(OnConnectorUnloaded);
-            }
-
-            int removedIndex = InvalidIndex;
-            if (connectorModelItem.ItemType == typeof(Transition))
-            {
-                ModelItemCollection transitions = StateContainerEditor.GetParentStateModelItemForTransition(connectorModelItem).Properties[StateDesigner.TransitionsPropertyName].Collection;
-                removedIndex = transitions.IndexOf(connectorModelItem);
-                Fx.Assert(removedIndex >= 0, "can't find the connector ModelItem in collection");
-                transitions.Remove(connectorModelItem);
-            }
-            // Connector from initial node
-            else if (connectorModelItem.ItemType == typeof(StateMachine))
-            {
-                using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.ClearInitialState))
-                {
-                    connectorModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].SetValue(null);
-                    if (!rerouting)
-                    {
-                        this.ViewStateService.StoreViewStateWithUndo(connectorModelItem, ConnectorLocationViewStateKey, null);
-                    }
-                    es.Complete();
-                }
-            }
-            return removedIndex;
-        }
-
-        void DeleteState(ModelItem stateModelItem, bool clearInitialState)
-        {
-            Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Should only delete states with StateMachine.");
-
-            this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection.Remove(stateModelItem);
-            if (clearInitialState &&
-                this.ModelItem.ItemType == typeof(StateMachine) &&
-                stateModelItem == this.ModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].Value)
-            {
-                this.ModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].SetValue(null);
-                this.ViewStateService.StoreViewStateWithUndo(this.ModelItem, ConnectorLocationViewStateKey, null);
-            }
-        }
-
-        // referenceTransitionModelItem is used when a connector is re-linked.
-        void CreateTransition(ConnectionPoint sourceConnPoint, ConnectionPoint destConnPoint, ModelItem referenceTransitionModelItem, bool isSourceMoved)
-        {
-            VirtualizedContainerService.VirtualizingContainer srcDesigner = sourceConnPoint.ParentDesigner as VirtualizedContainerService.VirtualizingContainer;
-            Fx.Assert(srcDesigner != null, "srcDesigner should not be null.");
-            VirtualizedContainerService.VirtualizingContainer destDesigner = destConnPoint.ParentDesigner as VirtualizedContainerService.VirtualizingContainer;
-            Fx.Assert(destDesigner != null, "destDesigner should not be null.");
-
-            ModelItem srcModelItem = srcDesigner.ModelItem;
-            ModelItem destModelItem = destDesigner.ModelItem;
-            ModelItem transitionModelItem = null;
-
-            // We are moving the connector.
-            if (referenceTransitionModelItem != null && referenceTransitionModelItem.ItemType == typeof(Transition))
-            {
-                transitionModelItem = referenceTransitionModelItem;
-                // We are moving the start of the connector. We only preserve the trigger if it is not shared.
-                if (isSourceMoved)
-                {
-                    Transition referenceTransition = referenceTransitionModelItem.GetCurrentValue() as Transition;
-                    ModelItem stateModelItem = GetParentStateModelItemForTransition(referenceTransitionModelItem);
-                    State state = stateModelItem.GetCurrentValue() as State;
-                    bool isTriggerShared = false;
-                    foreach (Transition transition in state.Transitions)
-                    {
-                        if (transition != referenceTransition && transition.Trigger == referenceTransition.Trigger)
-                        {
-                            isTriggerShared = true;
-                            break;
-                        }
-                    }
-                    if (isTriggerShared)
-                    {
-                        transitionModelItem.Properties[TransitionDesigner.TriggerPropertyName].SetValue(null);
-                    }
-                }
-                transitionModelItem.Properties[TransitionDesigner.ToPropertyName].SetValue(destModelItem);
-                srcModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(transitionModelItem);
-            }
-            // We are creating a new connector. 
-            else
-            {
-                ModelItem stateMachineModelItem = GetStateMachineModelItem(srcModelItem);
-                Transition newTransition = new Transition() { DisplayName = StateContainerEditor.GenerateTransitionName(stateMachineModelItem) };
-                newTransition.To = destModelItem.GetCurrentValue() as State;
-                // Assign the shared trigger.
-                if (sourceConnPoint.AttachedConnectors.Count > 0)
-                {
-                    Connector connector = sourceConnPoint.AttachedConnectors[0];
-                    Transition existingTransition = StateContainerEditor.GetConnectorModelItem(connector).GetCurrentValue() as Transition;
-                    newTransition.Trigger = existingTransition.Trigger;
-                }
-                transitionModelItem = srcModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(newTransition);
-            }
-            if (transitionModelItem != null)
-            {
-                // if the transition connection is re-routed, the SrcConnPointIndex needs to be updated.
-                PointCollection connectorViewState = new PointCollection(ConnectorRouter.Route(this.panel, sourceConnPoint, destConnPoint));
-                int srcConnectionPointIndex = StateContainerEditor.GetConnectionPoints(sourceConnPoint.ParentDesigner).IndexOf(sourceConnPoint);
-                int destConnectionPointIndex = StateContainerEditor.GetConnectionPoints(destConnPoint.ParentDesigner).IndexOf(destConnPoint);
-                this.StoreConnectorLocationViewState(transitionModelItem, connectorViewState, true);
-                this.ViewStateService.StoreViewStateWithUndo(transitionModelItem, SrcConnectionPointIndexStateKey, srcConnectionPointIndex);
-                this.ViewStateService.StoreViewStateWithUndo(transitionModelItem, DestConnectionPointIndexStateKey, destConnectionPointIndex);
-            }
-        }
-
-        // referenceConnector is used when we are re-linking the connector.
-        internal ConnectorCreationResult CreateConnectorGesture(ConnectionPoint sourceConnectionPoint, ConnectionPoint destConnectionPoint, Connector referenceConnector, bool isConnectorStartMoved)
-        {
-            Fx.Assert(sourceConnectionPoint != null, "sourceConnectionPoint is null.");
-            Fx.Assert(destConnectionPoint != null, "destConnectionPoint is null.");
-            ConnectorCreationResult result = ConnectorCreationResult.OtherFailure;
-            if (destConnectionPoint.PointType != ConnectionPointKind.Outgoing && sourceConnectionPoint.PointType != ConnectionPointKind.Incoming)
-            {
-                if (sourceConnectionPoint.ParentDesigner is VirtualizedContainerService.VirtualizingContainer)
-                {
-                    //bool sameDestination = false;
-                    ModelItem refTransitionModelItem = null;
-                    if (referenceConnector != null)
-                    {
-                        refTransitionModelItem = StateContainerEditor.GetConnectorModelItem(referenceConnector);
-                    }
-
-                    using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.CreateTransition))
-                    {
-                        if (refTransitionModelItem != null)
-                        {
-                            this.CreateTransition(sourceConnectionPoint, destConnectionPoint, refTransitionModelItem, isConnectorStartMoved);
-                        }
-                        else
-                        {
-                            this.CreateTransition(sourceConnectionPoint, destConnectionPoint, null, false);
-                        }
-                        result = ConnectorCreationResult.Success;
-                        es.Complete();
-                    }
-                }
-                else if (sourceConnectionPoint.ParentDesigner is StartSymbol)
-                {
-                    ModelItem stateModelItem = ((VirtualizedContainerService.VirtualizingContainer)destConnectionPoint.ParentDesigner).ModelItem;
-
-                    if (IsFinalState(stateModelItem))
-                    {
-                        result = ConnectorCreationResult.CannotSetFinalStateAsInitialState;
-                    }
-                    else
-                    {
-                        using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.SetInitialState))
-                        {
-                            this.StateMachineModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].SetValue(stateModelItem);
-                            PointCollection connectorViewState = new PointCollection(ConnectorRouter.Route(this.panel, sourceConnectionPoint, destConnectionPoint));
-                            this.StoreConnectorLocationViewState(this.StateMachineModelItem, connectorViewState, true);
-                            result = ConnectorCreationResult.Success;
-                            es.Complete();
-                        }
-                    }
-                }
-            }
-            return result;
-        }
-
-        internal ConnectorCreationResult CreateConnectorGesture(ConnectionPoint sourceConnectionPoint, UIElement dest, Connector referenceConnector, bool isConnectorStartMoved)
-        {
-            ConnectionPoint destConnectionPoint = null;
-            if (this.activeConnectionPoint != null)
-            {
-                destConnectionPoint = this.activeConnectionPoint;
-            }
-            else
-            {
-                destConnectionPoint = GetClosestDestConnectionPoint(sourceConnectionPoint, dest);
-            }
-            
-            if (destConnectionPoint != null)
-            {
-                return CreateConnectorGesture(sourceConnectionPoint, destConnectionPoint, referenceConnector, isConnectorStartMoved);
-            }
-            return ConnectorCreationResult.OtherFailure;
-        }
-
-        internal ConnectorCreationResult CreateConnectorGesture(UIElement source, ConnectionPoint destConnectionPoint, Connector referenceConnector, bool isConnectorStartMoved)
-        {
-            ConnectionPoint sourceConnectionPoint = null;
-            if (this.activeConnectionPoint != null)
-            {
-                sourceConnectionPoint = this.activeConnectionPoint;
-            }
-            else
-            {
-                sourceConnectionPoint = GetClosestSrcConnectionPoint(source, destConnectionPoint);
-            }
-
-            if (sourceConnectionPoint != null)
-            {
-                return CreateConnectorGesture(sourceConnectionPoint, destConnectionPoint, referenceConnector, isConnectorStartMoved);
-            }
-            return ConnectorCreationResult.OtherFailure;
-        }
-
-        void StoreShapeLocationViewState(UIElement view, Point newLocation)
-        {
-            ModelItem storageModelItem = null;
-            if (view is StartSymbol)
-            {
-                storageModelItem = this.ModelItem;
-            }
-            else if (view is VirtualizedContainerService.VirtualizingContainer)
-            {
-                storageModelItem = ((VirtualizedContainerService.VirtualizingContainer)view).ModelItem;
-            }
-            StoreShapeLocationViewState(storageModelItem, newLocation);
-        }
-
-        void StoreShapeLocationViewState(ModelItem storageModelItem, Point newLocation)
-        {
-            if (this.ViewStateService.RetrieveViewState(storageModelItem, ShapeLocationViewStateKey) != null)
-            {
-                this.ViewStateService.StoreViewStateWithUndo(storageModelItem, ShapeLocationViewStateKey, newLocation);
-            }
-            else
-            {
-                this.ViewStateService.StoreViewState(storageModelItem, ShapeLocationViewStateKey, newLocation);
-            }
-        }
-        
-        void StoreConnectorLocationViewState(ModelItem connectorModelItem, PointCollection viewState, bool isUndoableViewState)
-        {
-            if (isUndoableViewState)
-            {
-                this.ViewStateService.StoreViewStateWithUndo(connectorModelItem, ConnectorLocationViewStateKey, viewState);
-            }
-            else
-            {
-                this.ViewStateService.StoreViewState(connectorModelItem, ConnectorLocationViewStateKey, viewState);
-            }
-        }
-
-        void StoreConnectorLocationViewState(Connector connector, bool isUndoableViewState)
-        {
-            //This method will be called whenever the FreeFormPanel raises a location changed event on a connector.
-            //Such location changed events are a result of changes already committed in the UI. Hence we do not want to react to such view state changes.
-            //Using internalViewStateChange flag for that purpose.
-            this.internalViewStateChange = true;
-            this.StoreConnectorLocationViewState(StateContainerEditor.GetConnectorModelItem(connector), connector.Points, isUndoableViewState);
-            this.internalViewStateChange = false;
-        }
-
-        // While adding an new StateContainer inside an outer StateContainer, the outter StateContainer size might change.  
-        // InsertState would recursively stores the outer containers before the insertion happens, and capture the size within a single EditingScope to facilitate Undo.
-        ModelItem InsertState(Object droppedObject)
-        {
-            ModelItem droppedModelItem = null;
-            Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Should only drop state with StateMachine.");
-            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(System.Activities.Presentation.SR.CollectionAddEditingScopeDescription))
-            {
-                StoreShapeSizeWithUndoRecursively(this.ModelItem);
-                droppedModelItem = this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection.Add(droppedObject);
-                es.Complete();
-            }
-            return droppedModelItem;
-        }
-
-        // Recursively store the current StateContainerHeight and StateContainerWidth of the target StateContainer and its ancestors to the current editing scope, 
-        // up to the StateMachine instance.
-        internal void StoreShapeSizeWithUndoRecursively(ModelItem modelItem)
-        {
-            if (modelItem.ItemType == typeof(State))
-            {
-                ModelItem parent = GetStateMachineModelItem(modelItem);
-                if (null != parent)
-                {
-                    // State can be dropped to a non-StateMachine container (Bug 220966)
-                    // so a null check is needed.
-                    StoreShapeSizeWithUndoRecursively(parent);
-                }
-            }
-
-            if (modelItem.ItemType == typeof(State) || modelItem.ItemType == typeof(StateMachine))
-            {
-                this.ViewStateService.StoreViewStateWithUndo(
-                    modelItem,
-                    StateContainerWidthViewStateKey,
-                    this.ViewStateService.RetrieveViewState(modelItem, StateContainerWidthViewStateKey));
-
-                this.ViewStateService.StoreViewStateWithUndo(
-                    modelItem,
-                    StateContainerHeightViewStateKey,
-                    this.ViewStateService.RetrieveViewState(modelItem, StateContainerHeightViewStateKey));
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.Utilities.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.Utilities.cs
deleted file mode 100644 (file)
index 4d36b9a..0000000
+++ /dev/null
@@ -1,544 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.Internal.PropertyEditing;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-    using System.Globalization;
-    using System.Linq;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Documents;
-    using System.Windows.Media;
-
-    partial class StateContainerEditor
-    {
-        internal static ModelItem GetConnectorModelItem(DependencyObject obj)
-        {
-            return (ModelItem)obj.GetValue(StateContainerEditor.ConnectorModelItemProperty);
-        }
-
-        static void SetConnectorModelItem(DependencyObject obj, ModelItem modelItem)
-        {
-            obj.SetValue(StateContainerEditor.ConnectorModelItemProperty, modelItem);
-        }
-
-        internal static List<ConnectionPoint> GetConnectionPoints(DependencyObject obj)
-        {
-            if (obj is StartSymbol)
-            {
-                return (List<ConnectionPoint>)obj.GetValue(StateContainerEditor.ConnectionPointsProperty);
-            }
-            if (!(obj is VirtualizedContainerService.VirtualizingContainer))
-            {
-                obj = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(obj);
-            }
-            return (List<ConnectionPoint>)obj.GetValue(StateContainerEditor.ConnectionPointsProperty);
-        }
-
-        static void SetConnectionPoints(DependencyObject obj, List<ConnectionPoint> connectionPoints)
-        {
-            obj.SetValue(StateContainerEditor.ConnectionPointsProperty, connectionPoints);
-        }
-
-        static void SetConnectorSrcDestConnectionPoints(Connector connector, ConnectionPoint srcConnectionPoint, ConnectionPoint destConnectionPoint)
-        {
-            FreeFormPanel.SetSourceConnectionPoint(connector, srcConnectionPoint);
-            FreeFormPanel.SetDestinationConnectionPoint(connector, destConnectionPoint);
-            srcConnectionPoint.AttachedConnectors.Add(connector);
-            destConnectionPoint.AttachedConnectors.Add(connector);
-        }
-
-        static void SetConnectorLabel(Connector connector, ModelItem connectorModelItem)
-        {
-
-            connector.SetBinding(Connector.LabelTextProperty,  new Binding()
-            {
-                Source = connectorModelItem,
-                Path = new PropertyPath("DisplayName")
-            });
-
-            TextBlock toolTip = new TextBlock();
-            toolTip.SetBinding(TextBlock.TextProperty, new Binding()
-            {
-                Source = connectorModelItem,
-                Path = new PropertyPath("DisplayName"),
-                StringFormat = TransitionNameToolTip + Environment.NewLine + SR.EditTransitionTooltip + Environment.NewLine + SR.CopyTransitionToolTip
-            });
-
-            connector.SetLabelToolTip(toolTip);
-        }
-
-        static void SetConnectorStartDotToolTip(FrameworkElement startDot, ModelItem connectorModelItem)
-        {
-            ModelItem triggerModelItem = connectorModelItem.Properties[TransitionDesigner.TriggerPropertyName].Value as ModelItem;
-            string triggerName = null;
-            if (triggerModelItem == null)
-            {
-                triggerName = "(null)";
-            }
-            else
-            {
-                ModelItem displayNameModelItem = triggerModelItem.Properties["DisplayName"].Value;
-                if (displayNameModelItem != null)
-                {
-                    triggerName = displayNameModelItem.GetCurrentValue() as string;
-                }
-            }
-            startDot.ToolTip = string.Format(CultureInfo.InvariantCulture, TriggerNameToolTip, triggerName) + Environment.NewLine + SR.SharedTriggerToolTip;
-        }
-
-
-        // Returns true if visual is on the visual tree for point p relative to the reference.
-        static bool IsVisualHit(UIElement visual, UIElement reference, Point point)
-        {
-            bool visualIsHit = false;
-            HitTestResult result = VisualTreeHelper.HitTest(reference, point);
-            if (result != null)
-            {
-                DependencyObject obj = result.VisualHit;
-                while (obj != null)
-                {
-                    if (visual.Equals(obj))
-                    {
-                        visualIsHit = true;
-                        break;
-                    }
-                    obj = VisualTreeHelper.GetParent(obj);
-                }
-            }
-            return visualIsHit;
-        }
-
-        //This snaps the center of the element to grid.
-        //Wherever shapeAnchorPoint is valid, it is made co-incident with the drop location.
-        static Point SnapVisualToGrid(UIElement element, Point location, Point shapeAnchorPoint, bool isAnchorPointValid)
-        {
-            Fx.Assert(element != null, "Input UIElement is null");
-            element.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
-            Point oldCenter = location;
-            if (!isAnchorPointValid)
-            {
-                //shapeAnchorPoint is invalid in case where it does not make sense (eg. toolbox drop).
-                location.X -= InitialNodeWidth / 2;
-                location.Y -= InitialNodeHeight / 2;
-            }
-            else
-            {
-                location.X -= shapeAnchorPoint.X;
-                location.Y -= shapeAnchorPoint.Y;
-                oldCenter = new Point(location.X + element.DesiredSize.Width / 2, location.Y + element.DesiredSize.Height / 2);
-            }
-
-            Point newCenter = SnapPointToGrid(oldCenter);
-
-            location.Offset(newCenter.X - oldCenter.X, newCenter.Y - oldCenter.Y);
-
-            if (location.X < 0)
-            {
-                double correction = FreeFormPanel.GridSize - ((location.X * (-1)) % FreeFormPanel.GridSize);
-                location.X = (correction == FreeFormPanel.GridSize) ? 0 : correction;
-            }
-            if (location.Y < 0)
-            {
-                double correction = FreeFormPanel.GridSize - ((location.Y * (-1)) % FreeFormPanel.GridSize);
-                location.Y = (correction == FreeFormPanel.GridSize) ? 0 : correction;
-            }
-            return location;
-        }
-
-        static Point SnapPointToGrid(Point pt)
-        {
-            pt.X -= pt.X % FreeFormPanel.GridSize;
-            pt.Y -= pt.Y % FreeFormPanel.GridSize;
-            pt.X = pt.X < 0 ? 0 : pt.X;
-            pt.Y = pt.Y < 0 ? 0 : pt.Y;
-            return pt;
-        }
-
-        static IEnumerable<Adorner> RemoveAdorner(UIElement adornedElement, Type adornerType)
-        {
-            Fx.Assert(adornedElement != null, "Invalid argument");
-            Fx.Assert(typeof(Adorner).IsAssignableFrom(adornerType), "Invalid argument");
-            List<Adorner> adornersRemoved = new List<Adorner>();
-            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(adornedElement);
-            if (adornerLayer != null)
-            {
-                Adorner[] adorners = adornerLayer.GetAdorners(adornedElement);
-                if (adorners != null)
-                {
-                    foreach (Adorner adorner in adorners)
-                    {
-                        if (adornerType.IsAssignableFrom(adorner.GetType()))
-                        {
-                            adornerLayer.Remove(adorner);
-                            adornersRemoved.Add(adorner);
-                        }
-                    }
-                }
-            }
-            return adornersRemoved;
-        }
-
-        internal static List<Connector> GetAttachedConnectors(UIElement shape)
-        {
-            HashSet<Connector> attachedConnectors = new HashSet<Connector>();
-            List<ConnectionPoint> allConnectionPoints = GetConnectionPoints(shape);
-            if (allConnectionPoints != null)
-            {
-                foreach (ConnectionPoint connPoint in allConnectionPoints)
-                {
-                    if (connPoint != null)
-                    {
-                        foreach (Connector connector in connPoint.AttachedConnectors)
-                        {
-                            attachedConnectors.Add(connector);
-                        }
-                    }
-                }
-            }
-            return attachedConnectors.ToList<Connector>();
-        }
-
-        static List<Connector> GetOutgoingConnectors(UIElement shape)
-        {
-            List<Connector> outgoingConnectors = new List<Connector>();
-            List<ConnectionPoint> allConnectionPoints = GetConnectionPoints(shape);
-            foreach (ConnectionPoint connPoint in allConnectionPoints)
-            {
-                if (connPoint != null)
-                {
-                    outgoingConnectors.AddRange(connPoint.AttachedConnectors.Where(p => FreeFormPanel.GetSourceConnectionPoint(p).Equals(connPoint)));
-                }
-            }
-            return outgoingConnectors;
-        }
-
-        static List<Connector> GetIncomingConnectors(UIElement shape)
-        {
-            List<Connector> incomingConnectors = new List<Connector>();
-            List<ConnectionPoint> allConnectionPoints = GetConnectionPoints(shape);
-            foreach (ConnectionPoint connPoint in allConnectionPoints)
-            {
-                if (connPoint != null)
-                {
-                    incomingConnectors.AddRange(connPoint.AttachedConnectors.Where(p => FreeFormPanel.GetDestinationConnectionPoint(p).Equals(connPoint)));
-                }
-            }
-            return incomingConnectors;
-        }
-
-        static ConnectionPoint ConnectionPointHitTest(UIElement element, Point hitPoint)
-        {
-            FreeFormPanel panel = VisualTreeUtils.FindVisualAncestor<FreeFormPanel>(element);
-            List<ConnectionPoint> connectionPoints = StateContainerEditor.GetConnectionPoints(element);
-            return FreeFormPanel.ConnectionPointHitTest(hitPoint, connectionPoints, panel);
-        }
-
-        static ConnectionPoint GetConnectionPoint(UIElement element, Point location)
-        {
-            List<ConnectionPoint> connectionPoints = StateContainerEditor.GetConnectionPoints(element);
-            foreach (ConnectionPoint connectionPoint in connectionPoints)
-            {
-                if (DesignerGeometryHelper.ManhattanDistanceBetweenPoints(location, connectionPoint.Location) <= ConnectorRouter.EndPointTolerance)
-                {
-                    return connectionPoint;
-                }
-            }
-            return null;
-        }
-
-        internal static ModelItem GetStateMachineModelItem(ModelItem modelItem)
-        {
-            ModelItem currentModelItem = modelItem;
-            while (currentModelItem != null && currentModelItem.ItemType != typeof(StateMachine))
-            {
-                currentModelItem = currentModelItem.Parent;
-            }
-            return currentModelItem;
-        }
-
-        static bool AreInSameStateMachine(ModelItem modelItem1, ModelItem modelItem2)
-        {
-            return GetStateMachineModelItem(modelItem1) == GetStateMachineModelItem(modelItem2);
-        }
-
-        internal static ModelItem GetParentStateModelItemForTransition(ModelItem transitionModelItem)
-        {
-            ModelItem parent = transitionModelItem;
-            while (parent != null && parent.ItemType != typeof(State))
-            {
-                parent = parent.Parent;
-            }
-            return parent;
-        }
-
-        internal static UIElement GetStateView(ModelItem stateModelItem)
-        {
-            ModelItem parent = GetStateMachineModelItem(stateModelItem);
-            if (parent.View is StateMachineDesigner)
-            {
-                return ((StateMachineDesigner)parent.View).StateContainerEditor.modelItemToUIElement[stateModelItem];
-            }
-            return null;
-        }
-
-        static ModelItem GetModelItemFromView(UIElement element)
-        {
-            ModelItem modelItem = null;
-            if (element is StartSymbol)
-            {
-                modelItem = ((StartSymbol)element).ModelItem;
-            }
-            else
-            {
-                modelItem = ((VirtualizedContainerService.VirtualizingContainer)element).ModelItem;
-            }
-            return modelItem;
-        }
-
-        static internal ConnectionPoint GetClosestConnectionPoint(ConnectionPoint srcConnPoint, List<ConnectionPoint> destConnPoints, out double minDist)
-        {
-            minDist = double.PositiveInfinity;
-            double dist = 0;
-            ConnectionPoint closestPoint = null;
-            Point srcPoint = FreeFormPanel.GetLocationRelativeToOutmostPanel(srcConnPoint);
-            foreach (ConnectionPoint destConnPoint in destConnPoints)
-            {
-                if (srcConnPoint != destConnPoint)
-                {
-                    dist = DesignerGeometryHelper.ManhattanDistanceBetweenPoints(srcPoint, FreeFormPanel.GetLocationRelativeToOutmostPanel(destConnPoint));
-                    if (dist < minDist)
-                    {
-                        minDist = dist;
-                        closestPoint = destConnPoint;
-                    }
-                }
-            }
-
-            return closestPoint;
-        }
-
-        static ConnectionPoint GetClosestConnectionPointNotOfType(ConnectionPoint srcConnectionPoint, List<ConnectionPoint> targetConnectionPoints, ConnectionPointKind illegalConnectionPointKind)
-        {
-            double minDist;
-            List<ConnectionPoint> filteredConnectionPoints = new List<ConnectionPoint>();
-            foreach (ConnectionPoint connPoint in targetConnectionPoints)
-            {
-                if (connPoint.PointType != illegalConnectionPointKind && !connPoint.Equals(srcConnectionPoint) && connPoint.AttachedConnectors.Count == 0)
-                {
-                    filteredConnectionPoints.Add(connPoint);
-                }
-            }
-            return GetClosestConnectionPoint(srcConnectionPoint, filteredConnectionPoints, out minDist);
-        }
-
-        static void GetClosestConnectionPointPair(List<ConnectionPoint> srcConnPoints, List<ConnectionPoint> destConnPoints, out ConnectionPoint srcConnPoint, out ConnectionPoint destConnPoint)
-        {
-            double minDist = double.PositiveInfinity;
-            double dist;
-            ConnectionPoint tempConnPoint;
-            srcConnPoint = null;
-            destConnPoint = null;
-            foreach (ConnectionPoint connPoint in srcConnPoints)
-            {
-                tempConnPoint = GetClosestConnectionPoint(connPoint, destConnPoints, out dist);
-                if (dist < minDist)
-                {
-                    minDist = dist;
-                    srcConnPoint = connPoint;
-                    destConnPoint = tempConnPoint;
-                }
-            }
-            Fx.Assert(srcConnPoint != null, "No ConnectionPoint found");
-            Fx.Assert(destConnPoint != null, "No ConnectionPoint found");
-        }
-
-        static void GetEmptySrcDestConnectionPoints(UIElement source, UIElement dest, out ConnectionPoint srcConnPoint, out ConnectionPoint destConnPoint)
-        {
-            srcConnPoint = null;
-            destConnPoint = null;
-            List<ConnectionPoint> srcConnectionPoints = GetEmptyConnectionPoints(source);
-            List<ConnectionPoint> destConnectionPoints = GetEmptyConnectionPoints(dest);
-            if (srcConnectionPoints.Count > 0 && destConnectionPoints.Count > 0)
-            {
-                GetClosestConnectionPointPair(srcConnectionPoints, destConnectionPoints, out srcConnPoint, out destConnPoint);
-            }
-        }
-
-        internal static List<ConnectionPoint> GetEmptyConnectionPoints(UIElement designer)
-        {
-            List<ConnectionPoint> connectionPoints = StateContainerEditor.GetConnectionPoints(designer);
-            if (connectionPoints != null)
-            {
-                return new List<ConnectionPoint>(connectionPoints.Where<ConnectionPoint>(
-                    (p) => { return p.AttachedConnectors == null || p.AttachedConnectors.Count == 0; }));
-            }
-            return new List<ConnectionPoint>();
-        }
-
-        //This returns the closest non-incoming connectionPoint on source. Return value will be different than destConnectionPoint.
-        static ConnectionPoint GetClosestSrcConnectionPoint(UIElement src, ConnectionPoint destConnectionPoint)
-        {
-            ConnectionPoint srcConnectionPoint = null;
-            if (destConnectionPoint.PointType != ConnectionPointKind.Outgoing)
-            {
-                srcConnectionPoint = GetClosestConnectionPointNotOfType(destConnectionPoint, StateContainerEditor.GetConnectionPoints(src), ConnectionPointKind.Incoming);
-            }
-            return srcConnectionPoint;
-        }
-
-        //This returns the closest non-outgoing connectionPoint on dest. Return value will be different than sourceConnectionPoint.
-        static ConnectionPoint GetClosestDestConnectionPoint(ConnectionPoint sourceConnectionPoint, UIElement dest)
-        {
-            ConnectionPoint destConnectionPoint = null;
-            if (sourceConnectionPoint.PointType != ConnectionPointKind.Incoming)
-            {
-                destConnectionPoint = GetClosestConnectionPointNotOfType(sourceConnectionPoint, StateContainerEditor.GetConnectionPoints(dest), ConnectionPointKind.Outgoing);
-            }
-            return destConnectionPoint;
-        }
-
-        static ConnectionPoint GetSrcConnectionPointForSharedTrigger(UIElement sourceDesigner, ModelItem connectorModelItem)
-        {
-            ConnectionPoint sourceConnectionPoint = null;
-            List<Connector> connectors = StateContainerEditor.GetOutgoingConnectors(sourceDesigner);
-            foreach (Connector connector in connectors)
-            {
-                ModelItem modelItem = StateContainerEditor.GetConnectorModelItem(connector);
-                if (modelItem != null && modelItem.ItemType == typeof(Transition))
-                {
-                    if (modelItem.Properties[TransitionDesigner.TriggerPropertyName].Value == connectorModelItem.Properties[TransitionDesigner.TriggerPropertyName].Value)
-                    {
-                        sourceConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
-                    }
-                }
-            }
-            return sourceConnectionPoint;
-        }
-
-        // Test if the transition is contained by any of the states or their descendants
-        static bool IsTransitionModelItemContainedByStateModelItems(ModelItem transitionModelItem, IEnumerable<ModelItem> stateModelItems)
-        {
-            foreach (ModelItem stateModelItem in stateModelItems)
-            {
-                if (stateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Contains(transitionModelItem))
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        static bool IsTransitionDestinationWithinStates(Transition transition, IEnumerable<State> states)
-        {
-            foreach (State state in states)
-            {
-                if (transition.To == state)
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        // Remove dangling transitions that are not pointing to any of the input states or their descendants
-        static void RemoveDanglingTransitions(IEnumerable<State> states)
-        {
-            Queue<State> statesToProcess = new Queue<State>(states);
-            while (statesToProcess.Count > 0)
-            {
-                State state = statesToProcess.Dequeue();
-
-                IEnumerable<Transition> toRemove = state.Transitions.Where<Transition>((p) =>
-                    { return !IsTransitionDestinationWithinStates(p, states); }).Reverse();
-                foreach (Transition transition in toRemove)
-                {
-                    state.Transitions.Remove(transition);
-                }
-
-            }
-        }
-
-        static List<ModelItem> GetTransitionModelItems(IEnumerable<ModelItem> stateModelItems)
-        {
-            List<ModelItem> transitionModelItems = new List<ModelItem>();
-            foreach (ModelItem stateModelItem in stateModelItems)
-            {
-                transitionModelItems.AddRange(stateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection);
-                //transitionModelItems.AddRange(GetTransitionModelItems(stateModelItem.Properties[ChildStatesPropertyName].Collection));
-            }
-            return transitionModelItems;
-        }
-
-        internal static bool IsFinalState(ModelItem modelItem)
-        {
-            return modelItem.ItemType == typeof(State) && (bool)modelItem.Properties[StateDesigner.IsFinalPropertyName].Value.GetCurrentValue();
-        }
-
-        static void ShowMessageBox(string message)
-        {
-            MessageBox.Show(message, SR.ErrorMessageBoxTitle, MessageBoxButton.OK, MessageBoxImage.Error);
-        }
-
-        static void ReportConnectorCreationError(ConnectorCreationResult result)
-        {
-            switch (result)
-            {
-                case ConnectorCreationResult.CannotCreateTransitionToCompositeState:
-                    ShowMessageBox(SR.CannotCreateTransitionToCompositeState);
-                    break;
-                case ConnectorCreationResult.CannotCreateTransitionFromAncestorToDescendant:
-                    ShowMessageBox(SR.CannotCreateTransitionFromAncestorToDescendant);
-                    break;
-                case ConnectorCreationResult.CannotSetCompositeStateAsInitialState:
-                    ShowMessageBox(SR.CannotSetCompositeStateAsInitialState);
-                    break;
-                case ConnectorCreationResult.CannotSetFinalStateAsInitialState:
-                    ShowMessageBox(SR.CannotSetFinalStateAsInitialState);
-                    break;
-                case ConnectorCreationResult.OtherFailure:
-                    ShowMessageBox(SR.CannotCreateLink);
-                    break;
-            }
-        }
-
-        static bool IsConnectorFromInitialNode(Connector connector)
-        {
-            return GetConnectorModelItem(connector).ItemType == typeof(StateMachine);
-        }
-
-        internal static string GenerateTransitionName(ModelItem stateMachineModelItem)
-        {
-            Fx.Assert(stateMachineModelItem.ItemType == typeof(StateMachine), "ModelItem param should be a statemachine.");
-            HashSet<String> existingTransitionNames = new HashSet<string>();
-
-            foreach (ModelItem stateModelItem in stateMachineModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
-            {
-                foreach (ModelItem transitionModelItem in stateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection)
-                {
-                    existingTransitionNames.Add(((Transition)transitionModelItem.GetCurrentValue()).DisplayName);
-                }
-            }
-
-            int suffix = 0;
-            string name;
-
-            do
-            {
-                name = string.Format(CultureInfo.InvariantCulture, "T{0}", ++suffix);
-            } while (existingTransitionNames.Contains<string>(name));
-
-            return name;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerEditor.xaml.cs
deleted file mode 100644 (file)
index 7c8a70f..0000000
+++ /dev/null
@@ -1,2696 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.Services;
-    using System.Activities.Presentation.View;
-    using System.Collections.Generic;
-    using System.Collections.Specialized;
-    using System.ComponentModel;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Windows;
-    using System.Windows.Automation;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Documents;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Windows.Threading;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Statements;
-    using System.Runtime;
-    using System.Activities.Presentation.Internal.PropertyEditing;
-    using System.Globalization;
-
-    // The StateContainerEditor contains a FreeFormPanel that implements free form editing behaviors
-    // for States and Transitions among them. An instance of StateMachineDesigner and an instance of
-    // StateDesigner each contains an instance of StateContainerEditor to edit its child States and
-    // Transitions.
-    partial class StateContainerEditor : IAutoConnectContainer, IAutoSplitContainer
-    {
-        // Used to find the destination state when pasting transition.
-        private static Dictionary<ModelItem, string> modelItemToGuid = new Dictionary<ModelItem, string>();
-        internal static ModelItem CopiedTransitionDestinationState { get; set; }
-
-        // Flag to indicate whether the editor has been populated
-        bool populated = false;
-
-        // To keep track of all child state designer
-        Dictionary<ModelItem, UIElement> modelItemToUIElement;
-
-        // shapeLocations is useful to avoid pasting on existing shapes.
-        HashSet<Point> shapeLocations = null;
-
-        // To keep track of transition collections that the outmost editor listens to the CollectionChanged events.
-        HashSet<ModelItem> listenedTransitionCollections;
-
-        // Flag whether the view state change has already been committed in the UI.
-        bool internalViewStateChange = false;
-
-        // activeSrcConnectionPoint is required for connector creation gesture to store the source of the link.
-        ConnectionPoint activeSrcConnectionPoint;
-
-        ConnectionPoint activeDestConnectionPointForAutoSplit;
-
-        ConnectionPoint activeSrcConnectionPointForAutoSplit;
-
-        EdgeLocation entryEdgeForAutoSplit;
-
-        EdgeLocation exitEdgeForAutoSplit;
-
-        // selectedConnector is a placeholder for the last connector selected.
-        Connector selectedConnector = null;
-
-        bool updatingSelectedConnector;
-
-        // Used for connector creation
-        UIElement lastConnectionPointMouseUpElement = null;
-
-        // Only used by the outmost editor to keep track of transitions added/removed when editing scope completes
-        List<ModelItem> transitionModelItemsAdded;
-        List<ModelItem> transitionModelItemsRemoved;
-
-        // The outmost editor when the designer is populated.
-        // This is used to find the outmost editor when this editor has been removed from the visual tree.
-        StateContainerEditor stateMachineContainerEditor = null;
-
-        // To keep track of whether the initial state is changed during an EditingScope
-        bool initialStateChanged = false;
-
-        // The initial node symbol
-        UIElement initialNode = null;
-
-        // The ModelItem for the initial node
-        ModelItem initialModelItem = null;
-
-        // To register / unregister the editor as the default composite view on its parent
-        ICompositeViewEvents compositeViewEvents = null;
-
-        Size requiredSize = new Size(0, 0);
-
-        bool suppressAddingConnectorsWhenAddingStateVisuals = false;
-
-        ConnectionPointsAdorner activeConnectionPointsAdorner = null;
-        ConnectionPoint activeConnectionPoint = null;
-
-        SubscribeContextCallback<Selection> onSelectionChangedCallback = null;
-
-        bool? isRightToLeft;
-
-        // Constants
-        const double startSymbolTopMargin = 10.0;
-        // Default size of the state container editor when it is inside of the state designer
-        const double DefaultWidthForState = 100;
-        const double DefaultHeightForState = 25;
-        // Default size of the state container editor when it is inside of the state machine designer
-        const double DefaultWidthForStateMachine = 600;
-        const double DefaultHeightForStateMachine = 600;
-        // Default size of the state designer
-        const double DefaultStateDesignerWidth = 114;
-        const double DefaultStateDesignerHeight = 61;
-        // Default size of the initial / final node
-        const double InitialNodeWidth = 60;
-        const double InitialNodeHeight = 75;
-        const double ConnectionPointMargin = 15;
-        const string ShapeLocationViewStateKey = "ShapeLocation";
-        const string ShapeSizeViewStateKey = "ShapeSize";
-        internal const string ConnectorLocationViewStateKey = "ConnectorLocation";
-        internal const string SrcConnectionPointIndexStateKey = "SrcConnectionPointIndex";
-        internal const string DestConnectionPointIndexStateKey = "DestConnectionPointIndex";
-        internal const string StateContainerWidthViewStateKey = "StateContainerWidth";
-        internal const string StateContainerHeightViewStateKey = "StateContainerHeight";
-        internal const string DefaultStateDisplayName = "State";
-        internal const string DefaultFinalStateDisplayName = "FinalState";
-        internal const int ConnectionPointNum = 19;
-        private const string TriggerNameToolTip = "Trigger: {0}";
-        private const string TransitionNameToolTip = "Transition: {0}";
-
-        public static readonly DependencyProperty StateContainerWidthProperty = DependencyProperty.Register(
-            "StateContainerWidth",
-            typeof(double),
-            typeof(StateContainerEditor),
-            new FrameworkPropertyMetadata(DefaultWidthForState));
-
-        public static readonly DependencyProperty StateContainerHeightProperty = DependencyProperty.Register(
-            "StateContainerHeight",
-            typeof(double),
-            typeof(StateContainerEditor),
-            new FrameworkPropertyMetadata(DefaultHeightForState));
-
-        public static readonly DependencyProperty PanelMinWidthProperty = DependencyProperty.Register(
-            "PanelMinWidth",
-            typeof(double),
-            typeof(StateContainerEditor),
-            new FrameworkPropertyMetadata());
-
-        public static readonly DependencyProperty PanelMinHeightProperty = DependencyProperty.Register(
-            "PanelMinHeight",
-            typeof(double),
-            typeof(StateContainerEditor),
-            new FrameworkPropertyMetadata());
-
-        public static readonly DependencyProperty ConnectorModelItemProperty = DependencyProperty.RegisterAttached(
-            "ConnectorModelItem",
-            typeof(ModelItem),
-            typeof(StateContainerEditor),
-            new FrameworkPropertyMetadata());
-
-        public static readonly DependencyProperty ConnectionPointsProperty = DependencyProperty.RegisterAttached(
-            "ConnectionPoints",
-            typeof(List<ConnectionPoint>),
-            typeof(StateContainerEditor),
-            new FrameworkPropertyMetadata());
-
-        public static readonly DependencyProperty ModelItemProperty = DependencyProperty.Register(
-            "ModelItem",
-            typeof(ModelItem),
-            typeof(StateContainerEditor),
-            new FrameworkPropertyMetadata());
-
-        public static readonly DependencyProperty IsReadOnlyProperty = DependencyProperty.Register(
-            "IsReadOnly",
-            typeof(bool), typeof(StateContainerEditor),
-            new FrameworkPropertyMetadata(false));
-
-        public static readonly DependencyProperty IsStateMachineContainerProperty = DependencyProperty.Register(
-           "IsStateMachineContainer",
-           typeof(bool), typeof(StateContainerEditor),
-           new FrameworkPropertyMetadata(false));
-
-        public StateContainerEditor()
-        {
-            InitializeComponent();
-            this.modelItemToUIElement = new Dictionary<ModelItem, UIElement>();
-            this.shapeLocations = new HashSet<Point>();
-            this.listenedTransitionCollections = new HashSet<ModelItem>();
-            this.transitionModelItemsAdded = new List<ModelItem>();
-            this.transitionModelItemsRemoved = new List<ModelItem>();
-
-            Binding readOnlyBinding = new Binding();
-            readOnlyBinding.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(DesignerView), 1);
-            readOnlyBinding.Path = new PropertyPath(DesignerView.IsReadOnlyProperty);
-            readOnlyBinding.Mode = BindingMode.OneWay;
-            this.SetBinding(IsReadOnlyProperty, readOnlyBinding);
-
-            this.Loaded += (s, e) =>
-            {
-                if (this.ShouldInitialize())
-                {
-                    WorkflowViewElement parent = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(this);
-                    this.ModelItem = parent.ModelItem;
-                    this.StateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.ModelItem);
-                    this.Context = parent.Context;
-                    this.compositeViewEvents = parent;
-                    if (this.compositeViewEvents != null)
-                    {
-                        this.compositeViewEvents.RegisterDefaultCompositeView(this);
-                    }
-                    if (!this.populated)
-                    {
-                        this.Populate();
-                        Selection.Subscribe(this.Context, this.OnSelectionChangedCallback);
-                        this.populated = true;
-                    }
-                }
-            };
-
-            this.Unloaded += (s, e) =>
-            {
-                if (this.compositeViewEvents != null)
-                {
-                    (compositeViewEvents).UnregisterDefaultCompositeView(this);
-                    this.compositeViewEvents = null;
-                }
-                if (this.populated)
-                {
-                    this.Cleanup();
-                    Selection.Unsubscribe(this.Context, this.OnSelectionChangedCallback);
-                    this.populated = false;
-                }
-
-                this.StateMachineModelItem = null;
-
-                this.activeSrcConnectionPoint = null;
-                this.activeDestConnectionPointForAutoSplit = null;
-                this.activeSrcConnectionPointForAutoSplit = null;
-
-                // selectedConnector is a placeholder for the last connector selected.
-                this.selectedConnector = null;
-
-                // Used for connector creation
-                this.lastConnectionPointMouseUpElement = null;
-                this.activeConnectionPointsAdorner = null;
-                this.activeConnectionPoint = null;
-                this.initialNode = null;
-                // The ModelItem for the initial node
-                this.initialModelItem = null;
-
-                BindingOperations.ClearBinding(this, IsReadOnlyProperty);
-            };
-        }
-
-        internal FreeFormPanel Panel
-        {
-            get
-            {
-                return this.panel;
-            }
-        }
-
-        ViewStateService ViewStateService
-        {
-            get
-            {
-                ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
-                return viewStateService;
-            }
-        }
-
-        DesignerView DesignerView
-        {
-            get
-            {
-                return this.Context.Services.GetService<DesignerView>();
-            }
-        }
-
-        SubscribeContextCallback<Selection> OnSelectionChangedCallback
-        {
-            get
-            {
-                if (this.onSelectionChangedCallback == null)
-                {
-                    this.onSelectionChangedCallback = new SubscribeContextCallback<Selection>(this.OnSelectionChanged);
-                }
-
-                return this.onSelectionChangedCallback;
-            }
-        }
-
-        public double StateContainerWidth
-        {
-            get { return (double)this.GetValue(StateContainerEditor.StateContainerWidthProperty); }
-            set { this.SetValue(StateContainerEditor.StateContainerWidthProperty, value); }
-        }
-
-        public double StateContainerHeight
-        {
-            get { return (double)this.GetValue(StateContainerEditor.StateContainerHeightProperty); }
-            set { this.SetValue(StateContainerEditor.StateContainerHeightProperty, value); }
-        }
-
-        public double PanelMinWidth
-        {
-            get { return (double)this.GetValue(StateContainerEditor.PanelMinWidthProperty); }
-            set { this.SetValue(StateContainerEditor.PanelMinWidthProperty, value); }
-        }
-
-        public double PanelMinHeight
-        {
-            get { return (double)this.GetValue(StateContainerEditor.PanelMinHeightProperty); }
-            set { this.SetValue(StateContainerEditor.PanelMinHeightProperty, value); }
-        }
-
-        public ModelItem ModelItem
-        {
-            get { return (ModelItem)GetValue(ModelItemProperty); }
-            set { SetValue(ModelItemProperty, value); }
-        }
-
-        protected bool IsReadOnly
-        {
-            get { return (bool)GetValue(IsReadOnlyProperty); }
-            private set { SetValue(IsReadOnlyProperty, value); }
-        }
-
-        protected bool IsStateMachineContainer
-        {
-            get { return (bool)GetValue(IsStateMachineContainerProperty); }
-            private set { SetValue(IsStateMachineContainerProperty, value); }
-        }
-
-
-        public EditingContext Context
-        {
-            get;
-            set;
-        }
-
-        ModelItem StateMachineModelItem
-        {
-            get;
-            set;
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-            this.DataContext = this;
-        }
-
-        #region PopulateCleanup
-
-        void Populate()
-        {
-            // Keep track of the outmost editor, which may not be accessible by traversing the visual tree when the designer is deleted.
-            this.stateMachineContainerEditor = this.GetStateMachineContainerEditor();
-
-            this.panel.LocationChanged += new LocationChangedEventHandler(OnFreeFormPanelLocationChanged);
-            this.panel.ConnectorMoved += new ConnectorMovedEventHandler(OnFreeFormPanelConnectorMoved);
-            this.panel.LayoutUpdated += new EventHandler(OnFreeFormPanelLayoutUpdated);
-            this.panel.RequiredSizeChanged += new RequiredSizeChangedEventHandler(OnFreeFormPanelRequiredSizeChanged);
-
-            this.ViewStateService.ViewStateChanged += new ViewStateChangedEventHandler(OnViewStateChanged);
-
-            if (this.ModelItem.ItemType == typeof(StateMachine))
-            {
-                // Only StateMachine supports "States" collection
-                IsStateMachineContainer = true;
-                this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection.CollectionChanged += new NotifyCollectionChangedEventHandler(OnStateCollectionChanged);
-                this.ModelItem.PropertyChanged += new PropertyChangedEventHandler(this.OnModelPropertyChanged);
-                ModelTreeManager modelTreeManager = this.Context.Services.GetService<ModelTreeManager>();
-                modelTreeManager.EditingScopeCompleted += new EventHandler<EditingScopeEventArgs>(this.OnEditingScopeCompleted);
-
-                foreach (ModelItem modelItem in this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
-                {
-                    if (modelItem.ItemType == typeof(State))
-                    {
-                        ModelItemCollection transitions = modelItem.Properties[StateDesigner.TransitionsPropertyName].Collection;
-                        if (!this.listenedTransitionCollections.Contains(transitions))
-                        {
-                            transitions.CollectionChanged += new NotifyCollectionChangedEventHandler(this.OnTransitionCollectionChanged);
-                            this.listenedTransitionCollections.Add(transitions);
-                        }
-                    }
-                }
-            }
-
-
-            object widthViewState = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerWidthViewStateKey);
-            if (widthViewState != null)
-            {
-                this.StateContainerWidth = (double)widthViewState;
-            }
-
-            object heightViewState = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerHeightViewStateKey);
-            if (heightViewState != null)
-            {
-                this.StateContainerHeight = (double)heightViewState;
-            }
-
-            this.panel.Children.Clear();
-            this.modelItemToUIElement.Clear();
-            this.shapeLocations.Clear();
-
-            if (this.ModelItem.ItemType == typeof(StateMachine))
-            {
-                this.AddInitialNode();
-                this.AddStateVisuals(this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection);
-            }
-        }
-
-        void Cleanup()
-        {
-            this.panel.Children.Clear();
-            // Cleaning up the designers as they might be re-used.
-            foreach (UIElement element in this.modelItemToUIElement.Values)
-            {
-                element.MouseEnter -= new MouseEventHandler(OnChildElementMouseEnter);
-                element.MouseLeave -= new MouseEventHandler(OnChildElementMouseLeave);
-                ((FrameworkElement)element).SizeChanged -= new SizeChangedEventHandler(OnChildElementSizeChanged);
-            }
-            this.modelItemToUIElement.Clear();
-            this.panel.LocationChanged -= new LocationChangedEventHandler(OnFreeFormPanelLocationChanged);
-            this.panel.ConnectorMoved -= new ConnectorMovedEventHandler(OnFreeFormPanelConnectorMoved);
-            this.panel.LayoutUpdated -= new EventHandler(OnFreeFormPanelLayoutUpdated);
-            this.panel.RequiredSizeChanged -= new RequiredSizeChangedEventHandler(OnFreeFormPanelRequiredSizeChanged);
-            this.ViewStateService.ViewStateChanged -= new ViewStateChangedEventHandler(OnViewStateChanged);
-
-            if (this.ModelItem.ItemType == typeof(StateMachine))
-            {
-                // Only StateMachine supports "States" collection
-                this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection.CollectionChanged -= new NotifyCollectionChangedEventHandler(OnStateCollectionChanged);
-                this.ModelItem.PropertyChanged -= new PropertyChangedEventHandler(this.OnModelPropertyChanged);
-                ModelTreeManager modelTreeManager = this.Context.Services.GetService<ModelTreeManager>();
-                modelTreeManager.EditingScopeCompleted -= new EventHandler<EditingScopeEventArgs>(this.OnEditingScopeCompleted);
-
-                foreach (ModelItem modelItem in this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
-                {
-                    if (modelItem.ItemType == typeof(State))
-                    {
-                        ModelItemCollection transitions = modelItem.Properties[StateDesigner.TransitionsPropertyName].Collection;
-                        if (this.listenedTransitionCollections.Contains(transitions))
-                        {
-                            transitions.CollectionChanged -= new NotifyCollectionChangedEventHandler(this.OnTransitionCollectionChanged);
-                            this.listenedTransitionCollections.Remove(transitions);
-                        }
-                    }
-                }
-            }
-
-            // stateMachineContainerEditor will be null when dropping a State into a WorkflowItemPresenter.
-            if (this.ModelItem.ItemType == typeof(State) && this.stateMachineContainerEditor != null)
-            {
-                this.stateMachineContainerEditor = null;
-            }
-        }
-
-        #endregion
-
-        #region InitialNode
-
-        void AddInitialNode()
-        {
-            // Instantiate the initial node
-            StartSymbol initialNode = StartSymbol.CreateStartSymbol(this.Context);
-            initialNode.Text = "Start";
-            this.initialModelItem = initialNode.ModelItem;
-            this.modelItemToUIElement.Add(this.initialModelItem, initialNode);
-            DragDropHelper.SetCompositeView(initialNode, this);
-            this.initialNode = initialNode;
-            this.PopulateConnectionPoints(this.initialNode);
-            this.initialNode.MouseEnter += new MouseEventHandler(OnChildElementMouseEnter);
-            this.initialNode.MouseLeave += new MouseEventHandler(OnChildElementMouseLeave);
-            this.panel.Children.Add(this.initialNode);
-            this.initialNode.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
-            double startHeight = this.initialNode.DesiredSize.Height;
-            double startWidth = this.initialNode.DesiredSize.Width;
-            object locationOfShape = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerEditor.ShapeLocationViewStateKey);
-            if (locationOfShape != null)
-            {
-                Point locationPt = (Point)locationOfShape;
-                FreeFormPanel.SetLocation(this.initialNode, locationPt);
-            }
-            // If the view state is missing, place the initial node in the top middle.
-            else
-            {
-                Point startPoint = new Point(this.panel.MinWidth / 2, startSymbolTopMargin + startHeight / 2);
-                Point startLocation = SnapVisualToGrid(this.initialNode, startPoint, new Point(-1, -1), false);
-                FreeFormPanel.SetLocation(this.initialNode, startLocation);
-                this.internalViewStateChange = true;
-                this.StoreShapeLocationViewState(this.ModelItem, startLocation);
-                this.internalViewStateChange = false;
-            }
-            FreeFormPanel.SetChildSize(this.initialNode, new Size(startWidth, startHeight));
-        }
-
-        void AddInitialNodeConnector(UIElement initialStateView)
-        {
-            Fx.Assert(this.ModelItem.ItemType == typeof(StateMachine), "Only StateMachine should have initial state.");
-            List<Connector> attachedConnectors = StateContainerEditor.GetAttachedConnectors(this.initialNode);
-            if (attachedConnectors.Count == 0)
-            {
-                ConnectionPoint sourceConnectionPoint = StateContainerEditor.GetConnectionPointClosestToEdgeMidPoint(
-                    this.initialNode,
-                    StateContainerEditor.GetEmptyConnectionPoints(this.initialNode),
-                    EdgeLocation.Bottom);
-
-                Point srcLocation = FreeFormPanel.GetLocation(this.initialNode);
-                Size srcSize = FreeFormPanel.GetChildSize(this.initialNode);
-
-                Point destLocation = FreeFormPanel.GetLocation(initialStateView);
-                Size destSize = FreeFormPanel.GetChildSize(initialStateView);
-
-                // by default, the connector would connect to the top of the initial state
-                EdgeLocation destConnectorEdge = EdgeLocation.Top;
-
-                if (srcLocation.X > destLocation.X + destSize.Width)
-                {
-                    // if the state is located at the west of the start node, should connect to the right side of initial state.
-                    destConnectorEdge = EdgeLocation.Right;
-                }
-                else if (srcLocation.X + srcSize.Width < destLocation.X)
-                {
-                    // if the state is located at the east of the start node, should connect to the left side of initial state.
-                    destConnectorEdge = EdgeLocation.Left;
-                }
-
-                ConnectionPoint destinationConnectionPoint = StateContainerEditor.GetConnectionPointClosestToEdgeMidPoint(
-                    initialStateView,
-                    StateContainerEditor.GetEmptyConnectionPoints(initialStateView),
-                    destConnectorEdge);
-
-                this.AddConnector(this.initialNode,
-                    initialStateView,
-                    this.ModelItem,
-                    sourceConnectionPoint,
-                    destinationConnectionPoint);
-            }
-        }
-
-        #endregion
-
-        #region StateVisuals
-
-        UIElement ProcessAndGetModelView(ModelItem model)
-        {
-            UIElement element;
-            if (!this.modelItemToUIElement.TryGetValue(model, out element))
-            {
-                element = this.Context.Services.GetService<VirtualizedContainerService>().GetContainer(model, this);
-                if (element is VirtualizedContainerService.VirtualizingContainer)
-                {
-                    // Fix bug 183698 - if the container does not contain other states, the minwidth should
-                    // be re-set to the default and let the FreeFormPanel to calculate its actual size.
-                    // If a child state was previously expanded, the container's min size would be set
-                    // to its expanded size via ContainerService.GetHintSize in GetContainer() method.
-                    // But if the item is a simple state, its min size should be reset to the default minimum.
-                    ((VirtualizedContainerService.VirtualizingContainer)element).MinWidth = DefaultStateDesignerWidth;
-                    ((VirtualizedContainerService.VirtualizingContainer)element).MinHeight = DefaultStateDesignerHeight;
-                }
-                else
-                {
-                    Fx.Assert(false, "We expect GetContainer always returns a VirtualizingContainer.");
-                }
-
-
-                element.MouseEnter += new MouseEventHandler(OnChildElementMouseEnter);
-                element.MouseLeave += new MouseEventHandler(OnChildElementMouseLeave);
-                ((FrameworkElement)element).SizeChanged += new SizeChangedEventHandler(OnChildElementSizeChanged);
-                this.modelItemToUIElement.Add(model, element);
-                this.PopulateConnectionPoints(element);
-
-                object locationOfShape = this.ViewStateService.RetrieveViewState(model, ShapeLocationViewStateKey);
-                object sizeOfShape = this.ViewStateService.RetrieveViewState(model, ShapeSizeViewStateKey);
-                if (locationOfShape != null)
-                {
-                    Point locationPt = (Point)locationOfShape;
-                    FreeFormPanel.SetLocation(element, locationPt);
-                    this.shapeLocations.Add(locationPt);
-                }
-                if (sizeOfShape != null)
-                {
-                    Size size = (Size)sizeOfShape;
-                    FreeFormPanel.SetChildSize(element, size);
-                    VirtualizedContainerService.VirtualizingContainer virtualizingContainer = element as VirtualizedContainerService.VirtualizingContainer;
-                    if (virtualizingContainer != null)
-                    {
-                        virtualizingContainer.MinWidth = size.Width;
-                        virtualizingContainer.MinHeight = size.Height;
-                    }
-                }
-            }
-            return element;
-        }
-
-        void AddStateVisuals(IList<ModelItem> modelItemCollection)
-        {
-            List<UIElement> viewsAdded = new List<UIElement>();
-            foreach (ModelItem modelItem in modelItemCollection)
-            {
-                if (!this.modelItemToUIElement.ContainsKey(modelItem))
-                {
-                    viewsAdded.Add(ProcessAndGetModelView(modelItem));
-                }
-                else if (!this.panel.Children.Contains(this.modelItemToUIElement[modelItem]))
-                {
-                    viewsAdded.Add(this.modelItemToUIElement[modelItem]);
-                }
-            }
-            foreach (UIElement view in viewsAdded)
-            {
-                this.panel.Children.Add(view);
-            }
-
-            // We need to wait until after the state visuals are added and displayed.
-            this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
-            {
-                if (!suppressAddingConnectorsWhenAddingStateVisuals && this.populated)
-                {
-                    ModelItem stateMachineModelItem = null;
-                    foreach (UIElement view in viewsAdded)
-                    {
-                        ModelItem stateModelItem = StateContainerEditor.GetModelItemFromView(view);
-                        this.AddChildTransitionVisualsToStateMachineEditor(stateModelItem);
-                        if (stateMachineModelItem == null)
-                        {
-                            stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(stateModelItem);
-                        }
-                        if (stateMachineModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].Value == stateModelItem)
-                        {
-                            this.AddInitialNodeConnector(view);
-                        }
-                    }
-                }
-            }));
-
-        }
-
-        void RemoveStateVisual(UIElement removedStateDesigner)
-        {
-            HashSet<Connector> connectorsToDelete = new HashSet<Connector>();
-            ModelService modelService = this.Context.Services.GetService<ModelService>();
-            List<UIElement> removedStateDesigners = new List<UIElement>();
-            removedStateDesigners.Add(removedStateDesigner);
-
-            StateContainerEditor stateMachineEditor = this.GetStateMachineContainerEditor();
-            foreach (UIElement designer in removedStateDesigners)
-            {
-                if (stateMachineEditor.activeSrcConnectionPoint != null)
-                {
-                    List<ConnectionPoint> connectionPoints = GetConnectionPoints(designer);
-                    if (connectionPoints.Contains(stateMachineEditor.activeSrcConnectionPoint))
-                    {
-                        stateMachineEditor.activeSrcConnectionPoint = null;
-                        RemoveAdorner(stateMachineEditor.panel, typeof(ConnectorCreationAdorner));
-                    }
-                }
-                if (stateMachineEditor.lastConnectionPointMouseUpElement == designer)
-                {
-                    stateMachineEditor.lastConnectionPointMouseUpElement = null;
-                }
-                connectorsToDelete.UnionWith(GetAttachedConnectors(designer));
-            }
-
-            // Remove any connector visuals attached to this shape. This is required for the scenarios as follows:
-            // Copy and paste two connected States into StateMachine and undo the paste.
-            // The Transition is not removed as a model change. Hence the connector visual will remain dangling on the designer.
-            foreach (Connector connector in connectorsToDelete)
-            {
-                this.Remove(connector);
-            }
-
-            ModelItem modelItem = ((VirtualizedContainerService.VirtualizingContainer)removedStateDesigner).ModelItem;
-            this.modelItemToUIElement.Remove(modelItem);
-            removedStateDesigner.MouseEnter -= new MouseEventHandler(OnChildElementMouseEnter);
-            removedStateDesigner.MouseLeave -= new MouseEventHandler(OnChildElementMouseLeave);
-            ((FrameworkElement)removedStateDesigner).SizeChanged -= new SizeChangedEventHandler(OnChildElementSizeChanged);
-
-            this.panel.Children.Remove(removedStateDesigner);
-
-            // deselect removed item
-            if (this.Context != null)
-            {
-                HashSet<ModelItem> selectedItems = new HashSet<ModelItem>(this.Context.Items.GetValue<Selection>().SelectedObjects);
-                if (selectedItems.Contains(modelItem))
-                {
-                    Selection.Toggle(this.Context, modelItem);
-                }
-            }
-
-            object locationOfShape = this.ViewStateService.RetrieveViewState(modelItem, StateContainerEditor.ShapeLocationViewStateKey);
-            if (locationOfShape != null)
-            {
-                this.shapeLocations.Remove((Point)locationOfShape);
-            }
-        }
-
-        #endregion
-
-        #region TransitionVisualsAndConnector
-
-        void AddTransitionVisual(ModelItem transitionModelItem)
-        {
-            ModelItem sourceState = StateContainerEditor.GetParentStateModelItemForTransition(transitionModelItem);
-            ModelItem destinationState = transitionModelItem.Properties[TransitionDesigner.ToPropertyName].Value;
-            UIElement sourceDesigner = this.modelItemToUIElement[sourceState];
-            UIElement destinationDesigner = this.modelItemToUIElement[destinationState];
-            if (sourceDesigner.IsDescendantOf(this) && destinationDesigner.IsDescendantOf(this))
-            {
-                this.AddConnector(sourceDesigner, destinationDesigner, transitionModelItem);
-            }
-        }
-
-        void AddTransitionVisuals(IList<ModelItem> transitionModelItemCollection)
-        {
-            foreach (ModelItem transitionModelItem in transitionModelItemCollection)
-            {
-                this.AddTransitionVisual(transitionModelItem);
-            }
-        }
-
-        void AddChildTransitionVisualsToStateMachineEditor(ModelItem stateModelItem)
-        {
-            Fx.Assert(stateModelItem.ItemType == typeof(State), "The ModelItem should be a State.");
-            List<ModelItem> transitions = new List<ModelItem>();
-            transitions.AddRange(stateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection);
-            this.GetStateMachineContainerEditor().AddTransitionVisuals(transitions);
-        }
-
-        Connector CreateConnector(ConnectionPoint srcConnPoint, ConnectionPoint destConnPoint, PointCollection points, ModelItem connectorModelItem)
-        {
-            bool isTransition = connectorModelItem != null && connectorModelItem.ItemType == typeof(Transition);
-            Connector connector;
-            if (isTransition)
-            {
-                connector = new ConnectorWithStartDot();
-            }
-            else
-            {
-                connector = new ConnectorWithoutStartDot();
-            }
-
-            connector.FocusVisualStyle = null;
-            connector.Focusable = true;
-            DesignerView.SetCommandMenuMode(connector, CommandMenuMode.NoCommandMenu);
-            if (isTransition)
-            {
-                SetConnectorLabel(connector, connectorModelItem);
-                SetConnectorStartDotToolTip(connector.StartDot, connectorModelItem);
-                connector.HighlightOnHover = true;
-                connector.ToolTip = new StateConnectionPointToolTip();
-                connector.StartDot.MouseDown += new MouseButtonEventHandler(OnConnectorStartDotMouseDown);
-                connector.StartDot.MouseUp += new MouseButtonEventHandler(OnConnectorStartDotMouseUp);
-            }
-            AutomationProperties.SetName(connector, SR.ConnectionAutomationPropertiesName);
-            connector.GotKeyboardFocus += new KeyboardFocusChangedEventHandler(OnConnectorGotKeyboardFocus);
-            connector.RequestBringIntoView += new RequestBringIntoViewEventHandler(OnConnectorRequestBringIntoView);
-            connector.GotFocus += new RoutedEventHandler(OnConnectorGotFocus);
-            connector.MouseDoubleClick += new MouseButtonEventHandler(OnConnectorMouseDoubleClick);
-            connector.MouseDown += new MouseButtonEventHandler(OnConnectorMouseDown);
-            connector.KeyDown += new KeyEventHandler(OnConnectorKeyDown);
-            connector.ContextMenuOpening += new ContextMenuEventHandler(OnConnectorContextMenuOpening);
-            SetConnectorSrcDestConnectionPoints(connector, srcConnPoint, destConnPoint);
-            StateContainerEditor.SetConnectorModelItem(connector, connectorModelItem);
-            connector.Unloaded += new RoutedEventHandler(OnConnectorUnloaded);
-            connector.Points = points;
-            connector.AutoSplitContainer = this;
-
-            if (connectorModelItem.ItemType == typeof(Transition))
-            {
-                int srcConnectionPointIndex = StateContainerEditor.GetConnectionPoints(srcConnPoint.ParentDesigner).IndexOf(srcConnPoint);
-                int destConnectionPointIndex = StateContainerEditor.GetConnectionPoints(destConnPoint.ParentDesigner).IndexOf(destConnPoint);
-                this.ViewStateService.StoreViewState(connectorModelItem, SrcConnectionPointIndexStateKey, srcConnectionPointIndex);
-                this.ViewStateService.StoreViewState(connectorModelItem, DestConnectionPointIndexStateKey, destConnectionPointIndex);
-            }
-
-            return connector;
-        }
-
-        private void PopulateVirtualizingContainer(ModelItem item)
-        {
-            // For a VirtualizedContainer ModelItem, if it is newly created, its View is null.
-            // Otherwise its View is still the old view which does not belong to the current stateContainerEditor.
-            if (item != null && (item.View == null || DragDropHelper.GetCompositeView((WorkflowViewElement)item.View) != (UIElement)this))
-            {
-                UIElement element;
-                if (modelItemToUIElement.TryGetValue(item, out element) && element is VirtualizedContainerService.VirtualizingContainer)
-                {
-                    VirtualizedContainerService.VirtualizingContainer container = element as VirtualizedContainerService.VirtualizingContainer;
-                    container.Populate();
-                }
-            }
-        }
-
-        private bool IsRightToLeft
-        {
-            get
-            {
-                if (!this.isRightToLeft.HasValue)
-                {
-                    this.isRightToLeft = FreeFormPanelUtilities.IsRightToLeft(this.stateContainerGrid);
-                }
-
-                return this.isRightToLeft.Value;
-            }
-        }
-
-        static bool IsViewStateValid(PointCollection locationPts)
-        {
-            return locationPts.All<Point>((p) => { return p.X.IsNoLessThan(0) && p.Y.IsNoLessThan(0); });
-        }
-
-        // Create a connector from the view state of the connector model item
-        Connector CreateConnectorByConnectorModelItemViewState(
-            UIElement source,
-            UIElement dest,
-            ModelItem connectorModelItem)
-        {
-            Connector connector = null;
-            object connectorLocation = this.ViewStateService.RetrieveViewState(connectorModelItem, ConnectorLocationViewStateKey);
-            PointCollection locationPts = connectorLocation as PointCollection;
-            if (locationPts != null)
-            {
-                ConnectionPoint srcConnPoint = null, destConnPoint = null;
-                if (connectorModelItem.ItemType == typeof(Transition))
-                {
-                    object srcConnPointIndex = this.ViewStateService.RetrieveViewState(connectorModelItem, SrcConnectionPointIndexStateKey);
-                    object destConnPointIndex = this.ViewStateService.RetrieveViewState(connectorModelItem, DestConnectionPointIndexStateKey);
-
-                    if (srcConnPointIndex != null)
-                    {
-                        List<ConnectionPoint> srcConnPoints = GetConnectionPoints(source);
-                        ConnectionPoint viewStateSrcConnPoint = srcConnPoints.ElementAt((int)srcConnPointIndex);
-
-                        if (viewStateSrcConnPoint != null)
-                        {
-                            srcConnPoint = viewStateSrcConnPoint;
-                        }
-                    }
-                    else if (connectorModelItem.Properties[TransitionDesigner.TriggerPropertyName].Value != null)
-                    {
-                        srcConnPoint = StateContainerEditor.GetSrcConnectionPointForSharedTrigger(source, connectorModelItem);
-                    }
-
-                    if (destConnPointIndex != null)
-                    {
-                        List<ConnectionPoint> destConnPoints = GetConnectionPoints(dest);
-                        ConnectionPoint viewStateDestConnPoint = destConnPoints.ElementAt((int)destConnPointIndex);
-
-                        if (viewStateDestConnPoint != null && GetEmptyConnectionPoints(dest).Contains(viewStateDestConnPoint))
-                        {
-                            destConnPoint = viewStateDestConnPoint;
-                        }
-                    }
-                }
-                if (srcConnPoint == null)
-                {
-                    srcConnPoint = GetConnectionPoint(source, locationPts[0]);
-                }
-
-                if (destConnPoint == null)
-                {
-                    destConnPoint = GetConnectionPoint(dest, locationPts[locationPts.Count - 1]);
-                }
-
-                bool shouldReroute = false;
-                if (srcConnPoint == null && destConnPoint == null)
-                {
-                    StateContainerEditor.GetEmptySrcDestConnectionPoints(source, dest, out srcConnPoint, out destConnPoint);
-                    shouldReroute = true;
-                }
-                else if (srcConnPoint == null && destConnPoint != null)
-                {
-                    List<ConnectionPoint> srcConnectionPoints = GetEmptyConnectionPoints(source);
-                    if (srcConnectionPoints.Count > 0)
-                    {
-                        srcConnPoint = StateContainerEditor.GetClosestConnectionPointNotOfType(destConnPoint, srcConnectionPoints, ConnectionPointKind.Incoming);
-                    }
-                    shouldReroute = true;
-                }
-                else if (destConnPoint == null && srcConnPoint != null)
-                {
-                    List<ConnectionPoint> destConnectionPoints = GetEmptyConnectionPoints(dest);
-                    if (destConnectionPoints.Count > 0)
-                    {
-                        destConnPoint = StateContainerEditor.GetClosestConnectionPointNotOfType(srcConnPoint, destConnectionPoints, ConnectionPointKind.Outgoing);
-                    }
-                    shouldReroute = true;
-                }
-                if (srcConnPoint != null && destConnPoint != null)
-                {
-                    if (shouldReroute || !IsViewStateValid(locationPts))
-                    {
-                        PointCollection connectorPoints = new PointCollection(ConnectorRouter.Route(this.panel, srcConnPoint, destConnPoint));
-                        this.ViewStateService.StoreViewState(connectorModelItem, ConnectorLocationViewStateKey, connectorPoints);
-                        connector = CreateConnector(srcConnPoint, destConnPoint, connectorPoints, connectorModelItem);
-                    }
-                    else
-                    {
-                        connector = this.CreateConnector(srcConnPoint, destConnPoint, locationPts, connectorModelItem);
-                    }
-
-                }
-            }
-            return connector;
-        }
-
-        PointCollection CreatePointCollectionForAutoConnectOrAutoSplit(UIElement sourceDesigner,
-            UIElement destinationDesigner,
-            ModelItem connectorModelItem,
-            ref ConnectionPoint sourceConnectionPoint,
-            ref ConnectionPoint destinationConnectionPoint)
-        {
-            PointCollection points = null;
-            if (this.activeSrcConnectionPointForAutoSplit != null && this.activeSrcConnectionPointForAutoSplit.ParentDesigner == sourceDesigner)
-            {
-                sourceConnectionPoint = this.activeSrcConnectionPointForAutoSplit;
-                this.activeSrcConnectionPointForAutoSplit = null;
-                destinationConnectionPoint = StateContainerEditor.GetConnectionPointClosestToEdgeMidPoint(destinationDesigner, StateContainerEditor.GetEmptyConnectionPoints(destinationDesigner), this.entryEdgeForAutoSplit);
-            }
-            else if (this.activeSrcConnectionPoint != null && this.activeSrcConnectionPoint.ParentDesigner == sourceDesigner)
-            {
-                sourceConnectionPoint = this.activeSrcConnectionPoint;
-                this.activeSrcConnectionPoint = null;
-            }
-            else
-            {
-                if (connectorModelItem.ItemType == typeof(Transition) && connectorModelItem.Properties[TransitionDesigner.TriggerPropertyName].Value != null)
-                {
-                    sourceConnectionPoint = StateContainerEditor.GetSrcConnectionPointForSharedTrigger(sourceDesigner, connectorModelItem);
-                }
-            }
-
-            if (this.activeDestConnectionPointForAutoSplit != null && this.activeDestConnectionPointForAutoSplit.ParentDesigner == destinationDesigner)
-            {
-                destinationConnectionPoint = this.activeDestConnectionPointForAutoSplit;
-                this.activeDestConnectionPointForAutoSplit = null;
-                sourceConnectionPoint = StateContainerEditor.GetConnectionPointClosestToEdgeMidPoint(sourceDesigner, StateContainerEditor.GetEmptyConnectionPoints(sourceDesigner), this.exitEdgeForAutoSplit);
-            }
-
-            if (sourceConnectionPoint != null && destinationConnectionPoint == null)
-            {
-                destinationConnectionPoint = StateContainerEditor.GetClosestDestConnectionPoint(sourceConnectionPoint, destinationDesigner);
-            }
-            else if (sourceConnectionPoint == null && destinationConnectionPoint != null)
-            {
-                sourceConnectionPoint = StateContainerEditor.GetClosestSrcConnectionPoint(sourceDesigner, destinationConnectionPoint);
-            }
-            else if (sourceConnectionPoint == null && destinationConnectionPoint == null)
-            {
-                StateContainerEditor.GetEmptySrcDestConnectionPoints(sourceDesigner, destinationDesigner, out sourceConnectionPoint, out destinationConnectionPoint);
-            }
-
-            if (sourceConnectionPoint != null && destinationConnectionPoint != null)
-            {
-                points = new PointCollection(ConnectorRouter.Route(this.panel, sourceConnectionPoint, destinationConnectionPoint));
-            }
-            return points;
-        }
-
-        // Create a connector by view state of the connector model item, and if failed, just create a connector using the connection points
-        // of the source and destination designers. Then add the connector created to the free form panel.
-        void AddConnector(
-            UIElement sourceDesigner,
-            UIElement destinationDesigner,
-            ModelItem connectorModelItem,
-            ConnectionPoint sourceConnectionPoint = null,
-            ConnectionPoint destinationConnectionPoint = null)
-        {
-            // Check whether connector already exists.
-            // If users programmatically add state with transition to the stateMachine, AddConnector will be called twice for one connectorModelItem.
-            if (GetConnectorInStateMachine(connectorModelItem) != null)
-            {
-                return;
-            }
-
-            Connector connector = CreateConnectorByConnectorModelItemViewState(sourceDesigner, destinationDesigner, connectorModelItem);
-            if (connector == null)
-            {
-                PointCollection connectorPoints = this.CreatePointCollectionForAutoConnectOrAutoSplit(sourceDesigner, destinationDesigner, connectorModelItem, ref sourceConnectionPoint, ref destinationConnectionPoint);
-                if (connectorPoints != null)
-                {
-                    connector = CreateConnector(sourceConnectionPoint, destinationConnectionPoint, connectorPoints, connectorModelItem);
-                    this.ViewStateService.StoreViewState(connectorModelItem, ConnectorLocationViewStateKey, connectorPoints);
-                }
-            }
-            if (connector != null)
-            {
-                this.panel.Children.Add(connector);
-            }
-        }
-
-        void Remove(Connector connector)
-        {
-            ConnectionPoint srcConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
-            ConnectionPoint destConnectionPoint = FreeFormPanel.GetDestinationConnectionPoint(connector);
-            // Update ConnectionPoints
-            srcConnectionPoint.AttachedConnectors.Remove(connector);
-            destConnectionPoint.AttachedConnectors.Remove(connector);
-
-            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
-            stateMachineContainer.panel.Children.Remove(connector);
-            if (stateMachineContainer.selectedConnector == connector)
-            {
-                stateMachineContainer.ClearSelectedConnector();
-            }
-
-            if (connector is ConnectorWithStartDot)
-            {
-                connector.StartDot.MouseDown -= new MouseButtonEventHandler(OnConnectorStartDotMouseDown);
-                connector.StartDot.MouseUp -= new MouseButtonEventHandler(OnConnectorStartDotMouseUp);
-            }
-
-            connector.GotKeyboardFocus -= new KeyboardFocusChangedEventHandler(OnConnectorGotKeyboardFocus);
-            connector.RequestBringIntoView -= new RequestBringIntoViewEventHandler(OnConnectorRequestBringIntoView);
-            connector.GotFocus -= new RoutedEventHandler(OnConnectorGotFocus);
-            connector.MouseDoubleClick -= new MouseButtonEventHandler(OnConnectorMouseDoubleClick);
-            connector.MouseDown -= new MouseButtonEventHandler(OnConnectorMouseDown);
-            connector.KeyDown -= new KeyEventHandler(OnConnectorKeyDown);
-            connector.ContextMenuOpening -= new ContextMenuEventHandler(OnConnectorContextMenuOpening);
-            connector.Unloaded -= new RoutedEventHandler(OnConnectorUnloaded);
-        }
-
-        #endregion
-
-        #region ConnectionPoint
-
-        MultiBinding GetConnectionPointBinding(FrameworkElement element, double widthFraction, double heightFraction)
-        {
-            Fx.Assert(element != null, "FrameworkElement is null.");
-            MultiBinding bindings = new MultiBinding();
-            Binding sizeBinding = new Binding();
-            sizeBinding.Source = element;
-            sizeBinding.Path = new PropertyPath(FreeFormPanel.ChildSizeProperty);
-            Binding locationBinding = new Binding();
-            locationBinding.Source = element;
-            locationBinding.Path = new PropertyPath(FreeFormPanel.LocationProperty);
-            bindings.Bindings.Add(sizeBinding);
-            bindings.Bindings.Add(locationBinding);
-            bindings.Converter = new ConnectionPointConverter();
-            bindings.ConverterParameter = new List<Object> { widthFraction, heightFraction, element.Margin };
-            return bindings;
-        }
-
-        //widthFraction and heightFraction determine the location of the ConnectionPoint on the UIElement.
-        ConnectionPoint CreateConnectionPoint(UIElement element, double widthFraction, double heightFraction, EdgeLocation location, ConnectionPointKind type)
-        {
-            ConnectionPoint connectionPoint = new ConnectionPoint();
-            connectionPoint.EdgeLocation = location;
-            connectionPoint.PointType = type;
-            connectionPoint.ParentDesigner = element;
-            connectionPoint.IsEnabled = false;
-            BindingOperations.SetBinding(connectionPoint, ConnectionPoint.LocationProperty, GetConnectionPointBinding(element as FrameworkElement, widthFraction, heightFraction));
-            return connectionPoint;
-        }
-
-        void PopulateConnectionPoints(UIElement view)
-        {
-            view.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
-            List<ConnectionPoint> connectionPoints = new List<ConnectionPoint>();
-
-            const double connectionPointRatio = 0.05;
-            ConnectionPointKind connectionPointType = ConnectionPointKind.Default;
-            if (view is VirtualizedContainerService.VirtualizingContainer && IsFinalState(((VirtualizedContainerService.VirtualizingContainer)view).ModelItem))
-            {
-                connectionPointType = ConnectionPointKind.Incoming;
-            }
-            else if (view is StartSymbol)
-            {
-                connectionPointType = ConnectionPointKind.Outgoing;
-            }
-
-            for (int ii = 1; ii <= ConnectionPointNum; ii++)
-            {
-                connectionPoints.Add(CreateConnectionPoint(view, 1, ii * connectionPointRatio, EdgeLocation.Right, connectionPointType));
-                connectionPoints.Add(CreateConnectionPoint(view, 0, ii * connectionPointRatio, EdgeLocation.Left, connectionPointType));
-                connectionPoints.Add(CreateConnectionPoint(view, ii * connectionPointRatio, 0, EdgeLocation.Top, connectionPointType));
-                connectionPoints.Add(CreateConnectionPoint(view, ii * connectionPointRatio, 1, EdgeLocation.Bottom, connectionPointType));
-            }
-
-            StateContainerEditor.SetConnectionPoints(view, connectionPoints);
-        }
-
-        List<ConnectionPoint> ConnectionPointsToShow(UIElement element)
-        {
-            bool isCreatingConnector = this.IsCreatingConnector();
-            List<ConnectionPoint> connectionPointsToShow = new List<ConnectionPoint>();
-            if (element is StartSymbol)
-            {
-                // Don't allow moving the start of a transition to the initial node.
-                if (isCreatingConnector || this.IsMovingStartOfConnectorForTransition())
-                {
-                    return connectionPointsToShow;
-                }
-                // Don't allow creating more than one connectors from the initial node.
-                if ((StateContainerEditor.GetOutgoingConnectors(element).Count > 0) && !this.IsMovingStartOfConnectorFromInitialNode())
-                {
-                    return connectionPointsToShow;
-                }
-            }
-            else if (element is VirtualizedContainerService.VirtualizingContainer)
-            {
-                VirtualizedContainerService.VirtualizingContainer container = (VirtualizedContainerService.VirtualizingContainer)element;
-
-                // Don't allow setting final state as the initial state
-                if (IsFinalState(container.ModelItem) && this.IsCreatingConnectorFromInitialNode())
-                {
-                    return connectionPointsToShow;
-                }
-                // Don't allow moving the start of the initial node connector to a state
-                if (this.IsMovingStartOfConnectorFromInitialNode())
-                {
-                    return connectionPointsToShow;
-                }
-            }
-
-            List<ConnectionPoint> connectionPoints = StateContainerEditor.GetConnectionPoints(element);
-            if (isCreatingConnector)
-            {
-                connectionPointsToShow.AddRange(connectionPoints.Where<ConnectionPoint>(
-                    (p) => { return p.PointType != ConnectionPointKind.Outgoing && p.AttachedConnectors.Count == 0; }));
-            }
-            else
-            {
-                connectionPointsToShow.AddRange(connectionPoints.Where<ConnectionPoint>(
-                    (p) => { return p.PointType != ConnectionPointKind.Incoming && p.AttachedConnectors.Count == 0; }));
-            }
-
-            return connectionPointsToShow;
-        }
-
-        private void RemoveConnectionPointsAdorner(UIElement adornedElement)
-        {
-            IEnumerable<Adorner> adornersRemoved = RemoveAdorner(adornedElement, typeof(ConnectionPointsAdorner));
-            Fx.Assert(adornersRemoved.Count() <= 1, "There should be at most one ConnectionPointsAdorner");
-            if (adornersRemoved.Count() == 1)
-            {
-                ConnectionPointsAdorner adorner = (ConnectionPointsAdorner)adornersRemoved.First();
-                Fx.Assert(object.Equals(this.activeConnectionPointsAdorner, adorner), "The adorner removed should be the same as the active adorner.");
-                this.activeConnectionPointsAdorner = null;
-                foreach (ConnectionPoint connectionPoint in adorner.ConnectionPoints)
-                {
-                    connectionPoint.IsEnabled = false;
-                    if (object.Equals(this.activeConnectionPoint, connectionPoint))
-                    {
-                        this.activeConnectionPoint = null;
-                    }
-                }
-            }
-        }
-
-        private List<ConnectionPoint> GetAvailableConnectionPoint(UIElement designer)
-        {
-            List<ConnectionPoint> connectionPoints = new List<ConnectionPoint>(StateContainerEditor.GetConnectionPoints(designer));
-            List<ConnectionPoint> usedConnectionPoints = new List<ConnectionPoint>();
-            foreach (ConnectionPoint connectionPoint in connectionPoints.Reverse<ConnectionPoint>())
-            {
-                if (connectionPoint.AttachedConnectors.Count > 0)
-                {
-                    usedConnectionPoints.Add(connectionPoint);
-                    connectionPoints.Remove(connectionPoint);
-                }
-            }
-
-            // The active connection point may haven't had connector yet
-            if (connectionPoints.Contains(this.activeSrcConnectionPoint))
-            {
-                connectionPoints.Remove(this.activeSrcConnectionPoint);
-                usedConnectionPoints.Add(this.activeSrcConnectionPoint);
-            }
-
-            foreach (ConnectionPoint connectionPoint in connectionPoints.Reverse<ConnectionPoint>())
-            {
-                foreach (ConnectionPoint usedConnectionPoint in usedConnectionPoints)
-                {
-                    if (DesignerGeometryHelper.ManhattanDistanceBetweenPoints(usedConnectionPoint.Location, connectionPoint.Location) < ConnectionPointMargin)
-                    {
-                        connectionPoints.Remove(connectionPoint);
-                        break;
-                    }
-                }
-            }
-            return connectionPoints;
-        }
-
-
-        private void UpdateActiveConnectionPoint(MouseEventArgs e)
-        {
-            List<ConnectionPoint> connectionPoints = GetAvailableConnectionPoint(this.activeConnectionPointsAdorner.AdornedElement);
-            Point mousePosition = e.GetPosition(this.GetStateMachineContainerEditor());
-            double minDist;
-            ConnectionPoint closestConnectionPoint = ConnectionPoint.GetClosestConnectionPoint(connectionPoints, mousePosition, out minDist);
-            if (closestConnectionPoint == null)
-            {
-                return;
-            }
-
-            foreach (ConnectionPoint connectionPoint in this.activeConnectionPointsAdorner.ConnectionPoints)
-            {
-                if (object.Equals(connectionPoint, closestConnectionPoint))
-                {
-                    connectionPoint.IsEnabled = true;
-                    this.activeConnectionPoint = connectionPoint;
-                }
-                else
-                {
-                    connectionPoint.IsEnabled = false;
-                    if (object.Equals(connectionPoint, this.activeConnectionPoint))
-                    {
-                        this.activeConnectionPoint = null;
-                    }
-                }
-            }
-
-            this.activeConnectionPointsAdorner.InvalidateVisual();
-        }
-
-        #endregion
-
-        #region ChildElementEventHandlers
-
-        void OnChildElementMouseEnter(object sender, MouseEventArgs e)
-        {
-            UIElement senderElement = sender as UIElement;
-            if (senderElement != null && !this.IsReadOnly)
-            {
-                if (senderElement is VirtualizedContainerService.VirtualizingContainer)
-                {
-                    VirtualizedContainerService.VirtualizingContainer stateDesigner =
-                        VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(Mouse.DirectlyOver as DependencyObject);
-                    // We don't want to show the connection points if the mouse is not directly over this state
-                    if (stateDesigner != senderElement)
-                    {
-                        return;
-                    }
-                }
-
-                AddConnectionPointsAdorner(senderElement);
-
-                // Remove the adorner on the state designer when entering its child
-                if (this.ModelItem.ItemType == typeof(State))
-                {
-                    VirtualizedContainerService.VirtualizingContainer parent =
-                        VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(this);
-                    this.RemoveConnectionPointsAdorner(parent);
-                }
-            }
-        }
-
-        void AddConnectionPointsAdorner(UIElement element)
-        {
-            bool isSelected = false;
-            if (element is VirtualizedContainerService.VirtualizingContainer)
-            {
-                isSelected = (((Selection)this.Context.Items.GetValue<Selection>()).SelectedObjects as ICollection<ModelItem>).Contains(((VirtualizedContainerService.VirtualizingContainer)element).ModelItem);
-            }
-            ConnectionPointsAdorner connectionPointsAdorner = new StateMachineConnectionPointsAdorner(element, ConnectionPointsToShow(element), isSelected);
-            if ((element is VirtualizedContainerService.VirtualizingContainer) && ((VirtualizedContainerService.VirtualizingContainer)element).ModelItem.ItemType == typeof(State))
-            {
-                connectionPointsAdorner.ToolTip = SR.TransitionConnectionPointTooltip;
-            }
-            else if (element is StartSymbol)
-            {
-                connectionPointsAdorner.ToolTip = SR.InitialStateConnectionPointTooltip;
-            }
-
-            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(element);
-            Fx.Assert(adornerLayer != null, "Cannot get AdornerLayer.");
-            adornerLayer.Add(connectionPointsAdorner);
-            // The outmostEditor should handle all the connection point related events for all its descendants
-            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
-            connectionPointsAdorner.MouseDown += new MouseButtonEventHandler(stateMachineContainer.OnConnectionPointMouseDown);
-            connectionPointsAdorner.MouseUp += new MouseButtonEventHandler(stateMachineContainer.OnConnectionPointMouseUp);
-            connectionPointsAdorner.MouseLeave += new MouseEventHandler(stateMachineContainer.OnConnectionPointMouseLeave);
-
-            this.activeConnectionPointsAdorner = connectionPointsAdorner;
-        }
-
-        void OnChildElementMouseLeave(object sender, MouseEventArgs e)
-        {
-            bool removeConnectionPointsAdorner = true;
-            if (Mouse.DirectlyOver != null)
-            {
-                removeConnectionPointsAdorner = !typeof(ConnectionPointsAdorner).IsAssignableFrom(Mouse.DirectlyOver.GetType());
-            }
-            if (removeConnectionPointsAdorner)
-            {
-                this.RemoveConnectionPointsAdorner(sender as UIElement);
-
-                // Add connection points adorner to its containing state
-                VirtualizedContainerService.VirtualizingContainer stateDesigner = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(this);
-                StateContainerEditor parentContainer = VisualTreeUtils.FindVisualAncestor<StateContainerEditor>(stateDesigner);
-                if (stateDesigner != null && parentContainer != null && !parentContainer.IsReadOnly)
-                {
-                    this.AddConnectionPointsAdorner(stateDesigner);
-                }
-            }
-        }
-
-        void OnChildElementSizeChanged(object sender, SizeChangedEventArgs e)
-        {
-            VirtualizedContainerService.VirtualizingContainer view = sender as VirtualizedContainerService.VirtualizingContainer;
-
-            if (view != null)
-            {
-                // Such size changed events are a result of changes already committed in the UI. Hence we do not want to react to such view state changes.
-                // Using internalViewStateChange flag for that purpose.
-                this.internalViewStateChange = true;
-                ModelItem storageModelItem = view.ModelItem;
-                this.ViewStateService.StoreViewState(storageModelItem, ShapeSizeViewStateKey, ((UIElement)sender).DesiredSize);
-                this.internalViewStateChange = false;
-            }
-        }
-
-        #endregion
-
-        #region ConnectorEventHandlers
-
-        void OnConnectorStartDotMouseUp(object sender, MouseButtonEventArgs e)
-        {
-            this.activeSrcConnectionPoint = null;
-            RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-        }
-
-        void OnConnectorStartDotMouseDown(object sender, MouseButtonEventArgs e)
-        {
-            DependencyObject startDot = (DependencyObject)sender;
-            Connector connector = VisualTreeUtils.FindVisualAncestor<Connector>(startDot);
-            this.activeSrcConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
-            e.Handled = true;
-        }
-
-
-        void OnConnectorMouseDown(object sender, MouseButtonEventArgs e)
-        {
-            Connector connector = (Connector)sender;
-            if (this.panel.Children.Contains(connector))
-            {
-                this.selectedConnector = connector;
-            }
-
-            // In order to not let WorkflowViewElement handle the event, which would cause the
-            // ConnectorEditor to be removed.
-            e.Handled = true;
-        }
-
-
-        void OnConnectorUnloaded(object sender, RoutedEventArgs e)
-        {
-            ModelItem primarySelection = this.Context.Items.GetValue<Selection>().PrimarySelection;
-            if (object.Equals(primarySelection, StateContainerEditor.GetConnectorModelItem(sender as DependencyObject)))
-            {
-                if (primarySelection != null)
-                {
-                    Selection.Toggle(this.Context, primarySelection);
-                }
-            }
-        }
-
-        // Marking e.Handled = true to avoid scrolling in large workflows to bring the
-        // area of a connector in the center of the view region.
-        void OnConnectorRequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
-        {
-            e.Handled = true;
-        }
-
-        // Marking e.Handled true for the case where a connector is clicked.
-        // This is to prevent WorkflowViewElement class from making StateMachine as the current selection.
-        void OnConnectorGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
-        {
-            e.Handled = true;
-        }
-
-        void OnConnectorGotFocus(object sender, RoutedEventArgs e)
-        {
-            Connector connector = e.Source as Connector;
-
-            if (this.panel.connectorEditor == null || !connector.Equals(this.panel.connectorEditor.Connector))
-            {
-                this.panel.RemoveConnectorEditor();
-                this.panel.connectorEditor = new ConnectorEditor(this.panel, connector);
-            }
-
-            if (this.panel.Children.Contains(connector))
-            {
-                this.updatingSelectedConnector = true;
-                ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(connector);
-                Selection newSelection = new Selection();
-                if (connectorModelItem != null && connectorModelItem.ItemType == typeof(Transition))
-                {
-                    newSelection = new Selection(connectorModelItem);
-                }
-                this.Context.Items.SetValue(newSelection);
-                this.selectedConnector = connector;
-                this.updatingSelectedConnector = false;
-
-                if (connectorModelItem.ItemType == typeof(Transition))
-                {
-                    // Populate the source and destination States's View if it is still in Virtualized mode.
-                    ModelItem destinationState = connectorModelItem.Properties[TransitionDesigner.ToPropertyName].Value;
-                    PopulateVirtualizingContainer(destinationState);
-                    ModelItem sourceState = StateContainerEditor.GetParentStateModelItemForTransition(connectorModelItem);
-                    PopulateVirtualizingContainer(sourceState);
-
-                    // Assign its destination State's View on the connector model item for copy/paste function.
-                    ((IModelTreeItem)connectorModelItem).SetCurrentView(destinationState.View);
-                }
-
-                e.Handled = true;
-            }
-        }
-
-        private void OnSelectionChanged(Selection selection)
-        {
-            // If selection changed, remove ConnectorEditor if existed.
-            // Only if the selection changed is caused by adding ConnectorEditor when OnConnectorGotFocus.
-            if (!this.updatingSelectedConnector && this.panel != null && this.panel.connectorEditor != null)
-            {
-                this.panel.RemoveConnectorEditor();
-            }
-        }
-
-        void OnConnectorKeyDown(object sender, KeyEventArgs e)
-        {
-            if (e.Key == Key.Enter || e.Key == Key.Return)
-            {
-                this.DesignerView.MakeRootDesigner(StateContainerEditor.GetConnectorModelItem(sender as DependencyObject));
-                e.Handled = true;
-            }
-        }
-
-        void OnConnectorMouseDoubleClick(object sender, MouseButtonEventArgs e)
-        {
-            if (e.ChangedButton == MouseButton.Left)
-            {
-                ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(sender as DependencyObject);
-                if (connectorModelItem != null && connectorModelItem.ItemType == typeof(Transition))
-                {
-                    this.DesignerView.MakeRootDesigner(connectorModelItem);
-                    e.Handled = true;
-                }
-            }
-        }
-
-        void OnConnectorContextMenuOpening(object sender, ContextMenuEventArgs e)
-        {
-            // Disable context menu
-            e.Handled = true;
-        }
-
-        #endregion
-
-        #region ConnectionPointEventHandlers
-
-        void OnConnectionPointMouseDown(object sender, MouseButtonEventArgs e)
-        {
-            UIElement srcElement = ((Adorner)sender).AdornedElement as UIElement;
-            this.activeSrcConnectionPoint = ConnectionPointHitTest(srcElement, e.GetPosition(this.panel));
-
-            if (this.activeSrcConnectionPoint != null &&
-                !this.activeSrcConnectionPoint.ParentDesigner.IsKeyboardFocusWithin)
-            {
-                // If a floating annotation is visible, it needs to lose the keyboard focus
-                // to hide itself again (bug 200739). Therefore, selecting the src connection
-                // point would give the keyboard focus back to its source parent state.
-                Keyboard.Focus(VirtualizedContainerService.TryGetVirtualizedElement(this.activeSrcConnectionPoint.ParentDesigner));
-            }
-
-            e.Handled = true;
-        }
-
-        void OnConnectionPointMouseLeave(object sender, MouseEventArgs e)
-        {
-            UIElement adornedElement = ((Adorner)sender).AdornedElement as UIElement;
-            this.RemoveConnectionPointsAdorner(adornedElement);
-        }
-
-        void OnConnectionPointMouseUp(object sender, MouseButtonEventArgs e)
-        {
-            UIElement dest = ((Adorner)sender).AdornedElement as UIElement;
-            if (this.activeSrcConnectionPoint != null)
-            {
-                ConnectionPoint destConnectionPoint = ConnectionPointHitTest(dest, e.GetPosition(this.panel));
-                if (destConnectionPoint != null && !this.activeSrcConnectionPoint.Equals(destConnectionPoint))
-                {
-                    ConnectorCreationResult result = CreateConnectorGesture(this.activeSrcConnectionPoint, destConnectionPoint, null, false);
-                    if (result != ConnectorCreationResult.Success)
-                    {
-                        StateContainerEditor.ReportConnectorCreationError(result);
-                    }
-                }
-                this.activeSrcConnectionPoint = null;
-                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-            }
-            else
-            {
-                //This will cause the FreeFormPanel to handle the event and is useful while moving a connector end point.
-                this.lastConnectionPointMouseUpElement = dest;
-                dest.RaiseEvent(e);
-            }
-            this.RemoveConnectionPointsAdorner(dest);
-        }
-
-        #endregion
-
-        #region FreeFormPanelEventHandlers
-
-        void OnFreeFormPanelLocationChanged(object sender, System.Activities.Presentation.FreeFormEditing.LocationChangedEventArgs e)
-        {
-            Fx.Assert(sender is UIElement, "Sender should be of type UIElement");
-            Connector movedConnector = sender as Connector;
-            if (movedConnector != null)
-            {
-                //ViewState is undoable only when a user gesture moves a connector. If the FreeFormPanel routes a connector,
-                //the change is not undoable.
-                bool isUndoableViewState = false;
-                ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(movedConnector);
-                PointCollection existingViewState = this.ViewStateService.RetrieveViewState(connectorModelItem, ConnectorLocationViewStateKey) as PointCollection;
-                if (existingViewState != null && existingViewState.Count > 0 && movedConnector.Points.Count > 0
-                    && existingViewState[0].Equals(movedConnector.Points[0]) && existingViewState[existingViewState.Count - 1].Equals(movedConnector.Points[movedConnector.Points.Count - 1]))
-                {
-                    isUndoableViewState = true;
-                }
-                StoreConnectorLocationViewState(movedConnector, isUndoableViewState);
-            }
-            else
-            {
-                //This is called only when a shape without ViewState is auto-layout'd by the FreeFormPanel.
-                UIElement view = sender as UIElement;
-
-                if (view != null)
-                {
-                    StoreShapeLocationViewState(view, e.NewLocation);
-                }
-            }
-        }
-
-        void UpdateStateMachineOnConnectorMoved(ConnectionPoint knownConnectionPoint, Point newPoint, Connector movedConnector, bool isConnectorStartMoved)
-        {
-            HitTestResult hitTestResult = VisualTreeHelper.HitTest(this.panel, newPoint);
-            if (hitTestResult == null)
-            {
-                return;
-            }
-
-            UIElement newViewElement = null;
-            ConnectionPoint newConnectionPoint = null;
-
-            //The case where the Connector is dropped on a ConnectionPoint.
-            if (this.lastConnectionPointMouseUpElement != null)
-            {
-                newConnectionPoint = StateContainerEditor.ConnectionPointHitTest(this.lastConnectionPointMouseUpElement, newPoint);
-                if (newConnectionPoint != null)
-                {
-                    newViewElement = this.lastConnectionPointMouseUpElement;
-                }
-                this.lastConnectionPointMouseUpElement = null;
-            }
-
-            //The case where the link is dropped on a shape.
-            if (newViewElement == null)
-            {
-                newViewElement = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(hitTestResult.VisualHit);
-            }
-
-            if (newViewElement != null)
-            {
-                if (this.panel.IsAncestorOf(newViewElement))
-                {
-                    using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.MoveLink))
-                    {
-                        // Remove the old connector ModelItem
-                        this.DeleteConnectorModelItem(movedConnector, true);
-                        // Create new connector
-                        ConnectorCreationResult result = ConnectorCreationResult.OtherFailure;
-                        if (!isConnectorStartMoved)
-                        {
-                            if (newConnectionPoint == null)
-                            {
-                                result = CreateConnectorGesture(knownConnectionPoint, newViewElement, movedConnector, false);
-                            }
-                            else
-                            {
-                                result = CreateConnectorGesture(knownConnectionPoint, newConnectionPoint, movedConnector, false);
-                            }
-                        }
-                        else
-                        {
-                            // Don't allow moving the start of the initial node connector to a state
-                            if (!(newViewElement is StateDesigner && StateContainerEditor.IsConnectorFromInitialNode(movedConnector)))
-                            {
-                                if (newConnectionPoint == null)
-                                {
-                                    result = CreateConnectorGesture(newViewElement, knownConnectionPoint, movedConnector, true);
-                                }
-                                else
-                                {
-                                    result = CreateConnectorGesture(newConnectionPoint, knownConnectionPoint, movedConnector, true);
-                                }
-                            }
-                        }
-
-                        if (result == ConnectorCreationResult.Success)
-                        {
-                            es.Complete();
-                        }
-                        else
-                        {
-                            StateContainerEditor.ReportConnectorCreationError(result);
-                            es.Revert();
-                        }
-                    }
-                }
-            }
-        }
-
-        void OnFreeFormPanelConnectorMoved(object sender, ConnectorMovedEventArgs e)
-        {
-            Connector movedConnector = sender as Connector;
-            int movedEndConnectorPointIndex = movedConnector.Points.Count - 1;
-            int newEndConnectorPointIndex = e.NewConnectorLocation.Count - 1;
-
-            if (movedConnector != null)
-            {
-                Fx.Assert(e.NewConnectorLocation.Count > 0, "Invalid connector editor");
-                if (!e.NewConnectorLocation[0].Equals(movedConnector.Points[0]))
-                {
-                    // source moved
-                    ConnectionPoint destConnPoint = FreeFormPanel.GetDestinationConnectionPoint(movedConnector);
-                    UpdateStateMachineOnConnectorMoved(destConnPoint, e.NewConnectorLocation[0], movedConnector, true);
-                }
-                else if (!e.NewConnectorLocation[newEndConnectorPointIndex].Equals(movedConnector.Points[movedEndConnectorPointIndex]))
-                {
-                    // destination moved
-                    ConnectionPoint srcConnPoint = FreeFormPanel.GetSourceConnectionPoint(movedConnector);
-                    Point destPoint = e.NewConnectorLocation[newEndConnectorPointIndex];
-                    UpdateStateMachineOnConnectorMoved(srcConnPoint, destPoint, movedConnector, false);
-                }
-
-                this.selectedConnector = movedConnector;
-            }
-        }
-
-        // This is to keep this.selectedConnector up to date.
-        // Cases included: 1. create a connector, select it and undo, 2. move a connector from one shape to another.
-        void OnFreeFormPanelLayoutUpdated(object sender, EventArgs e)
-        {
-            if (this.selectedConnector != null && !this.panel.Children.Contains(this.selectedConnector))
-            {
-                this.ClearSelectedConnector();
-            }
-        }
-
-        void OnFreeFormPanelRequiredSizeChanged(object sender, RequiredSizeChangedEventArgs e)
-        {
-            this.requiredSize = e.NewRequiredSize;
-            Dispatcher.BeginInvoke(new Action(() =>
-            {
-                if (this.requiredSize.Width > this.StateContainerWidth)
-                {
-                    this.ViewStateService.StoreViewState(
-                        this.ModelItem,
-                        StateContainerEditor.StateContainerWidthViewStateKey,
-                        this.requiredSize.Width);
-                }
-                if (this.requiredSize.Height > this.StateContainerHeight)
-                {
-                    this.ViewStateService.StoreViewState(
-                        this.ModelItem,
-                        StateContainerEditor.StateContainerHeightViewStateKey,
-                        this.requiredSize.Height);
-                }
-            }));
-        }
-
-        #endregion
-
-        #region StateContainerGridEventHandlers
-
-        void OnStateContainerGridMouseLeave(object sender, MouseEventArgs e)
-        {
-            bool endLinkCreation = !IsVisualHit(sender as UIElement, sender as UIElement, e.GetPosition(sender as IInputElement));
-            if (endLinkCreation)
-            {
-                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-                this.activeSrcConnectionPoint = null;
-            }
-        }
-
-        void OnStateContainerGridMouseMove(object sender, MouseEventArgs e)
-        {
-            if (this.activeSrcConnectionPoint != null)
-            {
-                Point[] points = ConnectorRouter.Route(this.panel, this.activeSrcConnectionPoint, e);
-                if (points == null)
-                {
-                    e.Handled = true;
-                    return;
-                }
-                List<Point> segments = new List<Point>(points);
-                // Remove the previous adorner.
-                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-                // Add new adorner.
-                AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.panel);
-                Fx.Assert(adornerLayer != null, "Adorner Layer does not exist");
-                ConnectorCreationAdorner newAdorner = new ConnectorCreationAdorner(this.panel, segments);
-                adornerLayer.Add(newAdorner);
-                e.Handled = true;
-            }
-        }
-
-        void OnStateContainerGridPreviewMouseMove(object sender, MouseEventArgs e)
-        {
-            if (this.activeConnectionPointsAdorner != null)
-            {
-                this.UpdateActiveConnectionPoint(e);
-            }
-
-            // Creating connector
-            if (this.activeSrcConnectionPoint != null)
-            {
-                AutoScrollHelper.AutoScroll(e, this, 1);
-            }
-            // Reconnecting connector
-            else if (this.panel.connectorEditor != null && (this.panel.connectorEditor.IsConnectorEndBeingMoved || this.panel.connectorEditor.IsConnectorStartBeingMoved))
-            {
-                AutoScrollHelper.AutoScroll(e, this, 1);
-            }
-        }
-
-        void OnStateContainerGridPreviewMouseUp(object sender, MouseButtonEventArgs e)
-        {
-            VirtualizedContainerService.VirtualizingContainer destElement = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(e.OriginalSource as DependencyObject);
-            if (destElement != null && destElement.IsPopulated && destElement.Child is StateDesigner)
-            {
-                if (this.activeSrcConnectionPoint != null)
-                {
-                    ConnectorCreationResult result = this.CreateConnectorGesture(this.activeSrcConnectionPoint, destElement, null, false);
-                    if (result != ConnectorCreationResult.Success)
-                    {
-                        StateContainerEditor.ReportConnectorCreationError(result);
-                    }
-                    this.RemoveConnectionPointsAdorner(destElement);
-                }
-            }
-            if (this.activeSrcConnectionPoint != null)
-            {
-                this.activeSrcConnectionPoint = null;
-                RemoveAdorner(this.panel, typeof(ConnectorCreationAdorner));
-            }
-        }
-
-        void SetEndPointsAndInvalidateViewState(Connector connector, Vector offset, bool offsetSrc)
-        {
-            ConnectionPoint srcConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
-            ConnectionPoint destConnectionPoint = FreeFormPanel.GetDestinationConnectionPoint(connector);
-            Point src, dest;
-            if (offsetSrc)
-            {
-                src = Point.Add(FreeFormPanel.GetLocationRelativeToOutmostPanel(srcConnectionPoint), offset);
-                dest = FreeFormPanel.GetLocationRelativeToOutmostPanel(destConnectionPoint);
-            }
-            else
-            {
-                src = FreeFormPanel.GetLocationRelativeToOutmostPanel(srcConnectionPoint);
-                dest = Point.Add(FreeFormPanel.GetLocationRelativeToOutmostPanel(destConnectionPoint), offset);
-            }
-            PointCollection points = new PointCollection();
-            Point invalidPoint = new Point(-1, -1);
-            points.Add(src);
-            points.Add(invalidPoint); // this invalidates the view state
-            points.Add(dest);
-            this.StoreConnectorLocationViewState(StateContainerEditor.GetConnectorModelItem(connector), points, true);
-        }
-
-        void OffsetConnectorViewState(UIElement view, Point oldLocation, Point newLocation, bool offsetNonContainedConnectors)
-        {
-            // There is no need to do anything for the StartSymbol
-            if (view is VirtualizedContainerService.VirtualizingContainer)
-            {
-                Vector offset = new Vector(newLocation.X - oldLocation.X, newLocation.Y - oldLocation.Y);
-
-                // connectors whose dest points are outside the state and the src points are inside/on the state
-                HashSet<Connector> outgoingConnectors = new HashSet<Connector>();
-                // connectors whose src points are outside the state and the dest points are inside/on the state
-                HashSet<Connector> incomingConnectors = new HashSet<Connector>();
-                // connectors whose src points and dest points are both inside/on the state
-                HashSet<ModelItem> containedTransitions = new HashSet<ModelItem>();
-
-                if (view != null)
-                {
-                    // Here the incomingConnectors and outgoingConnectors contains connectors whose src points and dest
-                    // points are both inside/on the state; they will be removed later on
-                    List<Connector> connectors = StateContainerEditor.GetIncomingConnectors(view);
-                    foreach (Connector connector in connectors)
-                    {
-                        incomingConnectors.Add(connector);
-                    }
-                    connectors = StateContainerEditor.GetOutgoingConnectors(view);
-                    foreach (Connector connector in connectors)
-                    {
-                        outgoingConnectors.Add(connector);
-                    }
-                }
-
-                // Add common connectors to the containedConnectors set and remove them
-                // from the outgoingConnectors and incomingConnectors sets
-                foreach (Connector connector in outgoingConnectors.Reverse<Connector>())
-                {
-                    if (incomingConnectors.Contains(connector))
-                    {
-                        containedTransitions.Add(StateContainerEditor.GetConnectorModelItem(connector));
-                        outgoingConnectors.Remove(connector);
-                        incomingConnectors.Remove(connector);
-                    }
-                }
-
-                // For contained connectors, we offset all the points.
-                this.OffsetLocationViewStates(offset, null, containedTransitions, true);
-
-                if (offsetNonContainedConnectors)
-                {
-                    // For incoming connectors, we offset the end point and invalidate the view state.
-                    // This way the start and end point will still connect to the same connection points
-                    // on the source and destination shapes and later on the connector will be rerouted using
-                    // those two fixed points.
-                    foreach (Connector connector in incomingConnectors)
-                    {
-                        this.SetEndPointsAndInvalidateViewState(connector, offset, false);
-                    }
-
-                    // for outgoing connectors, we offset the start point and invalidate the view state.
-                    foreach (Connector connector in outgoingConnectors)
-                    {
-                        this.SetEndPointsAndInvalidateViewState(connector, offset, true);
-                    }
-                }
-                else
-                {                    
-                    HashSet<ModelItem> nonSelfTransitions = new HashSet<ModelItem>();
-
-                    foreach (Connector connector in incomingConnectors)
-                    {
-                        nonSelfTransitions.Add(StateContainerEditor.GetConnectorModelItem(connector));
-                    }
-                    
-                    foreach (Connector connector in outgoingConnectors)
-                    {
-                        nonSelfTransitions.Add(StateContainerEditor.GetConnectorModelItem(connector));
-                    }
-
-                    // Store ViewState for all non-self transitions to support undo/redo.
-                    this.OffsetLocationViewStates(offset, null, nonSelfTransitions, true);
-                }
-            }
-        }
-
-        void OnStateContainerGridDrop(object sender, DragEventArgs e)
-        {
-            ModelItemHelper.TryCreateImmediateEditingScopeAndExecute(this.ModelItem.GetEditingContext(), System.Activities.Presentation.SR.CollectionAddEditingScopeDescription, (es) =>
-            {
-                this.DoStateContainerGridDrop(e, AutoConnectDirections.None, null);
-                if (es != null)
-                {
-                    es.Complete();
-                }
-            });
-        }
-
-        // Returns the last dropped item - used for auto-connect and auto-split where only one item is allowed
-        ModelItem DoStateContainerGridDrop(DragEventArgs e, AutoConnectDirections autoConnectDirection, Connector connectorToSplit)
-        {
-            ModelItem droppedModelItem = null;
-            e.Effects = DragDropEffects.None;
-            IEnumerable<object> droppedObjects = DragDropHelper.GetDroppedObjects(this, e, Context);
-            // Marking the event as being handled. In whichever case we want to route the event, it will be unmarked explicitly.
-            e.Handled = true;
-            List<ModelItem> modelItemsToSelect = new List<ModelItem>();
-
-            Dictionary<WorkflowViewElement, Point> relativeLocations = DragDropHelper.GetDraggedViewElementRelativeLocations(e);
-            foreach (object droppedObject in droppedObjects)
-            {
-                if (droppedObject != null)
-                {
-                    droppedModelItem = droppedObject as ModelItem;
-                    bool isAnchorPointValid = true;
-                    Point anchorPoint = DragDropHelper.GetDragDropAnchorPoint(e);
-
-                    // This is the case of dragging from toolbox
-                    if (anchorPoint.X < 0 && anchorPoint.Y < 0)
-                    {
-                        isAnchorPointValid = false;
-                    }
-                    // This is the case of dragging from the designer surface
-                    else if (droppedModelItem != null)
-                    {
-                        WorkflowViewElement view = droppedModelItem.View as WorkflowViewElement;
-                        anchorPoint.Offset(-relativeLocations[view].X, -relativeLocations[view].Y);
-                    }
-
-                    StateContainerEditor srcContainer = droppedModelItem != null
-                        ? DragDropHelper.GetCompositeView(droppedModelItem.View as WorkflowViewElement) as StateContainerEditor
-                        : null;
-                    bool externalDrop = false;
-                    if (droppedModelItem != null && srcContainer != null && srcContainer.Equals(this))
-                    {
-                        // Internal move
-                        PerformInternalMove(this.modelItemToUIElement[droppedModelItem], e.GetPosition(this.panel), anchorPoint, autoConnectDirection, connectorToSplit);
-                    }
-                    else
-                    {
-                        // External model Item drop
-                        if (droppedModelItem != null)
-                        {
-                            if (droppedModelItem.ItemType == typeof(State) && this.ModelItem.ItemType == typeof(StateMachine))
-                            {
-                                this.InsertState(droppedModelItem);
-                                externalDrop = true;
-                            }
-                        }
-                        // Toolbox drop.
-                        else
-                        {
-                            if (droppedObject.GetType() == typeof(State))
-                            {
-                                if (((State)droppedObject).DisplayName == null)
-                                {
-                                    ((State)droppedObject).DisplayName = GenerateStateName();
-                                }
-
-                                droppedModelItem = InsertState(droppedObject);
-                            }
-                            else if (droppedObject.GetType() == typeof(FinalState))
-                            {
-                                droppedModelItem = InsertState(new State()
-                                {
-                                    DisplayName = DefaultFinalStateDisplayName,
-                                    IsFinal = true
-                                });
-                            }
-                        }
-                        if (droppedModelItem != null)
-                        {
-                            modelItemsToSelect.Add(droppedModelItem);
-                            UIElement view = null;
-                            if (this.modelItemToUIElement.ContainsKey(droppedModelItem))
-                            {
-                                view = this.modelItemToUIElement[droppedModelItem];
-                            }
-                            else
-                            {
-                                view = droppedModelItem.View as WorkflowViewElement;
-                                if (view == null)
-                                {
-                                    view = this.Context.Services.GetService<ViewService>().GetView(droppedModelItem) as WorkflowViewElement;
-                                    ViewUtilities.MeasureView(view as WorkflowViewElement, true);
-                                }
-                            }
-                            // If drag anchor point is beyond the size of the shape being dropped,
-                            if (anchorPoint.X > view.DesiredSize.Width || anchorPoint.Y > view.DesiredSize.Height)
-                            {
-                                isAnchorPointValid = false;
-                            }
-                            Point shapeLocation;
-                            if (autoConnectDirection != AutoConnectDirections.None)
-                            {
-                                shapeLocation = this.CalculateDropLocationForAutoConnect(autoConnectDirection, new Size(DefaultStateDesignerWidth, DefaultStateDesignerHeight));
-                            }
-                            else
-                            {
-                                shapeLocation = StateContainerEditor.SnapVisualToGrid(view, e.GetPosition(this.panel), anchorPoint, isAnchorPointValid);
-                            }
-                            if (connectorToSplit != null)
-                            {
-                                shapeLocation = this.CalculateDropLocationForAutoSplit(e.GetPosition(this.panel), shapeLocation, connectorToSplit, new Size(DefaultStateDesignerWidth, DefaultStateDesignerHeight));
-                            }
-                            object viewState = this.ViewStateService.RetrieveViewState(droppedModelItem, ShapeLocationViewStateKey);
-                            if (externalDrop)
-                            {
-                                Fx.Assert(viewState != null, "item dropped from external should already have view states");
-                                Fx.Assert(droppedModelItem.View != null, "item dropped from extenal should already have view");
-                                VirtualizedContainerService.VirtualizingContainer container = VisualTreeUtils.FindVisualAncestor<VirtualizedContainerService.VirtualizingContainer>(droppedModelItem.View);
-                                Fx.Assert(container != null, "container should not be null");
-                                Point oldLocation = (Point)viewState;
-                                oldLocation = srcContainer.panel.GetLocationRelativeToOutmostPanel(oldLocation);
-                                Point newLocation = this.panel.GetLocationRelativeToOutmostPanel(shapeLocation);
-                                // To make sure the connectors are still connected to the connection points
-                                OffsetConnectorViewState(container, oldLocation, newLocation, true);
-                            }
-                            this.StoreShapeLocationViewState(droppedModelItem, shapeLocation);
-                        }
-                    }
-                }
-            }
-
-            DragDropHelper.SetDragDropMovedViewElements(e, new WorkflowViewElement[] { });
-            this.Dispatcher.BeginInvoke(() =>
-                {
-                    bool first = true;
-                    foreach (ModelItem modelItem in modelItemsToSelect)
-                    {
-                        if (first)
-                        {
-                            Keyboard.Focus((IInputElement)modelItem.View);
-                            Selection.SelectOnly(this.Context, modelItem);
-                            first = false;
-                        }
-                        else
-                        {
-                            Selection.Union(this.Context, modelItem);
-                        }
-                    }
-                },
-                DispatcherPriority.ApplicationIdle);
-
-            return droppedModelItem;
-        }
-
-        Point CalculateDropLocationForAutoConnect(AutoConnectDirections autoConnectDirection, Size droppedSize)
-        {
-            return AutoConnectHelper.CalculateDropLocation(droppedSize, this.Panel.CurrentAutoConnectTarget, autoConnectDirection, this.shapeLocations);
-        }
-
-        Point CalculateDropLocationForAutoSplit(Point mousePosition, Point originalDropLocation, Connector connector, Size droppedSize)
-        {
-            return AutoSplitHelper.CalculateDropLocation(mousePosition, originalDropLocation, connector, droppedSize, this.shapeLocations);
-        }
-
-        void OnStateContainerGridDragEnter(object sender, DragEventArgs e)
-        {
-            OnStateContainerGridDrag(sender, e);
-        }
-
-        void OnStateContainerGridDragOver(object sender, DragEventArgs e)
-        {
-            OnStateContainerGridDrag(sender, e);
-        }
-
-        void OnStateContainerGridDrag(object sender, DragEventArgs e)
-        {
-            if (!e.Handled)
-            {
-                if (IsDropAllowed(e))
-                {
-                    e.Effects |= DragDropEffects.Move;
-                }
-                else
-                {
-                    e.Effects = DragDropEffects.None;
-                }
-                e.Handled = true;
-            }
-        }
-
-        private bool IsDropAllowed(DragEventArgs e)
-        {
-            // Considering multiple items drag&drop, use ModelItemsDataFormat instead.
-            IEnumerable<ModelItem> modelItems = e.Data.GetData(DragDropHelper.ModelItemsDataFormat) as IEnumerable<ModelItem>;
-            if (modelItems != null)
-            {
-                foreach (ModelItem modelItem in modelItems)
-                {
-                    if (modelItem.ItemType == typeof(StartNode) && modelItem == this.initialModelItem)
-                    {
-                        // StartNode of current StateMachine allow to drop.
-                    }
-                    else if (modelItem.ItemType == typeof(State) && this.IsStateMachineContainer && StateContainerEditor.AreInSameStateMachine(modelItem, this.ModelItem))
-                    {
-                        // When FinalState has been dropped into a StateMachine, it becomes a State instead. So ignore FinalState type.
-                        // State within the same StateMachine allow to drop.
-                    }
-                    else
-                    {
-                        return false;
-                    }
-                }
-
-                return true;
-            }
-            else if (this.ModelItem.ItemType == typeof(StateMachine) && DragDropHelper.AllowDrop(e.Data, this.Context, typeof(State), typeof(FinalState), typeof(StartNode)))
-            {
-                // Only allow State, FinalState, StartNode to drop into a StateMachine from tool box.
-                return true;
-            }
-
-            return false;
-        }
-
-        void KeyboardMove(Key key)
-        {
-            Vector moveDir = FreeFormPanel.CalculateMovement(key, this.IsRightToLeft);
-            
-            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.ItemMove))
-            {
-                foreach (ModelItem selectedModelItem in this.Context.Items.GetValue<Selection>().SelectedObjects)
-                {
-                    UIElement shapeToMove = this.modelItemToUIElement[selectedModelItem];
-                    Point currentLocation = FreeFormPanel.GetLocation(shapeToMove);
-                    Point newLocation = Point.Add(currentLocation, moveDir);
-                    // Make sure the newLocation is positive.
-                    newLocation.X = FreeFormPanel.ZeroIfNegative(newLocation.X);
-                    newLocation.Y = FreeFormPanel.ZeroIfNegative(newLocation.Y);
-                    if (newLocation == currentLocation)
-                    {
-                        continue;
-                    }
-                    PerformInternalMove(shapeToMove, newLocation, null, AutoConnectDirections.None, null);
-                }
-                es.Complete();
-            }
-        }
-
-        void OnStateContainerGridKeyDown(object sender, KeyEventArgs e)
-        {
-            if (this.activeSrcConnectionPoint != null)
-            {
-                // Ignore Keyboard input when creating connector
-                e.Handled = true;
-                return;
-            }
-
-            Selection currentSelection = this.Context.Items.GetValue<Selection>();
-            if (e.Key == Key.Delete && this.selectedConnector != null && currentSelection.SelectionCount <= 1)
-            {
-                // process the delete if only the connector is selected
-                ModelItem primarySelection = currentSelection.PrimarySelection;
-                //Delete connector
-                ModelItem connectorModelItem = StateContainerEditor.GetConnectorModelItem(this.selectedConnector);
-                if (object.Equals(primarySelection, connectorModelItem) ||
-                    // Delete initial link
-                    primarySelection == null && connectorModelItem != null && connectorModelItem.ItemType != typeof(Transition))
-                {
-                    this.DeleteConnectorModelItem(this.selectedConnector);
-                    e.Handled = true;
-                }
-            }
-            else if ((new List<Key> { Key.Left, Key.Right, Key.Up, Key.Down }).Contains(e.Key)
-                && currentSelection.SelectedObjects.All<ModelItem>((p) => { return this.modelItemToUIElement.ContainsKey(p); }))
-            {
-                this.KeyboardMove(e.Key);
-                e.Handled = true;
-            }
-        }
-
-        void OnStateContainerGridPreviewMouseDown(object sender, MouseButtonEventArgs e)
-        {
-            this.selectedConnector = null;
-        }
-
-        #endregion
-
-        #region Misc
-
-        string GenerateStateName()
-        {
-            HashSet<String> existingStateNames = new HashSet<string>();
-            foreach (ModelItem stateModelItem in this.ModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
-            {
-                existingStateNames.Add(((State)stateModelItem.GetCurrentValue()).DisplayName);
-            }
-
-            int suffix = 0;
-            string name;
-
-            do
-            {
-                name = string.Format(CultureInfo.CurrentUICulture, "{0}{1}", DefaultStateDisplayName, ++suffix);
-            } while (existingStateNames.Contains<string>(name));
-
-            return name;
-        }
-
-        internal StateContainerEditor GetStateMachineContainerEditor()
-        {
-            if (this.ModelItem.ItemType == typeof(StateMachine))
-            {
-                return this;
-            }
-            else
-            {
-                Fx.Assert(this.ModelItem.ItemType == typeof(State), "ModelItem type should be State.");
-                StateDesigner designer = VisualTreeUtils.FindVisualAncestor<StateDesigner>(this);
-                FreeFormPanel panel = designer.GetStateMachineFreeFormPanel();
-                return VisualTreeUtils.FindVisualAncestor<StateContainerEditor>(panel);
-            }
-        }
-
-        Connector GetConnectorInStateMachine(ModelItem connectorModelItem)
-        {
-            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
-            foreach (UIElement element in stateMachineContainer.panel.Children)
-            {
-                Connector connector = element as Connector;
-                if (connector != null)
-                {
-                    if (StateContainerEditor.GetConnectorModelItem(connector) == connectorModelItem)
-                    {
-                        return connector;
-                    }
-                }
-            }
-            return null;
-        }
-
-        bool IsCreatingConnector()
-        {
-            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
-            return (stateMachineContainer.activeSrcConnectionPoint != null || (stateMachineContainer.panel.connectorEditor != null && stateMachineContainer.panel.connectorEditor.IsConnectorEndBeingMoved));
-        }
-
-        bool IsCreatingConnectorFromInitialNode()
-        {
-            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
-            return (stateMachineContainer.activeSrcConnectionPoint != null && stateMachineContainer.activeSrcConnectionPoint.ParentDesigner is StartSymbol) ||
-                (stateMachineContainer.panel.connectorEditor != null && stateMachineContainer.panel.connectorEditor.IsConnectorEndBeingMoved &&
-                stateMachineContainer.panel.connectorEditor.Connector != null &&
-                IsConnectorFromInitialNode(stateMachineContainer.panel.connectorEditor.Connector));
-        }
-
-        bool IsMovingStartOfConnectorFromInitialNode()
-        {
-            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
-            return (stateMachineContainer.panel.connectorEditor != null && stateMachineContainer.panel.connectorEditor.IsConnectorStartBeingMoved &&
-                stateMachineContainer.panel.connectorEditor.Connector != null &&
-                IsConnectorFromInitialNode(stateMachineContainer.panel.connectorEditor.Connector));
-        }
-
-        bool IsMovingStartOfConnectorForTransition()
-        {
-            StateContainerEditor stateMachineContainer = this.GetStateMachineContainerEditor();
-            return (stateMachineContainer.panel.connectorEditor != null && stateMachineContainer.panel.connectorEditor.IsConnectorStartBeingMoved &&
-                stateMachineContainer.panel.connectorEditor.Connector != null &&
-                GetConnectorModelItem(stateMachineContainer.panel.connectorEditor.Connector).ItemType == typeof(Transition));
-        }
-
-        void InvalidateMeasureForStateMachinePanel()
-        {
-            this.GetStateMachineContainerEditor().panel.InvalidateMeasure();
-        }
-
-        void PerformInternalMove(UIElement movedElement, Point newPoint, Point? shapeAnchorPoint, AutoConnectDirections autoConnectDirection, Connector connectorToSplit)
-        {
-            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.ItemMove))
-            {
-                StoreShapeSizeWithUndoRecursively(this.ModelItem);
-                this.RemoveConnectionPointsAdorner(movedElement);
-                Point newLocation;
-                Size size = FreeFormPanel.GetChildSize(movedElement);
-                if (autoConnectDirection != AutoConnectDirections.None)
-                {
-                    newLocation = this.CalculateDropLocationForAutoConnect(autoConnectDirection, size);
-                }
-                else if (shapeAnchorPoint.HasValue)
-                {
-                    newLocation = SnapVisualToGrid(movedElement, newPoint, shapeAnchorPoint.Value, true);
-                }
-                else
-                {
-                    Fx.Assert(newPoint.X.IsNoLessThan(0) && newPoint.Y.IsNoLessThan(0),
-                        "newPoint is negative");
-                    newLocation = newPoint;
-                }
-                if (connectorToSplit != null)
-                {
-                    newLocation = this.CalculateDropLocationForAutoSplit(newPoint, newLocation, connectorToSplit, size);
-                }
-                ModelItem modelItem = GetModelItemFromView(movedElement);
-                object viewState = this.ViewStateService.RetrieveViewState(modelItem, ShapeLocationViewStateKey);
-                if (viewState != null)
-                {
-                    Point oldLocation = (Point)viewState;
-                    // To make sure the connectors are still connected to the connection points.
-                    // We don't need to offset non-contained connectors because internal move
-                    // won't cause the connectors to be recreated and we have code in FreeFormPanel
-                    // to guarantee that connectors will still be connected to the connection points
-                    this.OffsetConnectorViewState(movedElement, oldLocation, newLocation, false);
-                }
-                else
-                {
-                    this.StoreAttachedConnectorViewStates(movedElement);
-                }
-
-                this.StoreShapeLocationViewState(movedElement, newLocation);
-                // To make sure the connector changes are undoable
-                this.panel.RemoveConnectorEditor();
-
-                es.Complete();
-            }
-        }
-
-        public void StoreAttachedConnectorViewStates(UIElement element)
-        {
-            foreach (Connector connector in GetAttachedConnectors(element))
-            {
-                StoreConnectorLocationViewState(connector, true);
-            }
-        }
-
-        bool ShouldInitialize()
-        {
-            WorkflowViewElement parent = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(this);
-            return parent != null && parent.ModelItem != null && (parent.ModelItem.ItemType == typeof(StateMachine) && parent.ShowExpanded ||
-                   parent.ModelItem.ItemType == typeof(State) && !parent.IsRootDesigner);
-        }
-
-        void ClearSelectedConnector()
-        {
-            if (this.panel.connectorEditor != null && this.panel.connectorEditor.Connector == this.selectedConnector)
-            {
-                this.panel.RemoveConnectorEditor();
-            }
-            this.selectedConnector = null;
-        }
-
-        #endregion
-
-        #region AutoConnect
-
-        public void DoAutoConnect(DragEventArgs e, UIElement targetElement, AutoConnectDirections direction)
-        {
-            UIElement sourceElement = targetElement;
-            bool immediatelyCommit = ModelItemHelper.CanCreateImmediateEditingScope(this.ModelItem);
-
-            using (EditingScope scope = (EditingScope)this.ModelItem.BeginEdit(SR.AutoConnect, immediatelyCommit))
-            {
-                ModelItem connectorModelItem = null;
-                Point location = e.GetPosition(sourceElement);
-                ModelItem droppedModelItem = this.DoStateContainerGridDrop(e, direction, null);
-                if (droppedModelItem != null)
-                {
-                    connectorModelItem = this.DoAutoConnect(sourceElement, droppedModelItem, null);
-                }
-
-                if (connectorModelItem != null)
-                {
-                    EdgeLocation edgeLocation = AutoConnectHelper.AutoConnectDirection2EdgeLocation(direction);
-                    this.GetStateMachineContainerEditor().activeSrcConnectionPoint = this.GetSourceConnectionPointForAutoConnect(sourceElement, edgeLocation);
-                    ModelItem sourceModelItem = TryGetModelItemFromView(sourceElement);
-                    Fx.Assert(sourceModelItem != null, "sourceModelItem");
-
-                    // add a custom change inside a new editing scope since current editing scope an immediate editing scope
-                    using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.AutoConnect, false))
-                    {
-                        es.Changes.Add(new StoreAutoConnectorViewStateChange(
-                            this.ModelItem, sourceModelItem, droppedModelItem, connectorModelItem, edgeLocation));
-                        es.Complete();
-                    }
-                    scope.Complete();
-                }
-                else
-                {
-                    scope.Revert();
-                }
-            }
-        }
-
-        private ModelItem DoAutoConnect(UIElement sourceElement, ModelItem droppedModelItem, Transition transitionToCopy, int insertIndex = InvalidIndex)
-        {
-            ModelItem sourceModelItem = TryGetModelItemFromView(sourceElement);
-            if (sourceModelItem != null && droppedModelItem.ItemType == typeof(State))
-            {
-                if (sourceModelItem.ItemType == typeof(State))
-                {
-                    ModelItem stateMachineModelItem = GetStateMachineModelItem(sourceModelItem);
-                    Transition transition = new Transition
-                    {
-                        DisplayName = StateContainerEditor.GenerateTransitionName(stateMachineModelItem),
-                        To = droppedModelItem.GetCurrentValue() as State
-                    };
-                    if (transitionToCopy != null)
-                    {
-                        transition.Action = transitionToCopy.Action;
-                        transition.Condition = transitionToCopy.Condition;
-                        transition.DisplayName = transitionToCopy.DisplayName;
-                        transition.Trigger = transitionToCopy.Trigger;
-                    }
-                    ModelItem trasitionModelItem = null;
-                    if (insertIndex >= 0)
-                    {
-                        trasitionModelItem = sourceModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Insert(insertIndex, transition);
-                    }
-                    else
-                    {
-                        trasitionModelItem = sourceModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(transition);
-                    }
-                    Fx.Assert(trasitionModelItem != null, "trasitionModelItem");
-                    return trasitionModelItem;
-                }
-                // auto-connect from the initial node
-                else if (sourceModelItem.ItemType == typeof(StartNode))
-                {
-                    this.ModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].SetValue(droppedModelItem);
-                    return this.ModelItem;
-                }
-            }
-            return null;
-        }
-
-        public AutoConnectDirections GetDirectionsAllowed(DragEventArgs e, UIElement targetElement)
-        {
-            if (!this.IsDropAllowed(e))
-            {
-                return AutoConnectDirections.None;
-            }
-
-            if (StateContainerEditor.GetEmptyConnectionPoints(targetElement).Count < 1)
-            {
-                return AutoConnectDirections.None;
-            }
-
-            List<Type> types = DragDropHelper.GetDraggedTypes(e.Data);
-            if (types.Count != 1 || (types[0] != typeof(State) && types[0] != typeof(FinalState)))
-            {
-                return AutoConnectDirections.None;
-            }
-
-            if (targetElement is VirtualizedContainerService.VirtualizingContainer && IsFinalState(((VirtualizedContainerService.VirtualizingContainer)targetElement).ModelItem))
-            {
-                return AutoConnectDirections.None;
-            }
-
-            if (targetElement is StartSymbol && this.ModelItem.ItemType == typeof(StateMachine))
-            {
-                if (this.ModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].Value != null)
-                {
-                    return AutoConnectDirections.None;
-                }
-
-                // Should not allow auto-connecting a final state to the start symbol
-                IEnumerable<ModelItem> draggedModelItems = DragDropHelper.GetDraggedModelItems(e);
-                if ((draggedModelItems.Count<ModelItem>() == 1 && StateContainerEditor.IsFinalState(draggedModelItems.First<ModelItem>()))
-                    || types[0] == typeof(FinalState))
-                {
-                    return AutoConnectDirections.None;
-                }
-            }
-
-            return AutoConnectDirections.Top | AutoConnectDirections.Bottom | AutoConnectDirections.Left | AutoConnectDirections.Right;
-        }
-
-        private ConnectionPoint GetSourceConnectionPointForAutoConnect(UIElement designer, EdgeLocation edgeLocation)
-        {
-            List<ConnectionPoint> connectionPoints = this.GetAvailableConnectionPoint(designer);
-            return GetConnectionPointClosestToEdgeMidPoint(designer, connectionPoints, edgeLocation);
-        }
-
-        static ConnectionPoint GetConnectionPointClosestToEdgeMidPoint(UIElement designer, List<ConnectionPoint> connectionPoints, EdgeLocation edgeLocation)
-        {
-            Point midPoint = new Point(-1, -1);
-            Point location = FreeFormPanel.GetLocation(designer);
-            Size size = FreeFormPanel.GetChildSize(designer);
-            switch (edgeLocation)
-            {
-                case EdgeLocation.Left:
-                    midPoint = new Point(location.X, location.Y + size.Height / 2);
-                    break;
-                case EdgeLocation.Right:
-                    midPoint = new Point(location.X + size.Width, location.Y + size.Height / 2);
-                    break;
-                case EdgeLocation.Top:
-                    midPoint = new Point(location.X + size.Width / 2, location.Y);
-                    break;
-                case EdgeLocation.Bottom:
-                    midPoint = new Point(location.X + size.Width / 2, location.Y + size.Height);
-                    break;
-            }
-            if (connectionPoints.Count > 0)
-            {
-                double dist;
-                return ConnectionPoint.GetClosestConnectionPoint(connectionPoints, midPoint, out dist);
-            }
-            return null;
-        }
-
-        private static ModelItem TryGetModelItemFromView(UIElement sourceElement)
-        {
-            Fx.Assert(sourceElement != null, "sourceElement != null");
-            ModelItem sourceModelItem = null;
-            if (sourceElement is WorkflowViewElement)
-            {
-                sourceModelItem = ((WorkflowViewElement)sourceElement).ModelItem;
-            }
-            else if (sourceElement is VirtualizedContainerService.VirtualizingContainer)
-            {
-                sourceModelItem = ((VirtualizedContainerService.VirtualizingContainer)sourceElement).ModelItem;
-            }
-            return sourceModelItem;
-        }
-
-        private class StoreAutoConnectorViewStateChange : Change
-        {
-            private EdgeLocation EdgeLocation { get; set; }
-            private ModelItem StateMachine { get; set; }
-            private ModelItem SrcModelItem { get; set; }
-            private ModelItem DstModelItem { get; set; }
-            private ModelItem ViewStateOwnerModelItem { get; set; }
-            private object OldViewState { get; set; }
-            private object NewViewState { get; set; }
-            private bool ShouldCreateConnector { get; set; }
-
-            public override string Description { get { return SR.AutoConnect; } }
-
-            public StoreAutoConnectorViewStateChange(
-                ModelItem stateMachine, ModelItem srcModelItem, ModelItem desModelItem, ModelItem addedModelItem, EdgeLocation edgeLocatioin)
-            {
-                this.StateMachine = stateMachine;
-                this.SrcModelItem = srcModelItem;
-                this.DstModelItem = desModelItem;
-                this.EdgeLocation = edgeLocatioin;
-                this.ViewStateOwnerModelItem = addedModelItem;
-                this.ShouldCreateConnector = true;
-            }
-
-            private StoreAutoConnectorViewStateChange()
-            {
-            }
-
-            public override bool Apply()
-            {
-                StateMachineDesigner designer = this.StateMachine.View as StateMachineDesigner;
-                Fx.Assert(designer != null, "designer");
-                StateContainerEditor editor = designer.StateContainerEditor;
-                Fx.Assert(editor != null, "editor");
-                // only the first time we need to calculate the ViewState,
-                // later, we just use the old one.
-                if (this.ShouldCreateConnector)
-                {
-                    UIElement srcElement = editor.modelItemToUIElement[this.SrcModelItem];
-                    UIElement desElement = editor.modelItemToUIElement[this.DstModelItem];
-                    ConnectionPoint srcConnectionPoint = null;
-                    ConnectionPoint desConnectionPoint = null;
-                    PointCollection points = editor.CreatePointCollectionForAutoConnectOrAutoSplit(
-                        srcElement, desElement, this.SrcModelItem, ref srcConnectionPoint, ref desConnectionPoint);
-                    this.OldViewState = editor.ViewStateService.RetrieveViewState(this.ViewStateOwnerModelItem, ConnectorLocationViewStateKey);
-                    this.NewViewState = points;
-
-                    // compare old and new values, if they're the same, return false
-                    if (this.OldViewState == null && this.NewViewState == null)
-                    {
-                        return false;
-                    }
-
-                    if (this.OldViewState != null
-                        && this.NewViewState != null
-                        && points.SequenceEqual(this.OldViewState as PointCollection))
-                    {
-                        return false;
-                    }
-
-                    this.ShouldCreateConnector = false;
-                }
-
-                editor.ViewStateService.StoreViewState(this.ViewStateOwnerModelItem, ConnectorLocationViewStateKey, this.NewViewState);
-                return true;
-            }
-
-            public override Change GetInverse()
-            {
-                return new StoreAutoConnectorViewStateChange
-                {
-                    StateMachine = this.StateMachine,
-                    ViewStateOwnerModelItem = this.ViewStateOwnerModelItem,
-                    EdgeLocation = this.EdgeLocation,
-                    SrcModelItem = this.SrcModelItem,
-                    DstModelItem = this.DstModelItem,
-                    OldViewState = this.NewViewState,
-                    NewViewState = this.OldViewState,
-                    ShouldCreateConnector = false
-                };
-            }
-        }
-
-        #endregion
-
-        #region AutoSplit
-
-        public bool CanAutoSplit(DragEventArgs e)
-        {
-            if (!this.IsDropAllowed(e))
-            {
-                return false;
-            }
-            ModelItem draggedModelItem = e.Data.GetData(DragDropHelper.ModelItemDataFormat) as ModelItem;
-            if (draggedModelItem != null && this.modelItemToUIElement.ContainsKey(draggedModelItem))
-            {
-                if (StateContainerEditor.GetAttachedConnectors(this.modelItemToUIElement[draggedModelItem]).Count > 0)
-                {
-                    return false;
-                }
-
-                if (StateContainerEditor.IsFinalState(draggedModelItem))
-                {
-                    return false;
-                }
-            }
-
-            List<Type> draggedTypes = DragDropHelper.GetDraggedTypes(e.Data);
-            if (draggedTypes.Count != 1 || draggedTypes[0] != typeof(State))
-            {
-                return false;
-            }
-
-            return true;
-        }
-
-        public void DoAutoSplit(DragEventArgs e, Connector connector)
-        {
-            bool immediatelyCommit = ModelItemHelper.CanCreateImmediateEditingScope(this.ModelItem);
-
-            using (EditingScope scope = (EditingScope)this.ModelItem.BeginEdit(SR.AutoSplit, immediatelyCommit))
-            {
-                ModelItem droppedModelItem = this.DoStateContainerGridDrop(e, AutoConnectDirections.None, connector);
-                bool autoSplit = false;
-                ConnectionPoint sourceConnectionPoint = FreeFormPanel.GetSourceConnectionPoint(connector);
-                ConnectionPoint destinationConnectionPoint = FreeFormPanel.GetDestinationConnectionPoint(connector);
-                if (droppedModelItem != null)
-                {
-                    ModelItem oldConnectorModelItem = StateContainerEditor.GetConnectorModelItem(connector);
-                    int index = this.DeleteConnectorModelItem(connector);
-                    bool autoConnected = this.DoAutoConnect(sourceConnectionPoint.ParentDesigner,
-                        droppedModelItem, oldConnectorModelItem.GetCurrentValue() as Transition, index) != null;
-                    if (autoConnected)
-                    {
-                        ModelItem destinationModelItem = ((VirtualizedContainerService.VirtualizingContainer)destinationConnectionPoint.ParentDesigner).ModelItem;
-                        ModelItem stateMachineModelItem = GetStateMachineModelItem(destinationModelItem);
-                        droppedModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(new Transition()
-                        {
-                            DisplayName = StateContainerEditor.GenerateTransitionName(stateMachineModelItem),
-                            To = destinationModelItem.GetCurrentValue() as State
-                        });
-                        autoSplit = true;
-                    }
-                }
-                if (autoSplit)
-                {
-                    // Auto-split generates 4 changes: 1) drop state, 2) remove the old transition, 3) create a transition from the source state
-                    // to the dropped state, and 4) create a transition from the dropped state to the destination state.
-                    // Step 1 may result in creating the visual of all outgoing transition from the dropped state. Step 4) also creates the visual
-                    // of the new transition from the dropped state. So the visual of the transition will be created twice. To solve that problem,
-                    // we need to suppress adding connector when adding state visual (in the UI reaction for step 1).
-                    // And to support redo, we must place the suppression in the undo stack.
-                    this.Context.Services.GetService<ModelTreeManager>().AddToCurrentEditingScope(new SuppressAddingConnectorWhenAddingStateVisual());
-                    this.activeSrcConnectionPointForAutoSplit = sourceConnectionPoint;
-                    this.activeDestConnectionPointForAutoSplit = destinationConnectionPoint;
-                    AutoSplitHelper.CalculateEntryExitEdges(e.GetPosition(this.panel), connector, out this.entryEdgeForAutoSplit, out this.exitEdgeForAutoSplit);
-                    scope.Complete();
-                }
-                else
-                {
-                    scope.Revert();
-                }
-            }
-        }
-
-        private const int InvalidIndex = -1;
-
-        #endregion
-
-        class SuppressAddingConnectorWhenAddingStateVisual : Change
-        {
-            public override string Description
-            {
-                get
-                {
-                    return null;
-                }
-            }
-
-            public override bool Apply()
-            {
-                return false;
-            }
-
-            public override Change GetInverse()
-            {
-                return new SuppressAddingConnectorWhenAddingStateVisual();
-            }
-        }
-
-        internal enum ConnectorCreationResult
-        {
-            Success,
-            CannotCreateTransitionToCompositeState,
-            CannotCreateTransitionFromAncestorToDescendant,
-            CannotSetCompositeStateAsInitialState,
-            CannotSetFinalStateAsInitialState,
-            OtherFailure
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerResizeGrip.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateContainerResizeGrip.cs
deleted file mode 100644 (file)
index 2fe32b0..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.Internal.PropertyEditing;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Input;
-    using System.Windows.Media;
-
-    //This class is visual representation of ResizeGrip like control, which is used in a Grid to allow resizing.
-    class StateContainerResizeGrip : Control
-    {
-        public static readonly DependencyProperty IconProperty =
-            DependencyProperty.Register("Icon", typeof(DrawingBrush), typeof(StateContainerResizeGrip));
-
-        public static readonly DependencyProperty ParentStateContainerEditorProperty =
-            DependencyProperty.Register("ParentStateContainerEditor", typeof(StateContainerEditor), typeof(StateContainerResizeGrip));
-
-        public static readonly DependencyProperty DisabledProperty =
-            DependencyProperty.Register("Disabled", typeof(bool), typeof(StateContainerResizeGrip), new UIPropertyMetadata(false));
-
-        Point offset;
-
-        // The scope is used for capturing the current size of all the StateContainer instances that contain the target ResizeGrip.  
-        // As the user resizes the target StateContainer, its Visual ancestors would get resized.  
-        // The purpose of the scope is to store their sizes before the resizing to facilitate Undo.
-        EditingScope scope;
-
-        public DrawingBrush Icon
-        {
-            get { return (DrawingBrush)GetValue(IconProperty); }
-            set { SetValue(IconProperty, value); }
-        }
-
-        public StateContainerEditor ParentStateContainerEditor
-        {
-            get { return (StateContainerEditor)GetValue(ParentStateContainerEditorProperty); }
-            set { SetValue(ParentStateContainerEditorProperty, value); }
-        }
-
-        public bool Disabled
-        {
-            get { return (bool)GetValue(DisabledProperty); }
-            set { SetValue(DisabledProperty, value); }
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-            this.Cursor = Cursors.SizeNWSE;
-        }
-
-        protected override void OnGotMouseCapture(MouseEventArgs e)
-        {
-            ModelItem stateContainerModelItem = this.ParentStateContainerEditor.ModelItem;
-            string undoItemName = string.Empty;
-            if (stateContainerModelItem.ItemType == typeof(StateMachine))
-            {
-                undoItemName = SR.StateMachineResize;
-            }
-            else if (stateContainerModelItem.ItemType == typeof(State))
-            {
-                undoItemName = SR.StateResize;
-            }
-            else
-            {
-                Fx.Assert(false, "The model item type is invalid");
-            }
-            this.scope = (EditingScope)this.ParentStateContainerEditor.ModelItem.BeginEdit(undoItemName);
-            base.OnGotMouseCapture(e);
-        }
-
-        protected override void OnLostMouseCapture(MouseEventArgs e)
-        {
-            if (this.scope != null)
-            {
-                this.scope.Complete();
-                this.scope.Dispose();
-                this.scope = null;
-            }
-            base.OnLostMouseCapture(e);
-        }
-
-        protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
-        {
-            if (e != null && !this.Disabled)
-            {
-                this.offset = e.GetPosition(this);
-                this.CaptureMouse();
-                if (this.scope != null)
-                {
-                    this.ParentStateContainerEditor.StoreShapeSizeWithUndoRecursively(this.ParentStateContainerEditor.ModelItem);                    
-                }
-                // Select the designer when it is being resized
-                WorkflowViewElement designer = this.ParentStateContainerEditor.ModelItem.View as WorkflowViewElement;
-                
-                if (!designer.IsKeyboardFocusWithin)
-                {
-                    // Fix 185562 - if the designer has the keyboard focus (i.e. DisplayName being edited)
-                    // then there is no need to refocus on the designer again.  That prevents the
-                    // DisplayName editing to be group into the same EditingScope as resizing, and
-                    // also the defaultDisplayNameReadOnlyControl from being Visible but not modified.
-                    Keyboard.Focus(designer);
-                }
-
-                StateMachineDesigner stateMachineDesigner = VisualTreeUtils.FindVisualAncestor<StateMachineDesigner>(this.ParentStateContainerEditor);
-                stateMachineDesigner.IsResizing = true;
-
-                e.Handled = true;
-            }
-            base.OnPreviewMouseLeftButtonDown(e);
-        }
-
-        protected override void OnMouseMove(MouseEventArgs args)
-        {
-            base.OnMouseMove(args);
-            if (args != null && !this.Disabled)
-            {
-                if (args.LeftButton == MouseButtonState.Pressed && this.IsMouseCaptured && this.scope != null)
-                {
-                    StateContainerEditor stateContainerEditor = this.ParentStateContainerEditor;
-                    FreeFormPanel panel = stateContainerEditor.Panel;
-                    Grid stateContainerGrid = stateContainerEditor.stateContainerGrid;
-                    Point currentPosition = Mouse.GetPosition(stateContainerGrid);
-                    currentPosition.Offset(this.offset.X, this.offset.Y);
-                    stateContainerEditor.StateContainerWidth = Math.Min(Math.Max(panel.RequiredWidth, currentPosition.X), stateContainerGrid.MaxWidth);
-                    stateContainerEditor.StateContainerHeight = Math.Min(Math.Max(panel.RequiredHeight, currentPosition.Y), stateContainerGrid.MaxHeight);
-                    args.Handled = true;
-                }
-            }
-        }
-
-        protected override void OnPreviewMouseLeftButtonUp(MouseButtonEventArgs e)
-        {
-            if (e != null && !this.Disabled && this.scope != null)
-            {
-                ModelItem stateContainerModelItem = this.ParentStateContainerEditor.ModelItem;
-                ViewStateService viewStateService = this.ParentStateContainerEditor.Context.Services.GetService<ViewStateService>();
-                viewStateService.StoreViewStateWithUndo(stateContainerModelItem, StateContainerEditor.StateContainerWidthViewStateKey, this.ParentStateContainerEditor.StateContainerWidth);
-                viewStateService.StoreViewStateWithUndo(stateContainerModelItem, StateContainerEditor.StateContainerHeightViewStateKey, this.ParentStateContainerEditor.StateContainerHeight);
-                Mouse.OverrideCursor = null;
-                Mouse.Capture(null);
-                StateMachineDesigner stateMachineDesigner = VisualTreeUtils.FindVisualAncestor<StateMachineDesigner>(this.ParentStateContainerEditor);
-                stateMachineDesigner.IsResizing = false;
-                e.Handled = true;
-            }
-            base.OnPreviewMouseLeftButtonUp(e);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateDesigner.xaml.cs
deleted file mode 100644 (file)
index a2c42b4..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Debug;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.Internal.PropertyEditing;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Linq;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Media;
-    using System.Windows.Input;
-    using System.Windows.Threading;
-    using System.Windows.Automation;
-
-    partial class StateDesigner
-    {
-        Guid guid;
-
-        internal const string EntryPropertyName = "Entry";
-        internal const string ExitPropertyName = "Exit";
-        internal const string IsFinalPropertyName = "IsFinal";
-        internal const string DisplayNamePropertyName = "DisplayName";
-        internal const string TransitionsPropertyName = "Transitions";
-        internal const string ChildStatesPropertyName = "States";
-        internal const string VariablesPropertyName = "Variables";
-
-        const double StateMinWidth = 20;
-
-        public static readonly RoutedCommand SetAsInitialCommand = new RoutedCommand("SetAsInitial", typeof(StateDesigner));
-
-        public StateDesigner()
-        {
-            InitializeComponent();
-            this.guid = Guid.NewGuid();
-            this.Collapsible = false;
-            this.SetValue(AutomationProperties.ItemStatusProperty, this.guid.ToString());
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-            this.PinAsExpanded();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type stateType = typeof(State);
-            builder.AddCustomAttributes(stateType, new DesignerAttribute(typeof(StateDesigner)));
-            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.EntryPropertyName), BrowsableAttribute.No);
-            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.ExitPropertyName), BrowsableAttribute.No);
-            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.TransitionsPropertyName), BrowsableAttribute.No);
-            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.IsFinalPropertyName), BrowsableAttribute.No);
-            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.VariablesPropertyName), BrowsableAttribute.No);
-
-            builder.AddCustomAttributes(stateType, new ShowInOutlineViewAttribute());
-            builder.AddCustomAttributes(stateType, new AllowBreakpointAttribute());
-            builder.AddCustomAttributes(stateType, stateType.GetProperty(StateDesigner.TransitionsPropertyName), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false });
-            builder.AddCustomAttributes(stateType, new ActivityDesignerOptionsAttribute
-            {
-                OutlineViewIconProvider = (modelItem) =>
-                {
-                    ResourceDictionary icons = EditorResources.GetIcons();
-
-                    if (modelItem != null)
-                    {
-                        object icon = null;
-
-                        if (StateContainerEditor.IsFinalState(modelItem) && icons.Contains("FinalStateIcon"))
-                        {
-                            icon = icons["FinalStateIcon"];
-                        }
-                        else if (icons.Contains("StateIcon"))
-                        {
-                            icon = icons["StateIcon"];
-                        }
-
-                        if (icon != null && icon is DrawingBrush)
-                        {
-                            return (DrawingBrush)icon;
-                        }
-                    }
-
-                    return null;
-                }
-            });
-        }
-
-        protected override void OnShowExpandedChanged(bool newValue)
-        {
-            this.PinAsExpanded();
-        }
-
-        // Make sure StateDesigner is always expanded
-        void PinAsExpanded()
-        {
-            this.ExpandState = true;
-            this.PinState = true;
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            this.MinWidth = StateMinWidth;
-            base.OnModelItemChanged(newItem);
-        }
-
-        protected internal override string GetAutomationItemStatus()
-        {
-            string status = base.GetAutomationItemStatus();
-            status = status + "Guid=" + this.guid.ToString() + " ";
-            status = status + "IsFinal=" + (this.IsFinalState() ? "True " : "False ");
-            return status;
-        }
-
-
-        void OnSetAsInitialCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            ModelItem stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.ModelItem);
-            e.CanExecute = (!this.IsReadOnly && stateMachineModelItem != null && this.ModelItem != stateMachineModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].Value &&
-                            !this.IsFinalState() &&
-                            !this.IsRootDesigner && StateContainerEditor.GetEmptyConnectionPoints(this).Count > 0);
-            e.Handled = true;
-        }
-
-        void OnSetAsInitialExecute(object sender, ExecutedRoutedEventArgs e)
-        {
-            ModelItem stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.ModelItem);
-
-            using (EditingScope es = (EditingScope)this.ModelItem.BeginEdit(SR.SetInitialState))
-            {
-                this.ViewStateService.RemoveViewState(stateMachineModelItem, StateContainerEditor.ConnectorLocationViewStateKey);
-                stateMachineModelItem.Properties[StateMachineDesigner.InitialStatePropertyName].SetValue(this.ModelItem.GetCurrentValue());
-                es.Complete();
-            }
-            e.Handled = true;
-        }
-
-        void OnStateSpecificMenuItemLoaded(object sender, RoutedEventArgs e)
-        {
-            MenuItem item = sender as MenuItem;
-            if (null != item && (this.IsFinalState()))
-            {
-                item.Visibility = Visibility.Collapsed;
-            }
-            e.Handled = true;
-        }
-
-        internal bool IsFinalState()
-        {
-            return StateContainerEditor.IsFinalState(this.ModelItem);
-        }
-
-        public FreeFormPanel GetStateMachineFreeFormPanel()
-        {
-            StateDesigner current = this;
-            WorkflowViewElement parent = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(current);
-            while (parent != null)
-            {
-                if (parent is StateDesigner)
-                {
-                    current = (StateDesigner)parent;
-                    parent = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(current);
-                }
-                else if (parent is StateMachineDesigner)
-                {
-                    return VisualTreeUtils.FindVisualAncestor<FreeFormPanel>(current);
-                }
-                else
-                {
-                    return null;
-                }
-            }
-
-            return null;
-        }
-
-        private void OnTransitionClicked(object sender, RoutedEventArgs e)
-        {
-            Button button = e.Source as Button;
-
-            if (button != null)
-            {
-                ModelItem transitionModelItem = button.Tag as ModelItem;
-
-                if (transitionModelItem != null)
-                {
-                    this.Designer.MakeRootDesigner(transitionModelItem);
-                }
-            }
-        }
-
-        private void OnToStateClicked(object sender, RoutedEventArgs e)
-        {
-            Button button = e.Source as Button;
-
-            if (button != null)
-            {
-                ModelItem toStateModelItem = button.Tag as ModelItem;
-
-                if (toStateModelItem != null)
-                {
-                    this.Designer.MakeRootDesigner(toStateModelItem);
-                }
-            }
-        }
-
-        private void StateDesignerToolTipOpening(object sender, ToolTipEventArgs e)
-        {
-            StateContainerEditor stateContainerEditor = (StateContainerEditor)sender;
-
-            if (StateContainerEditor.CopiedTransitionDestinationState != null)
-            {
-                WorkflowViewElement view = VisualTreeUtils.FindVisualAncestor<WorkflowViewElement>(stateContainerEditor);
-                if (view != null)
-                {
-                    StateContainerEditor container = (StateContainerEditor)DragDropHelper.GetCompositeView(view);
-                    string errorMessage;
-                    if (container != null && container.CanPasteTransition(StateContainerEditor.CopiedTransitionDestinationState, out errorMessage, view.ModelItem))
-                    {
-                        stateContainerEditor.ToolTip = SR.EditStateToolTip + Environment.NewLine + SR.PasteTransitionToolTip;
-                        return;
-                    }
-                }
-            }
-
-            stateContainerEditor.ToolTip = SR.EditStateToolTip;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateLinkButtonToolTipConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateLinkButtonToolTipConverter.cs
deleted file mode 100644 (file)
index 1dc0294..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Windows;
-    using System.Windows.Data;
-
-    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Justification = "Used in XAML")]
-    internal sealed class StateLinkButtonToolTipConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            string stateOrTransitionName = value as string;
-            if (!string.IsNullOrEmpty(stateOrTransitionName))
-            {
-                return string.Format(CultureInfo.CurrentUICulture, SR.StateLinkButtonToolTip, stateOrTransitionName);
-            }
-
-            return null;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotImplementedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineConnetionPointsAdorner.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineConnetionPointsAdorner.cs
deleted file mode 100644 (file)
index 7248157..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.View;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Windows;
-    using System.Windows.Documents;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Runtime;
-    using System.Windows.Controls;
-
-    internal class StateMachineConnectionPointsAdorner : ConnectionPointsAdorner
-    {
-        public StateMachineConnectionPointsAdorner(UIElement adornedElement, List<ConnectionPoint> connectionPointsToShow, bool isParentShapeSelected)
-            : base(adornedElement, connectionPointsToShow, isParentShapeSelected)
-        {
-        }
-
-        protected override void OnRender(DrawingContext drawingContext)
-        {
-            Point actualPoint;
-            Point origin = FreeFormPanel.GetLocation(AdornedElement);
-            Thickness margin = ((FrameworkElement)AdornedElement).Margin;
-            origin.X += margin.Left;
-            origin.Y += margin.Top;
-
-            foreach (ConnectionPoint connPoint in connectionPoints)
-            {
-                actualPoint = new Point(connPoint.Location.X - origin.X, connPoint.Location.Y - origin.Y);
-                this.DrawConnectionPoint(connPoint, actualPoint, drawingContext);
-            }
-            
-            base.OnRender(drawingContext);
-        }
-
-        protected override void OnMouseDown(MouseButtonEventArgs e)
-        {
-            if (e.ChangedButton == MouseButton.Right)
-            {
-                this.RaiseMouseEvent(e);
-            }
-            base.OnMouseDown(e);
-        }
-
-        protected override void OnMouseUp(MouseButtonEventArgs e)
-        {
-            if (e.ChangedButton == MouseButton.Right)
-            {
-                this.RaiseMouseEvent(e);
-            }
-            base.OnMouseUp(e);
-        }
-
-        protected override void OnContextMenuOpening(ContextMenuEventArgs e)
-        {
-            this.AdornedElement.RaiseEvent(e);
-            base.OnContextMenuOpening(e);
-        }
-
-        private void RaiseMouseEvent(MouseButtonEventArgs e)
-        {
-            MouseButtonEventArgs args = new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, e.ChangedButton);
-            args.RoutedEvent = e.RoutedEvent;
-            UIElement target = this.AdornedElement;
-            if (target is VirtualizedContainerService.VirtualizingContainer)
-            {
-                target = ((VirtualizedContainerService.VirtualizingContainer)target).Child;
-                if (target is StateDesigner)
-                {
-                    target = ((StateDesigner)target).stateContentPresenter;
-                    target.RaiseEvent(args);
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineDesigner.xaml.cs
deleted file mode 100644 (file)
index 4a19a28..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Windows;
-    using System.Windows.Input;
-
-    [ActivityDesignerOptions(AlwaysCollapseChildren = true)]
-    partial class StateMachineDesigner
-    {
-        const string ExpandViewStateKey = "IsExpanded";
-        internal const string InitialStatePropertyName = "InitialState";
-        internal const string VariablesPropertyName = "Variables";
-        internal const string StatesPropertyName = "States";
-
-        StateContainerEditor stateContainerEditor = null;
-
-        public StateMachineDesigner()
-        {
-            InitializeComponent();
-        }
-
-        internal bool IsResizing { get; set; }
-
-        internal StateContainerEditor StateContainerEditor
-        {
-            get { return this.stateContainerEditor; }
-        }
-
-        void OnStateContainerLoaded(object sender, RoutedEventArgs e)
-        {
-            this.stateContainerEditor = sender as StateContainerEditor;
-        }
-
-        void OnStateContainerUnloaded(object sender, RoutedEventArgs e)
-        {
-            this.stateContainerEditor = null;
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type stateMachineType = typeof(StateMachine);
-            builder.AddCustomAttributes(stateMachineType, new DesignerAttribute(typeof(StateMachineDesigner)));
-            builder.AddCustomAttributes(stateMachineType, stateMachineType.GetProperty(StateMachineDesigner.StatesPropertyName), BrowsableAttribute.No);
-            builder.AddCustomAttributes(stateMachineType, stateMachineType.GetProperty(StateMachineDesigner.VariablesPropertyName), BrowsableAttribute.No);
-            builder.AddCustomAttributes(stateMachineType, stateMachineType.GetProperty(StateMachineDesigner.InitialStatePropertyName), BrowsableAttribute.No);
-            builder.AddCustomAttributes(stateMachineType, stateMachineType.GetProperty(StateMachineDesigner.InitialStatePropertyName), new ShowPropertyInOutlineViewAttribute() { DuplicatedChildNodesVisible = true });
-            builder.AddCustomAttributes(stateMachineType, stateMachineType.GetProperty(StateMachineDesigner.StatesPropertyName), new ShowPropertyInOutlineViewAttribute());
-
-
-            builder.AddCustomAttributes(stateMachineType, new FeatureAttribute(typeof(StateMachineValidationErrorSourceLocatorFeature)));
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
-            if (viewStateService != null)
-            {
-                // Make StateMachine designer always collapsed by default, but only if the user didn't explicitly specify collapsed or expanded.
-                bool? isExpanded = (bool?)viewStateService.RetrieveViewState((ModelItem)newItem, ExpandViewStateKey);
-                if (isExpanded == null)
-                {
-                    viewStateService.StoreViewState((ModelItem)newItem, ExpandViewStateKey, false);
-                }
-            }
-            base.OnModelItemChanged(newItem);
-        }
-
-        // do not proprogate up to StateMachineDesigner, because designer will set selection to itself on GotFocus event.
-        private void OnAdornerLayerGotFocus(object sender, RoutedEventArgs e)
-        {
-            e.Handled = true;
-        }
-
-        private void StateMachineDesignerKeyDown(object sender, KeyEventArgs e)
-        {
-            // Ignore KeyBoard input when in resizing mode.
-            e.Handled = IsResizing;
-        }
-
-        private void StateMachineDesignerPreviewKeyDown(object sender, KeyEventArgs e)
-        {
-            // Enter cannot be captured in KeyDown, so handle it in PreviewKeyDown event.
-            e.Handled = IsResizing && e.Key == Key.Enter;
-        }
-    }
- }
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineFreeFormPanel.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineFreeFormPanel.cs
deleted file mode 100644 (file)
index fb228b9..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.FreeFormEditing;
-
-    // This is a workaround. Internal type FreeFromPanel cannot be used in xaml even if System.Activities.Presentation is configured to
-    // be InternalsVisibleTo System.Activities.Core.Presentation
-    internal sealed class StateMachineFreeFormPanel : FreeFormPanel
-    {
-        public StateMachineFreeFormPanel()
-        {
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocator.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocator.cs
deleted file mode 100644 (file)
index 9f20549..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-// <copyright>
-//   Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Validation;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-    using System.Runtime;
-
-    internal class StateMachineValidationErrorSourceLocator : IValidationErrorSourceLocator
-    {
-        public List<object> FindSourceDetailFromActivity(Activity errorSource, object errorSourceDetail)
-        {
-            if (errorSourceDetail == null)
-            {
-                return new List<object> { errorSource };
-            }
-            else
-            {
-                return FindRelativePath((StateMachine)errorSource, errorSourceDetail);
-            }
-        }
-
-        // case 1: StateMachine -> Default expression of StateMachine's variable -> ...
-        // case 2: StateMachine -> InternalState -> ...
-        public void ReplaceParentChainWithSource(Activity parentActivity, List<object> parentChain)
-        {
-            Activity lastActivity = parentChain[parentChain.Count - 1] as Activity;
-            StateMachine stateMachine = (StateMachine)parentActivity;
-
-            foreach (Variable variable in stateMachine.Variables)
-            {
-                if (variable != null && variable.Default == lastActivity)
-                {
-                    parentChain.Add(stateMachine);
-                    return;
-                }
-            }
-
-            if (parentChain.Count > 1)
-            {
-                // assume lastActivity is InternalState
-
-                // remove InternalState
-                parentChain.RemoveAt(parentChain.Count - 1);
-
-                Activity targetActivity = (Activity)parentChain[parentChain.Count - 1];
-
-                // the targetActivity will be available in the path
-                parentChain.RemoveAt(parentChain.Count - 1);
-
-                List<object> path = FindRelativePath(stateMachine, targetActivity);
-
-                foreach (object pathObject in path)
-                {
-                    parentChain.Add(pathObject);
-                }
-            }
-        }
-
-        private static List<object> FindRelativePath(StateMachine machine, object descendent)
-        {
-            List<object> path = FindDescendentFromStateMachine(machine, descendent);
-            path.Reverse();
-            return path;
-        }
-
-        private static List<object> FindDescendentFromStateMachine(StateMachine machine, object descendent)
-        {
-            List<object> path = new List<object>();
-            path.Add(machine);
-            foreach (State state in machine.States)
-            {
-                if (state == descendent)
-                {
-                    break;
-                }
-                else if (state.Entry == descendent)
-                {
-                    path.Add(state);
-                    break;
-                }
-                else if (state.Exit == descendent)
-                {
-                    path.Add(state);
-                    break;
-                }
-                else
-                {
-                    Transition foundTransition = null;
-                    bool transitionAlone = false;
-                    foreach (Transition transition in state.Transitions)
-                    {
-                        foundTransition = transition;
-                        if (transition == descendent)
-                        {
-                            transitionAlone = true;
-                            break;
-                        }
-                        else if (transition.Trigger == descendent)
-                        {
-                            break;
-                        }
-                        else if (transition.Action == descendent)
-                        {
-                            break;
-                        }
-                        else if (transition.Condition == descendent)
-                        {
-                            break;
-                        }
-                        else
-                        {
-                            foundTransition = null;
-                        }
-                    }
-
-                    if (foundTransition != null)
-                    {
-                        path.Add(state);
-                        if (!transitionAlone)
-                        {
-                            path.Add(foundTransition);
-                        }
-
-                        break;
-                    }
-
-                    bool isVariableError = false;
-                    foreach (Variable variable in state.Variables)
-                    {
-                        if (variable.Default == descendent)
-                        {
-                            isVariableError = true;
-                        }
-                    }
-
-                    if (isVariableError)
-                    {
-                        path.Add(state);
-                        break;
-                    }
-                }
-            }
-
-            path.Add(descendent);
-            return path;
-        }       
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocatorFeature.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/StateMachineValidationErrorSourceLocatorFeature.cs
deleted file mode 100644 (file)
index 9c9ffb3..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-// <copyright>
-//   Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Validation;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-
-    internal class StateMachineValidationErrorSourceLocatorFeature : ValidationErrorSourceLocatorFeature
-    {
-        protected override IValidationErrorSourceLocator ValidationErrorSourceLocator
-        {
-            get { return new StateMachineValidationErrorSourceLocator(); }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchDesigner.xaml.cs
deleted file mode 100644 (file)
index 6cc6a7e..0000000
+++ /dev/null
@@ -1,443 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System;
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-    using System.Diagnostics;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Windows.Threading;
-    using System.Runtime;
-    using System.Collections.Generic;
-    using System.Activities.Presentation.View;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Collections.ObjectModel;
-    using System.Globalization;
-    using System.Activities.Presentation.View.OutlineView;
-
-    partial class SwitchDesigner
-    {
-        const string ExpandViewStateKey = "IsExpanded";
-
-        public static readonly DependencyProperty CaseTypeProperty =
-            DependencyProperty.Register(
-            "CaseType",
-            typeof(Type),
-            typeof(SwitchDesigner),
-            new UIPropertyMetadata(null));
-
-        public static readonly DependencyProperty SelectedCaseProperty =
-            DependencyProperty.Register(
-            "SelectedCase",
-            typeof(ModelItem),
-            typeof(SwitchDesigner),
-            new UIPropertyMetadata(null));
-
-        public static readonly DependencyProperty ShowDefaultCaseExpandedProperty =
-            DependencyProperty.Register(
-            "ShowDefaultCaseExpanded",
-            typeof(bool),
-            typeof(SwitchDesigner),
-            new UIPropertyMetadata(false));
-
-        public static readonly DependencyProperty NewKeyProperty =
-            DependencyProperty.Register(
-            "NewKey",
-            typeof(object),
-            typeof(SwitchDesigner),
-            new UIPropertyMetadata(null));
-
-        static TypeResolvingOptions argumentTypeResolvingOptions;
-
-        TextBlock addNewCaseLabel;
-        CaseKeyBox caseKeyBox;
-
-        public bool ShowDefaultCaseExpanded
-        {
-            get
-            {
-                return (bool)this.GetValue(ShowDefaultCaseExpandedProperty);
-            }
-            set
-            {
-                this.SetValue(ShowDefaultCaseExpandedProperty, value);
-            }
-        }
-
-        ModelItem SelectedCase
-        {
-            get
-            {
-                return (ModelItem)this.GetValue(SelectedCaseProperty);
-            }
-            set
-            {
-                this.SetValue(SelectedCaseProperty, value);
-            }
-        }
-
-        Type CaseType
-        {
-            get { return (Type)GetValue(CaseTypeProperty); }
-            set { SetValue(CaseTypeProperty, value); }
-        }
-
-        object NewKey
-        {
-            get { return GetValue(NewKeyProperty); }
-            set { SetValue(NewKeyProperty, value); }
-        }
-
-        public CaseKeyValidationCallbackDelegate CheckDuplicateCaseKey
-        {
-            get
-            {
-                return (object obj, out string reason) =>
-                {
-                    reason = string.Empty;
-                    if (ContainsCaseKey(obj))
-                    {
-                        string key = obj != null ? obj.ToString() : "(null)";
-                        reason = string.Format(CultureInfo.CurrentCulture, SR.DuplicateCaseKey, key);
-                        return false;
-                    }
-                    return true;
-                };
-            }
-        }
-
-        static List<Type> defaultTypes;
-        static List<Type> DefaultTypes
-        {
-            get
-            {
-                if (defaultTypes == null)
-                {
-                    defaultTypes = new List<Type>
-                    {
-                        typeof(bool),
-                        typeof(int),
-                        typeof(string),
-                    };
-                }
-                return defaultTypes;
-            }
-        }
-
-        static TypeResolvingOptions ArgumentTypeResolvingOptions
-        {
-            get
-            {
-                if (argumentTypeResolvingOptions == null)
-                {
-                    argumentTypeResolvingOptions = new TypeResolvingOptions(DefaultTypes)
-                    {
-                        Filter = null,
-                    };
-                }
-                return argumentTypeResolvingOptions;
-            }
-        }
-
-        [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
-        public SwitchDesigner()
-        {
-            InitializeComponent();
-            this.Loaded += new RoutedEventHandler(OnLoaded);
-            this.Unloaded += new RoutedEventHandler(OnUnloaded);
-            this.Resources.Add("ModelItemKeyValuePairType", typeof(ModelItemKeyValuePair<,>));
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            base.OnModelItemChanged(newItem);
-            Type modelItemType = this.ModelItem.ItemType;
-            Type[] types = modelItemType.GetGenericArguments();
-            Fx.Assert(types.Length == 1, "Switch should have exactly one generic argument");
-            this.CaseType = types[0];
-        }
-
-        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            if (e.PropertyName == "Default" && !this.ShowDefaultCaseExpanded)
-            {
-                ExpandDefaultView();
-                this.UpdateSelection(null);
-            }
-        }
-
-        void OnLoaded(object sender, RoutedEventArgs e)
-        {
-            this.Context.Items.Subscribe<Selection>(OnSelectionChanged);
-            this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
-
-            ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
-
-            foreach (ModelItem modelItem in this.ModelItem.Properties["Cases"].Dictionary.Properties["ItemsCollection"].Collection)
-            {
-                bool? isExpanded = (bool?)viewStateService.RetrieveViewState(modelItem, ExpandViewStateKey);
-                if (isExpanded != null && isExpanded.Value)
-                {
-                    this.SelectedCase = modelItem;
-                    CollapseDefaultView();
-                    break;
-                }
-            }
-        }
-
-        void OnUnloaded(object sender, RoutedEventArgs e)
-        {
-            this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
-            this.Context.Items.Unsubscribe<Selection>(OnSelectionChanged);
-        }
-
-        void OnSelectionChanged(Selection selection)
-        {
-            if (this.IsDescendantOfDefault(selection.PrimarySelection))
-            {
-                this.ExpandDefaultView();
-            }
-            else
-            {
-                foreach (ModelItem caseObject in this.ModelItem.Properties["Cases"].Dictionary.Properties["ItemsCollection"].Collection)
-                {
-                    if (IsDescendantOfCase(caseObject, selection.PrimarySelection))
-                    {
-                        UpdateSelection(caseObject);
-                        break;
-                    }
-                }
-            }
-        }
-
-        static bool IsAncestorOf(ModelItem ancester, ModelItem descendant)
-        {
-            if (ancester == null)
-            {
-                return false;
-            }
-
-            ModelItem itr = descendant;
-            while (itr != null)
-            {
-                if (itr == ancester)
-                {
-                    return true;
-                }
-                itr = itr.Parent;
-            }
-            return false;
-        }
-
-        bool IsDescendantOfDefault(ModelItem descendant)
-        {
-            if (descendant == null)
-            {
-                return false;
-            }
-            else
-            {
-                ModelItem defaultValue = this.ModelItem.Properties["Default"].Value;
-                return IsAncestorOf(defaultValue, descendant);
-            }
-        }
-
-        internal static bool IsDescendantOfCase(ModelItem caseObject, ModelItem descendant)
-        {
-            Fx.Assert(caseObject != null, "Case object mustn't be null.");
-            if (caseObject == descendant)
-            {
-                return true;
-            }
-            else
-            {
-                ModelItem caseValue = caseObject.Properties["Value"].Value;
-                return IsAncestorOf(caseValue, descendant);
-            }
-        }
-
-        void UpdateSelection(ModelItem newSelectedCase)
-        {
-            ModelItem oldSelectedCase = this.SelectedCase;
-            this.SelectedCase = newSelectedCase;
-
-            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
-            {
-                if (oldSelectedCase != null)
-                {
-                    CaseDesigner oldSelectedCaseDesigner = (CaseDesigner)oldSelectedCase.View;
-                    if (oldSelectedCaseDesigner != null)
-                    {
-                        oldSelectedCaseDesigner.ExpandState = false;
-                        oldSelectedCaseDesigner.PinState = false;
-                    }
-                }
-                if (newSelectedCase != null)
-                {
-                    CollapseDefaultView();
-
-                    CaseDesigner newSelectedCaseDesigner = (CaseDesigner)newSelectedCase.View;
-                    if (newSelectedCaseDesigner != null)
-                    {
-                        newSelectedCaseDesigner.ExpandState = true;
-                        newSelectedCaseDesigner.PinState = true;
-                    }
-                }
-            }));
-        }
-
-        internal static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(Switch<>);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(SwitchDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Default"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, new TypeResolvingOptionsAttribute(ArgumentTypeResolvingOptions));
-
-            // Hide Cases node in the treeview and display its child nodes directly.
-            builder.AddCustomAttributes(type, type.GetProperty("Cases"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false, ChildNodePrefix = "Case : " });
-        }
-
-        void OnDefaultCaseViewMouseDown(object sender, MouseButtonEventArgs e)
-        {
-            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
-            {
-                SwitchTryCatchDesignerHelper.MakeRootDesigner(this);
-                e.Handled = true;
-            }
-            else if (e.LeftButton == MouseButtonState.Pressed)
-            {
-                ExpandDefaultView();
-                Keyboard.Focus((IInputElement)sender);
-            }
-            else if (e.RightButton == MouseButtonState.Pressed)
-            {
-                if (this.IsDefaultCaseViewExpanded())
-                {
-                    Keyboard.Focus((IInputElement)sender);
-                }
-                e.Handled = true;
-            }
-        }
-
-        void OnDefaultCaseViewMouseUp(object sender, MouseButtonEventArgs e)
-        {
-            // avoid context menu upon right-click when it's collapsed
-            if (!IsDefaultCaseViewExpanded() && e.RightButton == MouseButtonState.Released)
-            {
-                e.Handled = true;
-            }
-        }
-
-        bool IsDefaultCaseViewExpanded()
-        {
-            DesignerView designerView = this.Context.Services.GetService<DesignerView>();
-            return this.ShowDefaultCaseExpanded || designerView.ShouldExpandAll;
-        }
-
-        void OnDefaultCaseViewKeyDown(object sender, KeyEventArgs e)
-        {
-            if (sender == e.OriginalSource && (e.Key == Key.Space || e.Key == Key.Enter))
-            {
-                ExpandDefaultView();
-                e.Handled = true;
-            }
-        }
-
-        void ExpandDefaultView()
-        {
-            UpdateSelection(null);
-            this.ShowDefaultCaseExpanded = true;
-        }
-
-        void CollapseDefaultView()
-        {
-            this.ShowDefaultCaseExpanded = false;
-        }
-
-        void OnAddNewCaseLabelLoaded(object sender, RoutedEventArgs e)
-        {
-            this.addNewCaseLabel = (TextBlock)sender;
-            this.addNewCaseLabel.Visibility = Visibility.Collapsed;
-        }
-
-        void OnAddNewCaseLabelUnloaded(object sender, RoutedEventArgs e)
-        {
-            this.addNewCaseLabel = null;
-        }
-
-        void OnNewKeyTextBoxGotFocus(object sender, RoutedEventArgs e)
-        {
-            this.addNewCaseLabel.Visibility = Visibility.Visible;
-        }
-
-        void OnNewKeyCommitted(object sender, RoutedEventArgs e)
-        {
-            this.addNewCaseLabel.Visibility = Visibility.Collapsed;
-            try
-            {
-                AddNewCase(this.NewKey);
-            }
-            catch (ArgumentException ex)
-            {
-                ErrorReporting.ShowErrorMessage(ex.Message);
-            }
-        }
-
-        void OnNewKeyEditCancelled(object sender, RoutedEventArgs e)
-        {
-            this.addNewCaseLabel.Visibility = Visibility.Collapsed;
-        }
-
-        void OnCaseKeyBoxLoaded(object sender, RoutedEventArgs e)
-        {
-            this.caseKeyBox = (CaseKeyBox)sender;
-        }
-
-        void AddNewCase(object newKey)
-        {
-            Type caseType = typeof(ModelItemKeyValuePair<,>).MakeGenericType(new Type[] { this.CaseType, typeof(Activity) });
-            object mutableKVPair = Activator.CreateInstance(caseType, new object[] { newKey, null });
-            ModelProperty casesProp = this.ModelItem.Properties["Cases"];
-            Fx.Assert(casesProp != null, "Property Cases is not available");
-            ModelItem cases = casesProp.Value;
-            Fx.Assert(cases != null, "Cannot get ModelItem from property Cases");
-            ModelProperty itemsCollectionProp = cases.Properties["ItemsCollection"];
-            Fx.Assert(itemsCollectionProp != null, "Cannot get property ItemsCollection from Cases");
-            ModelItemCollection itemsCollection = itemsCollectionProp.Collection;
-            Fx.Assert(itemsCollection != null, "Cannot get ModelItemCollection from property ItemsCollection");
-            itemsCollection.Add(mutableKVPair);
-
-            this.caseKeyBox.ResetText();
-        }
-
-        bool ContainsCaseKey(object key)
-        {
-            Type caseType = typeof(ModelItemKeyValuePair<,>).MakeGenericType(new Type[] { this.CaseType, typeof(Activity) });
-            ModelProperty casesProp = this.ModelItem.Properties["Cases"];
-            ModelItem cases = casesProp.Value;
-            ModelProperty itemsCollectionProp = cases.Properties["ItemsCollection"];
-            ModelItemCollection itemsCollection = itemsCollectionProp.Collection;
-
-            foreach (ModelItem item in itemsCollection)
-            {
-                object itemKey = caseType.GetProperty("Key").GetGetMethod().Invoke(item.GetCurrentValue(), null);
-                if ((itemKey != null && itemKey.Equals(key)) || (itemKey == key))
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchTryCatchDesignerHelper.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/SwitchTryCatchDesignerHelper.cs
deleted file mode 100644 (file)
index c8d2719..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-
-    static class SwitchTryCatchDesignerHelper
-    {
-        public static void MakeRootDesigner(WorkflowViewElement wve)
-        {
-            DesignerView designerView = wve.Context.Services.GetService<DesignerView>();
-            if (!wve.Equals(designerView.RootDesigner))
-            {
-                designerView.MakeRootDesigner(wve.ModelItem);
-            }
-        }
-
-        public static void MakeParentRootDesigner<TParentType>(WorkflowViewElement wve)
-            where TParentType : WorkflowViewElement
-        {
-            WorkflowViewElement view = FindParentDesigner<TParentType>(wve);
-            if (view != null)
-            {
-                MakeRootDesigner(view);
-            }
-        }
-
-        static TParentType FindParentDesigner<TParentType>(WorkflowViewElement wve) 
-            where TParentType : WorkflowViewElement
-        {
-            ModelItem parent = wve.ModelItem.Parent;
-            while (parent != null)
-            {
-                if (parent.View != null && parent.View is TParentType)
-                {
-                    return (TParentType)parent.View;
-                }
-                parent = parent.Parent;
-            }
-            return null;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/DesignerStyleDictionary.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/DesignerStyleDictionary.xaml.cs
deleted file mode 100644 (file)
index 4735b4b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.Activities.Core.Presentation.Themes
-{
-    using System.Windows;
-    using System.Runtime;
-
-    sealed partial class DesignerStylesDictionary
-    {
-        static DesignerStylesDictionary instance;
-        
-        internal DesignerStylesDictionary()
-        {
-            InitializeComponent();
-        }
-
-        static DesignerStylesDictionary Instance
-        {
-            get
-            {
-                if (null == instance)
-                {
-                    instance = new DesignerStylesDictionary();
-                }
-                return instance;
-            }
-        }
-
-        public static Style SequenceStyle
-        {
-            get
-            {
-                var key = "SequenceStyle";
-                if (!Instance.Contains(key))
-                {
-                    throw FxTrace.Exception.ArgumentNull(key);
-                }
-                var style = (Style)Instance[key];
-                if (!style.IsSealed)
-                {
-                    style.Seal();
-                }
-                return style;
-            }
-        }
-
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/EditorCategoryTemplateDictionary.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/EditorCategoryTemplateDictionary.xaml.cs
deleted file mode 100644 (file)
index 9468d82..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.Activities.Core.Presentation.Themes
-{
-    using System.Windows;
-    using System.Runtime;
-    using System.Activities.Presentation.View;
-
-    sealed partial class EditorCategoryTemplateDictionary
-    {
-        static EditorCategoryTemplateDictionary instance;
-
-        public EditorCategoryTemplateDictionary()
-        {
-            InitializeComponent();
-        }
-
-        public static EditorCategoryTemplateDictionary Instance
-        {
-            get
-            {
-                if (null == instance)
-                {
-                    instance = new EditorCategoryTemplateDictionary();
-                }
-                return instance;
-            }
-        }
-
-        public DataTemplate GetCategoryTemplate(string templateName)
-        {
-            DataTemplate result = null;
-            if (this.Contains(templateName))
-            {
-                if (!(this[templateName] is DataTemplate))
-                {
-                    Fx.Assert(false, "'" + templateName + "' is not a DataTemplate");
-                }
-                result = this[templateName] as DataTemplate;
-            }
-            else
-            {
-                Fx.Assert(false, "DataTemplate '" + templateName + "' not found");
-            }
-            return result;
-        }
-
-        public string GetCategoryTitle(string categoryName)
-        {
-            string result = string.Empty;
-            if (this.Contains(categoryName))
-            {
-                if (!(this[categoryName] is string))
-                {
-                    Fx.Assert(false, "'" + categoryName + "' is not a string");
-                }
-                result = this[categoryName] as string;
-            }
-            else
-            {
-                Fx.Assert(false, "Category title for '" + categoryName + "' not found");
-            }
-            return result;
-        }
-
-        public object GetCategoryImage(string imageName)
-        {
-            object result = null;
-            if (this.Contains(imageName))
-            {
-                result = this[imageName];
-            }
-            else
-            {
-                Fx.Assert(false, "No resource with key '" + imageName + "'");
-            }
-            return result;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/StringResourceDictionary.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/Themes/StringResourceDictionary.xaml.cs
deleted file mode 100644 (file)
index afa6db2..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.Activities.Core.Presentation.Themes
-{
-
-    sealed partial class StringResourceDictionary
-    {
-        static StringResourceDictionary instance;
-
-        public StringResourceDictionary()
-        {
-            InitializeComponent();
-        }
-
-        public static StringResourceDictionary Instance
-        {
-            get
-            {
-                if (null == instance)
-                {
-                    instance = new StringResourceDictionary();
-                }
-                return instance;
-            }
-        }
-
-        public string GetString(string key)
-        {
-            return (string)(this.Contains(key) ? this[key] : null);
-        }
-
-        public string GetString(string key, string defaultValue)
-        {
-            return (string)(this.Contains(key) ? this[key] : defaultValue);
-        }
-
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransactionScopeDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransactionScopeDesigner.xaml.cs
deleted file mode 100644 (file)
index 8965be2..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Statements;
-
-    using System.ComponentModel;
-
-    partial class TransactionScopeDesigner
-    {
-        public TransactionScopeDesigner()
-        {
-            this.InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(TransactionScope);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(TransactionScopeDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionDesigner.xaml.cs
deleted file mode 100644 (file)
index 57de538..0000000
+++ /dev/null
@@ -1,557 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.FreeFormEditing;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Statements;
-    using System.Collections.ObjectModel;
-    using System.Collections.Specialized;
-    using System.ComponentModel;
-    using System.Linq;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls.Primitives;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Windows.Controls;
-    using System.Activities.Presentation.Internal.PropertyEditing;
-    using System.Collections.Generic;
-    using System.Diagnostics.CodeAnalysis;
-
-    partial class TransitionDesigner
-    {
-        public static readonly DependencyProperty NewTransitionProperty = DependencyProperty.Register("NewTransition", typeof(object), typeof(TransitionDesigner), new PropertyMetadata(null));
-        public static readonly DependencyProperty TransitionsSharingTriggerProperty = DependencyProperty.Register("TransitionsSharingTrigger", typeof(ObservableCollection<ExpandableItemWrapper>), typeof(TransitionDesigner), new PropertyMetadata(null));
-        public static readonly DependencyProperty SelectedTransitionProperty = DependencyProperty.Register("SelectedTransition", typeof(ExpandableItemWrapper), typeof(TransitionDesigner), new PropertyMetadata(null));
-
-        internal const string TriggerPropertyName = "Trigger";
-        internal const string ActionPropertyName = "Action";
-        internal const string ToPropertyName = "To";
-        internal const string ConditionPropertyName = "Condition";
-        const string ExpandViewStateKey = "IsExpanded";
-        const int TotalFreeConnectionPointNum = StateContainerEditor.ConnectionPointNum * 4;
-
-        private ModelItem parentStateModelItem = null;
-        private bool suppressUpdatingTransitionsSharingTrigger = false;
-        private bool isPopulated = false;
-        private CaseKeyBox addNewTransitionBox = null;
-        private TextBlock addNewTransitionLabel = null;
-
-        [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
-        public TransitionDesigner()
-        {
-            InitializeComponent();
-            this.TransitionsSharingTrigger = new ObservableCollection<ExpandableItemWrapper>();
-
-            this.Loaded += (sender, e) =>
-            {
-                if (!this.isPopulated)
-                {
-                    this.isPopulated = true;
-                    this.TransitionsSharingTrigger.CollectionChanged += OnTransitionsCollectionChanged;
-                    this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
-                    this.parentStateModelItem = StateContainerEditor.GetParentStateModelItemForTransition(this.ModelItem);
-                    this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.CollectionChanged += OnTransitionsModelItemCollectionChanged;
-                    ExpandableItemWrapper selectedItem = this.UpdateTransitionsSharingTrigger();
-                    if (null != selectedItem)
-                    {
-                        this.SelectedTransition = selectedItem;
-                    }
-                }
-            };
-
-            this.Unloaded += (sender, e) =>
-            {
-                if (this.isPopulated)
-                {
-                    this.isPopulated = false;
-                    this.TransitionsSharingTrigger.Clear();
-                    this.TransitionsSharingTrigger.CollectionChanged -= OnTransitionsCollectionChanged;
-                    this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
-                    this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.CollectionChanged -= OnTransitionsModelItemCollectionChanged;
-                    this.SelectedTransition = null;
-                    this.parentStateModelItem = null;
-                }
-            };
-        }
-
-        public object NewTransition
-        {
-            get { return (object)this.GetValue(NewTransitionProperty); }
-            set { this.SetValue(NewTransitionProperty, value); }
-        }
-
-        public ObservableCollection<ExpandableItemWrapper> TransitionsSharingTrigger
-        {
-            get { return (ObservableCollection<ExpandableItemWrapper>)this.GetValue(TransitionsSharingTriggerProperty); }
-            set { this.SetValue(TransitionsSharingTriggerProperty, value); }
-        }
-
-        public ExpandableItemWrapper SelectedTransition 
-        {
-            get { return (ExpandableItemWrapper)this.GetValue(SelectedTransitionProperty); }
-            set { this.SetValue(SelectedTransitionProperty, value); }
-        }
-
-        private void OnNewTransitionLoaded(object sender, RoutedEventArgs e)
-        {
-            this.addNewTransitionBox = (CaseKeyBox)sender;
-        }
-
-        private void OnNewTransitionUnloaded(object sender, RoutedEventArgs e)
-        {
-            this.addNewTransitionBox = null;
-        }
-
-        private ExpandableItemWrapper UpdateTransitionsSharingTrigger()
-        {
-            ExpandableItemWrapper wrapper = null;
-            if (!this.suppressUpdatingTransitionsSharingTrigger)
-            {
-                this.TransitionsSharingTrigger.Clear();
-                bool expandTargetTransition = true;
-                object expandCollapseTargetViewState = this.ViewStateService.RetrieveViewState(this.ModelItem, ExpandViewStateKey);
-
-                if (expandCollapseTargetViewState != null)
-                {
-                    expandTargetTransition = (bool)expandCollapseTargetViewState;
-                }
-
-                wrapper = new ExpandableItemWrapper()
-                {
-                    Item = this.ModelItem,
-                    IsExpanded = expandTargetTransition
-                };
-                ModelItem triggerModelItem = this.ModelItem.Properties[TriggerPropertyName].Value;
-                if (triggerModelItem != null)
-                {
-                    foreach (ModelItem transitionModelItem in this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection)
-                    {
-                        if (transitionModelItem != this.ModelItem)
-                        {
-                            if (triggerModelItem == transitionModelItem.Properties[TriggerPropertyName].Value)
-                            {
-                                bool expandTransition = false;
-                                object expandCollapseViewState = this.ViewStateService.RetrieveViewState(transitionModelItem, ExpandViewStateKey);
-                                if (expandCollapseViewState != null)
-                                {
-                                    expandTransition = (bool)expandCollapseViewState;
-                                }
-
-                                this.TransitionsSharingTrigger.Add(new ExpandableItemWrapper()
-                                {
-                                    Item = transitionModelItem,
-                                    IsExpanded = expandTransition
-                                });
-                            }
-                        }
-                        else
-                        {
-                            this.TransitionsSharingTrigger.Add(wrapper);
-                        }
-                    }
-                }
-                // Connectors starting from the same point should share the same trigger
-                else
-                {
-                    PointCollection thisPointCollection = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerEditor.ConnectorLocationViewStateKey) as PointCollection;
-                    if (thisPointCollection != null && thisPointCollection.Count > 1)
-                    {
-                        foreach (ModelItem transitionModelItem in this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection)
-                        {
-                            if (transitionModelItem != this.ModelItem)
-                            {
-                                PointCollection pointCollection = this.ViewStateService.RetrieveViewState(transitionModelItem, StateContainerEditor.ConnectorLocationViewStateKey) as PointCollection;
-                                if (pointCollection != null && pointCollection.Count > 0)
-                                {
-                                    if (pointCollection[0].IsEqualTo(thisPointCollection[0]))
-                                    {
-                                        Fx.Assert(transitionModelItem.Properties[TriggerPropertyName].Value == null, "Transition trigger should be null.");
-                                        bool expandTransition = false;
-                                        object expandCollapseViewState = this.ViewStateService.RetrieveViewState(transitionModelItem, ExpandViewStateKey);
-
-                                        if (expandCollapseViewState != null)
-                                        {
-                                            expandTransition = (bool)expandCollapseViewState;
-                                        }
-
-                                        this.TransitionsSharingTrigger.Add(new ExpandableItemWrapper()
-                                        {
-                                            Item = transitionModelItem,
-                                            IsExpanded = expandTransition
-                                        });
-                                    }
-                                }
-                            }
-                            else
-                            {
-                                this.TransitionsSharingTrigger.Add(wrapper);
-                            }
-                        }
-                    }
-                }
-            }
-
-            return wrapper;
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type transitionType = typeof(Transition);
-            builder.AddCustomAttributes(transitionType, new DesignerAttribute(typeof(TransitionDesigner)));
-            builder.AddCustomAttributes(transitionType, transitionType.GetProperty(TransitionDesigner.TriggerPropertyName), BrowsableAttribute.No);
-            builder.AddCustomAttributes(transitionType, transitionType.GetProperty(TransitionDesigner.ActionPropertyName), BrowsableAttribute.No);
-            builder.AddCustomAttributes(transitionType, transitionType.GetProperty(TransitionDesigner.ToPropertyName), BrowsableAttribute.No);
-            builder.AddCustomAttributes(transitionType, transitionType.GetProperty(TransitionDesigner.ConditionPropertyName), new HidePropertyInOutlineViewAttribute());
-        }
-
-        private static void SwapItems(ModelItemCollection collection, ModelItem modelItem1, ModelItem modelItem2)
-        {
-            int index1 = collection.IndexOf(modelItem1);
-            int index2 = collection.IndexOf(modelItem2);
-            collection.Remove(modelItem1);
-            collection.Insert(index2, modelItem1);
-            collection.Remove(modelItem2);
-            collection.Insert(index1, modelItem2);
-        }
-
-        private void OnTransitionsModelItemCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
-        {
-            this.UpdateTransitionsSharingTrigger();
-        }
-
-        private void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            // Update the Trigger property for all transitions that share the trigger
-            if (e.PropertyName.Equals(TriggerPropertyName) && this.TransitionsSharingTrigger.Count > 0)
-            {
-                foreach (ExpandableItemWrapper wrapper in this.TransitionsSharingTrigger)
-                {
-                    if (wrapper.Item != this.ModelItem)
-                    {
-                        wrapper.Item.Properties[TriggerPropertyName].SetValue(this.ModelItem.Properties[TriggerPropertyName].Value);
-                    }
-                }
-            }
-        }
-
-        private void OnTransitionsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
-        {
-            if (e.Action == NotifyCollectionChangedAction.Move)
-            {
-                try
-                {
-                    // We are updating the Transitions collection in the parent State in response to
-                    // the changes in this.TransitionsSharingTrigger. We don't want to update it again
-                    // to introduce a dead loop
-                    this.suppressUpdatingTransitionsSharingTrigger = true;
-                    using (EditingScope scope = (EditingScope)this.ModelItem.BeginEdit(SR.ReorderItems))
-                    {
-                        ModelItem movedModelItem = this.TransitionsSharingTrigger[e.NewStartingIndex].Item;
-                        ModelItemCollection transitionsCollection = this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection;
-                        // moving down
-                        if (e.OldStartingIndex < e.NewStartingIndex)
-                        {
-                            ModelItem nextModelItem = this.TransitionsSharingTrigger[e.OldStartingIndex].Item;
-                            SwapItems(transitionsCollection, movedModelItem, nextModelItem);
-                        }
-                        // moving up
-                        else if (e.OldStartingIndex > e.NewStartingIndex)
-                        {
-                            ModelItem previousModelItem = this.TransitionsSharingTrigger[e.OldStartingIndex].Item;
-                            SwapItems(transitionsCollection, previousModelItem, movedModelItem);
-                        }
-                        this.Context.Services.GetService<ModelTreeManager>().AddToCurrentEditingScope(new TransitionReorderChange());
-                        scope.Complete();
-                    }
-                }
-                finally
-                {
-                    this.suppressUpdatingTransitionsSharingTrigger = false;
-                }
-            }
-        }
-
-        private void OnDestinationStateClicked(object sender, RoutedEventArgs e)
-        {
-            Button button = (Button)sender;
-            ModelItem destinationState = button.Tag as ModelItem;
-            if (destinationState != null)
-            {
-                this.Designer.MakeRootDesigner(destinationState);
-            }
-        }
-
-        private void OnSourceStateClicked(object sender, RoutedEventArgs e)
-        {
-            ModelItem sourceState = StateContainerEditor.GetParentStateModelItemForTransition(this.ModelItem);
-            if (sourceState != null)
-            {
-                this.Designer.MakeRootDesigner(sourceState);
-            }
-        }
-
-        private void OnExpandCollapseButtonClicked(object sender, RoutedEventArgs e)
-        {
-            ToggleButton button = (ToggleButton)sender;
-            ListBox listBox = VisualTreeUtils.FindVisualAncestor<ListBox>(button);
-            ExpandableItemWrapper wrapper = (ExpandableItemWrapper)listBox.SelectedItem;
-            wrapper.IsExpanded = button.IsChecked.Value;
-            this.ViewStateService.StoreViewState(wrapper.Item, ExpandViewStateKey, button.IsChecked.Value);
-
-            if ((wrapper.IsExpanded && this.Designer.ShouldCollapseAll) || !wrapper.IsExpanded && this.Designer.ShouldExpandAll)
-            {
-                // Pin the item so that it can still be expanded / collapsed when CollapseAll / ExpandAll is enabled
-                wrapper.IsPinned = true;
-            }
-        }
-
-        void OnTransitionNameTextBoxLostFocus(object sender, RoutedEventArgs e)
-        {
-            TextBox textBox = (TextBox)sender;
-            textBox.ScrollToHome();
-        }
-
-        void OnTransitionNameTextBoxContextMenuOpening(object sender, ContextMenuEventArgs e)
-        {
-            // to disable the context menu
-            e.Handled = true;
-        }
-
-        void OnCopyCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
-        {
-            Selection selection = this.Context.Items.GetValue<Selection>();
-            DesignerView designerView = this.Context.Services.GetService<DesignerView>();
-
-            if (null != selection &&
-                selection.SelectedObjects.Contains(this.ModelItem))
-            {
-                // Copy is intentionally disabled, when the root (TransitionDesigner)
-                // is selected, because we don't support transition copy on the FreeFormPanel.
-                e.CanExecute = false;
-            }
-            else
-            {
-                e.CanExecute = !this.IsReadOnly && CutCopyPasteHelper.CanCopy(this.Context);
-            }
-
-            e.ContinueRouting = false;
-            e.Handled = true;
-        }
-
-        void OnCopyCommandExecute(object sender, ExecutedRoutedEventArgs e)
-        {
-            this.Context.Services.GetService<DesignerPerfEventProvider>().WorkflowDesignerCopyStart();
-            CutCopyPasteHelper.DoCopy(this.Context);
-            e.Handled = true;
-            this.Context.Services.GetService<DesignerPerfEventProvider>().WorkflowDesignerCopyEnd();
-        }
-
-        private void OnWIPPreviewDragEnter(object sender, DragEventArgs e)
-        {
-            // We want to disable hover-to-expand for WIPs when dragging from the designer surface.
-            // This is because after hover-to-expand, the transition designer will be unloaded. 
-            // As a result, 1) there is no way to update other transitions if the shared trigger is updated, and 
-            // 2) The ReorderableListEditor will be cleared and there is no way to update the source container
-            // for actions if actions are updated.
-
-            WorkflowItemPresenter presenter = (WorkflowItemPresenter)sender;
-            if (presenter.Item != null && DragDropHelper.GetDraggedModelItems(e).Count<ModelItem>() > 0)
-            {
-                WorkflowViewElement topmostWFViewElement = this.FindTopmostWorkflowViewelementByHitTest(
-                    presenter, e.GetPosition(presenter));
-                bool isAlreadyExpanded = topmostWFViewElement != null ? topmostWFViewElement.ShowExpanded : false;
-                if (!isAlreadyExpanded)
-                {
-                    // Handling the DragEnter would not only disable Auot-expand but also Auto-surround UI gesture (Bug 202880).
-                    // To circumvent this problem, a new method (ShowSpacerHelperOnDraggedItems) is used to show
-                    // the spacer directly.
-                    presenter.ShowSpacerHelperOnDraggedItems(e);
-                    e.Handled = true;
-                }
-            }
-        }
-
-        void OnAddNewTransitionLabelLoaded(object sender, RoutedEventArgs e)
-        {
-            this.addNewTransitionLabel = (TextBlock)sender;
-            this.addNewTransitionLabel.Visibility = Visibility.Collapsed;
-        }
-
-        void OnAddNewTransitionLabelUnloaded(object sender, RoutedEventArgs e)
-        {
-            this.addNewTransitionLabel = null;
-        }
-        
-        void OnNewTransitionTextBoxGotFocus(object sender, RoutedEventArgs e)
-        {
-            this.addNewTransitionLabel.Visibility = Visibility.Visible;
-            this.addNewTransitionBox.ViewModel.ComboBoxItems = new ObservableCollection<string>(
-                GetAvailableStates().Select(
-                modelItem => (modelItem.Properties[StateDesigner.DisplayNamePropertyName].ComputedValue as string)).Where(
-                    displayName => !string.IsNullOrEmpty(displayName)).Distinct());
-        }
-
-        void OnNewTransitionCommitted(object sender, RoutedEventArgs e)
-        {
-            this.addNewTransitionLabel.Visibility = Visibility.Collapsed;
-
-            try
-            {
-                string selectedItem = this.NewTransition as string;
-
-                if (null != selectedItem)
-                {
-                    AddNewTransition(selectedItem);
-                }
-
-                this.addNewTransitionBox.ResetText();
-            }
-            catch (ArgumentException ex)
-            {
-                ErrorReporting.ShowErrorMessage(ex.Message);
-            }
-        }
-
-        void OnNewTransitionEditCancelled(object sender, RoutedEventArgs e)
-        {
-            this.addNewTransitionLabel.Visibility = Visibility.Collapsed;
-        }
-
-        private void AddNewTransition(string stateName)
-        {
-            ModelItem stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.parentStateModelItem);
-            ModelItem toStateModelItem = null;
-
-            foreach (ModelItem stateModelItem in stateMachineModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
-            {
-                if (string.Equals(stateName, stateModelItem.Properties[StateDesigner.DisplayNamePropertyName].ComputedValue as string, StringComparison.Ordinal))
-                {
-                    toStateModelItem = stateModelItem;
-                }
-            }
-
-            if (null == toStateModelItem)
-            {
-                return;
-            }
-
-            Fx.Assert(toStateModelItem != null, "To state cannot be null.");
-
-            using (EditingScope editingScope = (EditingScope)this.ModelItem.BeginEdit(SR.CreateTransition))
-            {
-                ModelItem triggerModelItem = this.ModelItem.Properties[TriggerPropertyName].Value;
-                State toState = toStateModelItem.GetCurrentValue() as State;
-
-                ModelItem newTransitionItem = this.parentStateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection.Add(new Transition()
-                {
-                    Trigger = null == triggerModelItem ? null : triggerModelItem.GetCurrentValue() as Activity,
-                    DisplayName = StateContainerEditor.GenerateTransitionName(stateMachineModelItem),
-                    To = toState
-                });
-
-                this.ViewStateService.StoreViewState(newTransitionItem, ExpandViewStateKey, true);
-
-                if (null == triggerModelItem)
-                {
-                    PointCollection thisPointCollection = this.ViewStateService.RetrieveViewState(this.ModelItem, StateContainerEditor.ConnectorLocationViewStateKey) as PointCollection;
-                    if (null != thisPointCollection && thisPointCollection.Any())
-                    {
-                        PointCollection newTransitionViewState = new PointCollection
-                            {
-                                thisPointCollection[0] // start point
-                            };
-
-                        if (toState == this.parentStateModelItem.GetCurrentValue())
-                        {
-                            // add an invalid destination point for self-transition, to force a reroute of the connection point
-                            newTransitionViewState.Add(new Point(0, 0));
-                        }
-
-                        this.ViewStateService.StoreViewState(newTransitionItem, StateContainerEditor.ConnectorLocationViewStateKey, newTransitionViewState);
-                    }
-                }
-
-                editingScope.Complete();
-            }
-
-            this.UpdateTransitionsSharingTrigger();
-        }
-
-        private IEnumerable<ModelItem> GetAvailableStates()
-        {
-            List<ModelItem> availableStates = new List<ModelItem>();
-            ModelItem stateMachineModelItem = StateContainerEditor.GetStateMachineModelItem(this.parentStateModelItem);
-            Fx.Assert(null != stateMachineModelItem, "StateMachine must be the ancestor.");
-            Dictionary<ModelItem, int> stateToConnectionMap = new Dictionary<ModelItem, int>();
-
-            foreach (ModelItem stateModelItem in stateMachineModelItem.Properties[StateMachineDesigner.StatesPropertyName].Collection)
-            {
-
-                if (!stateToConnectionMap.ContainsKey(stateModelItem))
-                {
-                    stateToConnectionMap[stateModelItem] = 0;
-                }
-
-                foreach (ModelItem transitionModelItem in stateModelItem.Properties[StateDesigner.TransitionsPropertyName].Collection)
-                {
-                    // to simplify the model, count a source connection as one, regardless of whether it is shared Trigger or not.
-                    stateToConnectionMap[stateModelItem]++;
-                    
-                    ModelItem toStateModelItem = transitionModelItem.Properties[TransitionDesigner.ToPropertyName].Value;
-                    Fx.Assert(toStateModelItem != null, "To state of a transition cannot be null.");
-
-                    if (stateToConnectionMap.ContainsKey(toStateModelItem))
-                    {
-                        stateToConnectionMap[toStateModelItem]++;
-                    }
-                    else
-                    {
-                        stateToConnectionMap[toStateModelItem] = 1;
-                    }
-                }
-            }
-
-            foreach (ModelItem stateModelItem in stateToConnectionMap.Keys)
-            {
-                if (stateToConnectionMap[stateModelItem] < TotalFreeConnectionPointNum)
-                {
-                    // only allow connection to state that have available connection points
-                    availableStates.Add(stateModelItem);
-                }
-            }
-
-            return availableStates.OrderBy(modelItem => modelItem.Properties[StateDesigner.DisplayNamePropertyName].Value == null ? 
-                SR.EmptyName : 
-                modelItem.Properties[StateDesigner.DisplayNamePropertyName].Value.GetCurrentValue());
-        }
-
-        private WorkflowViewElement FindTopmostWorkflowViewelementByHitTest(Visual visualToHitTest, Point point)
-        {
-            HitTestResult result = VisualTreeHelper.HitTest(visualToHitTest, point);
-            if (result == null)
-            {
-                return null;
-            }
-
-            for (DependencyObject obj = result.VisualHit;
-                obj != null;
-                obj = VisualTreeHelper.GetParent(obj))
-            {
-                if (obj is WorkflowViewElement)
-                {
-                    return (WorkflowViewElement)obj;
-                }
-            }
-
-            return null;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionReorderChange.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TransitionReorderChange.cs
deleted file mode 100644 (file)
index 9ae5796..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-//----------------------------------------------------------------
-// <copyright company="Microsoft Corporation">
-//     Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Model;
-
-    internal class TransitionReorderChange : Change
-    {
-        public override string Description
-        {
-            get 
-            { 
-                return null; 
-            }
-        }
-
-        public override bool Apply()
-        {
-            return false;
-        }
-
-        public override Change GetInverse()
-        {
-            return new TransitionReorderChange();
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TryCatchDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/TryCatchDesigner.xaml.cs
deleted file mode 100644 (file)
index b33dff5..0000000
+++ /dev/null
@@ -1,605 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.Services;
-    using System.Activities.Statements;
-    using System.Collections.ObjectModel;
-    using System.Collections.Specialized;
-    using System.ComponentModel;
-    using System.Diagnostics.CodeAnalysis;
-    using System.IO;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Input;
-    using System.Windows.Threading;
-    using System.Windows.Controls;
-    using System.Activities.Presentation.View.OutlineView;
-
-    /// <summary>
-    /// Interaction logic for TryCatchDesigner.xaml
-    /// </summary>
-    partial class TryCatchDesigner
-    {
-        const string CatchesPropertyName = "Catches";
-        const string ExceptionTypePropertyName = "ExceptionType";
-        const string ExpandViewStateKey = "IsExpanded";
-
-        public static readonly DependencyProperty ShowTryExpandedProperty =
-            DependencyProperty.Register(
-                "ShowTryExpanded",
-                typeof(bool),
-                typeof(TryCatchDesigner),
-                new UIPropertyMetadata(true)
-            );
-
-        public static readonly DependencyProperty ShowFinallyExpandedProperty =
-            DependencyProperty.Register(
-                "ShowFinallyExpanded",
-                typeof(bool),
-                typeof(TryCatchDesigner),
-                new UIPropertyMetadata(false)
-            );
-
-        public static readonly DependencyProperty ShowTypePresenterExpandedProperty =
-            DependencyProperty.Register(
-                "ShowTypePresenterExpanded",
-                typeof(bool),
-                typeof(TryCatchDesigner),
-                new UIPropertyMetadata(false)
-            );
-
-        public static readonly DependencyProperty SelectedCatchProperty =
-            DependencyProperty.Register(
-            "SelectedCatch",
-            typeof(ModelItem),
-            typeof(TryCatchDesigner),
-            new UIPropertyMetadata(null));
-
-        static ObservableCollection<Type> mostRecentlyUsedTypes;
-        static ObservableCollection<Type> MostRecentlyUsedTypes
-        {
-            get
-            {
-                if (mostRecentlyUsedTypes == null)
-                {
-                    mostRecentlyUsedTypes = new ObservableCollection<Type>
-                    {
-                        typeof(ArgumentException),
-                        typeof(NullReferenceException),
-                        typeof(IOException),
-                        typeof(InvalidOperationException),
-                        typeof(Exception),
-                    };
-                }
-                return mostRecentlyUsedTypes;
-            }
-        }
-
-        public bool ShowTryExpanded
-        {
-            get
-            {
-                return (bool)this.GetValue(ShowTryExpandedProperty);
-            }
-            set
-            {
-                this.SetValue(ShowTryExpandedProperty, value);
-            }
-        }
-
-        public bool ShowFinallyExpanded
-        {
-            get
-            {
-                return (bool)this.GetValue(ShowFinallyExpandedProperty);
-            }
-            set
-            {
-                this.SetValue(ShowFinallyExpandedProperty, value);
-            }
-        }
-
-        public bool ShowTypePresenterExpanded
-        {
-            get
-            {
-                return (bool)this.GetValue(ShowTypePresenterExpandedProperty);
-            }
-            set
-            {
-                this.SetValue(ShowTypePresenterExpandedProperty, value);
-            }
-        }
-
-        ModelItem SelectedCatch
-        {
-            get
-            {
-                return (ModelItem)this.GetValue(SelectedCatchProperty);
-            }
-            set
-            {
-                this.SetValue(SelectedCatchProperty, value);
-            }
-        }
-
-        TypePresenter typePresenter;
-        Label addCatchHintLabel;
-
-        internal static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(TryCatch);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(TryCatchDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Try"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Finally"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Catches"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
-
-            // Make Catches collection's node visible in the document treeview but hide Catches node itself.
-            builder.AddCustomAttributes(type, type.GetProperty("Catches"), new ShowPropertyInOutlineViewAttribute() { CurrentPropertyVisible = false });
-        }
-
-        [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
-        public TryCatchDesigner()
-        {
-            InitializeComponent();
-
-            this.Loaded += OnLoaded;
-            this.Unloaded += OnUnloaded;
-        }
-
-        void OnLoaded(object sender, RoutedEventArgs e)
-        {
-            this.Context.Items.Subscribe<Selection>(OnSelectionChanged);
-            // at this time, this.ModelItem is already set
-            this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
-            this.ModelItem.Properties[CatchesPropertyName].Collection.CollectionChanged += OnModelItemCollectionChanged;
-
-            ViewStateService viewStateService = this.Context.Services.GetService<ViewStateService>();
-
-            foreach (ModelItem modelItem in this.ModelItem.Properties["Catches"].Collection)
-            {
-                bool? isExpanded = (bool?)viewStateService.RetrieveViewState(modelItem, ExpandViewStateKey);
-                if (isExpanded != null && isExpanded.Value)
-                {
-                    this.SelectedCatch = modelItem;
-                    CollapseTryView();
-                    CollapseFinallyView();
-                    break;
-                }
-            }
-        }
-
-        void OnUnloaded(object sender, RoutedEventArgs e)
-        {
-            this.ModelItem.PropertyChanged -= OnModelItemPropertyChanged;
-            this.ModelItem.Properties[CatchesPropertyName].Collection.CollectionChanged -= OnModelItemCollectionChanged;
-            this.Context.Items.Unsubscribe<Selection>(OnSelectionChanged);
-        }
-
-        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            switch (e.PropertyName)
-            {
-                case "Try":
-                    ExpandTryView();
-                    break;
-
-                case "Finally":
-                    ExpandFinallyView();
-                    break;
-
-                default:
-                    break;
-            }
-        }
-
-        void OnModelItemCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
-        {
-            // to update the filter
-            this.typePresenter.Filter = this.ExceptionTypeFilter;
-        }
-
-        void OnSelectionChanged(Selection selection)
-        {
-            if (IsDescendantOfTry(selection.PrimarySelection))
-            {
-                this.ExpandTryView();
-            }
-            else if (IsDescendantOfFinally(selection.PrimarySelection))
-            {
-                this.ExpandFinallyView();
-            }
-            else
-            {
-                foreach (ModelItem catchObject in this.ModelItem.Properties["Catches"].Collection)
-                {
-                    if (IsDescendantOfCatch(catchObject, selection.PrimarySelection))
-                    {
-                        UpdateSelection(catchObject);
-                        break;
-                    }
-                }
-            }
-        }
-
-        bool IsDescendantOfTry(ModelItem descendant)
-        {
-            return IsDescendantOf(descendant, "Try");
-        }
-
-        bool IsDescendantOfFinally(ModelItem descendant)
-        {
-            return IsDescendantOf(descendant, "Finally");
-        }
-
-        static bool IsAncestorOf(ModelItem ancester, ModelItem descendant)
-        {
-            if (ancester == null)
-            {
-                return false;
-            }
-
-            ModelItem itr = descendant;
-            while (itr != null)
-            {
-                if (itr == ancester)
-                {
-                    return true;
-                }
-                itr = itr.Parent;
-            }
-            return false;
-        }
-
-        bool IsDescendantOf(ModelItem descendant, string property)
-        {
-            if (descendant == null)
-            {
-                return false;
-            }
-            else
-            {
-                ModelItem propertyValue = this.ModelItem.Properties[property].Value;
-                return IsAncestorOf(propertyValue, descendant);
-            }
-        }
-
-        internal static bool IsDescendantOfCatch(ModelItem catchObject, ModelItem descendant)
-        {
-            Fx.Assert(catchObject != null, "Catch object mustn't be null.");
-            if (catchObject == descendant)
-            {
-                return true;
-            }
-            else
-            {
-                ModelItem activityAction = catchObject.Properties["Action"].Value;
-                if (activityAction != null)
-                {
-                    ModelItem activityActionHandler = activityAction.Properties["Handler"].Value;
-                    if (activityActionHandler != null)
-                    {
-                        return IsAncestorOf(activityActionHandler, descendant);
-                    }
-                }
-                return false;
-            }
-        }
-
-        void UpdateSelection(ModelItem newSelectedCatch)
-        {
-            ModelItem oldSelectedCatch = this.SelectedCatch;
-            this.SelectedCatch = newSelectedCatch;
-
-            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
-            {
-                if (oldSelectedCatch != null)
-                {
-                    CatchDesigner oldSelectedCatchDesigner = (CatchDesigner)oldSelectedCatch.View;
-                    if (oldSelectedCatchDesigner != null)
-                    {
-                        oldSelectedCatchDesigner.ExpandState = false;
-                        oldSelectedCatchDesigner.PinState = false;
-                    }
-                }
-                if (newSelectedCatch != null)
-                {
-                    CollapseTryView();
-                    CollapseFinallyView();
-                    CatchDesigner newSelectedCatchDesigner = (CatchDesigner)newSelectedCatch.View;
-                    if (newSelectedCatchDesigner != null)
-                    {
-                        newSelectedCatchDesigner.ExpandState = true;
-                        newSelectedCatchDesigner.PinState = true;
-                    }
-                }
-            }));
-        }
-
-        void CreateCatch(Type exceptionType)
-        {
-            if (exceptionType != null)
-            {
-                Type catchType = typeof(Catch<>).MakeGenericType(exceptionType);
-                object catchObject = Activator.CreateInstance(catchType);
-
-                Type activityActionType = typeof(ActivityAction<>).MakeGenericType(exceptionType);
-                object activityAction = Activator.CreateInstance(activityActionType);
-
-                Type argumentType = typeof(DelegateInArgument<>).MakeGenericType(exceptionType);
-                object exceptionArgument = Activator.CreateInstance(argumentType);
-                DelegateInArgument delegateArgument = exceptionArgument as DelegateInArgument;
-                Fx.Assert(null != delegateArgument, "delegate argument must be of DelegateInArgument type!");
-                delegateArgument.Name = "exception";
-
-                catchType.GetProperty(PropertyNames.Action).SetValue(catchObject, activityAction, null);
-                activityActionType.GetProperty(PropertyNames.ActionArgument).SetValue(activityAction, exceptionArgument, null);
-
-                this.ModelItem.Properties["Catches"].Collection.Add(catchObject);
-            }
-        }
-
-        void OnFinallyViewMouseDown(object sender, MouseButtonEventArgs e)
-        {
-            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
-            {
-                SwitchTryCatchDesignerHelper.MakeRootDesigner(this);
-                e.Handled = true;
-            }
-            else if (e.LeftButton == MouseButtonState.Pressed)
-            {
-                ExpandFinallyView();
-                Keyboard.Focus((IInputElement)sender);
-            }
-            else if (e.RightButton == MouseButtonState.Pressed)
-            {
-                if (this.IsExpanded(this.ShowFinallyExpanded))
-                {
-                    Keyboard.Focus((IInputElement)sender);
-                }
-                e.Handled = true;
-            }
-        }
-
-        void OnFinallyViewMouseUp(object sender, MouseButtonEventArgs e)
-        {
-            // avoid context menu upon right-click when it's collapsed
-            if (!IsExpanded(this.ShowFinallyExpanded) && e.RightButton == MouseButtonState.Released)
-            {
-                e.Handled = true;
-            }
-        }
-
-        bool IsExpanded(bool isExpanded)
-        {
-            DesignerView designerView = this.Context.Services.GetService<DesignerView>();
-            return isExpanded || designerView.ShouldExpandAll;
-        }
-
-        void OnTryViewMouseDown(object sender, MouseButtonEventArgs e)
-        {
-            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
-            {
-                SwitchTryCatchDesignerHelper.MakeRootDesigner(this);
-                e.Handled = true;
-            }
-            else if (e.LeftButton == MouseButtonState.Pressed)
-            {
-                ExpandTryView();
-                Keyboard.Focus((IInputElement)sender);
-            }
-            else if (e.RightButton == MouseButtonState.Pressed)
-            {
-                if (this.IsExpanded(this.ShowTryExpanded))
-                {
-                    Keyboard.Focus((IInputElement)sender);
-                }
-                e.Handled = true;
-            }
-        }
-
-        void OnTryViewMouseUp(object sender, MouseButtonEventArgs e)
-        {
-            // avoid context menu upon right-click when it's collapsed
-            if (!IsExpanded(this.ShowTryExpanded) && e.RightButton == MouseButtonState.Released)
-            {
-                e.Handled = true;
-            }
-        }
-
-        void ExpandFinallyView()
-        {
-            UpdateSelection(null);
-            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
-            {
-                this.ShowTryExpanded = false;
-                this.ShowFinallyExpanded = true;
-            }));
-        }
-
-        void ExpandTryView()
-        {
-            UpdateSelection(null);
-            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
-            {
-                this.ShowFinallyExpanded = false;
-                this.ShowTryExpanded = true;
-            }));
-        }
-
-        void CollapseFinallyView()
-        {
-            this.ShowFinallyExpanded = false;
-        }
-
-        void CollapseTryView()
-        {
-            this.ShowTryExpanded = false;
-        }
-
-        void OnTryViewKeyDown(object sender, KeyEventArgs e)
-        {
-            if (sender == e.OriginalSource && (e.Key == Key.Space || e.Key == Key.Enter))
-            {
-                ExpandTryView();
-                e.Handled = true;
-            }
-        }
-
-        void OnFinallyViewKeyDown(object sender, KeyEventArgs e)
-        {
-            if (sender == e.OriginalSource && (e.Key == Key.Space || e.Key == Key.Enter))
-            {
-                ExpandFinallyView();
-                e.Handled = true;
-            }
-        }
-
-        #region AddCatch Label & TypePresenter
-
-        void OnAddCatchMouseDown(object sender, MouseButtonEventArgs e)
-        {
-            if (e.LeftButton == MouseButtonState.Pressed)
-            {
-                this.SwitchToChooseException();
-                e.Handled = true;
-            }
-        }
-
-        void OnAddCatchGotFocus(object sender, RoutedEventArgs e)
-        {
-            this.SwitchToChooseException();
-            e.Handled = true;
-        }
-
-        void SwitchToChooseException()
-        {
-            this.ShowTypePresenterExpanded = true;
-            this.typePresenter.FocusOnVisibleControl();
-        }
-
-        void SwitchToHintText()
-        {
-            this.typePresenter.Type = null;
-            this.ShowTypePresenterExpanded = false;
-            Keyboard.Focus((IInputElement)this);
-        }
-
-        void OnAddCatchHintLabelLoaded(object sender, RoutedEventArgs e)
-        {
-            this.addCatchHintLabel = (Label)sender;
-        }
-
-        void OnAddCatchHintLabelUnloaded(object sender, RoutedEventArgs e)
-        {
-            this.addCatchHintLabel = null;
-        }
-
-        void OnTypePresenterLoaded(object sender, RoutedEventArgs e)
-        {
-            TypePresenter tp = (TypePresenter)sender;
-            Fx.Assert(tp != null, "sender must be a TypePresenter.");
-
-            this.typePresenter = tp;
-            this.typePresenter.Filter = this.ExceptionTypeFilter;
-            this.typePresenter.MostRecentlyUsedTypes = MostRecentlyUsedTypes;
-            //UnRegistering because of 137896: Inside tab control multiple Loaded events happen without an Unloaded event.
-            this.typePresenter.TypeBrowserClosed -= OnTypePresenterTypeBrowserClosed;
-            this.typePresenter.TypeBrowserClosed += OnTypePresenterTypeBrowserClosed;
-        }
-
-        void OnTypePresenterUnloaded(object sender, RoutedEventArgs e)
-        {
-            if (this.typePresenter != null)
-            {
-                this.typePresenter.TypeBrowserClosed -= OnTypePresenterTypeBrowserClosed;
-                this.typePresenter = null;
-            }
-        }
-
-        void OnTypePresenterTypeBrowserClosed(object sender, RoutedEventArgs e)
-        {
-            this.typePresenter.FocusOnVisibleControl();
-        }
-
-        void OnTypePresenterKeyDown(object sender, KeyEventArgs e)
-        {
-            switch (e.Key)
-            {
-                case Key.Escape:
-                    this.SwitchToHintText();
-                    e.Handled = true;
-                    break;
-
-                case Key.Enter:
-                    this.AddCatch();
-                    e.Handled = true;
-                    break;
-            }
-        }
-
-        void OnTypePresenterLostFocus(object sender, RoutedEventArgs e)
-        {
-            if (this.ShowTypePresenterExpanded)
-            {
-                this.AddCatch();
-                e.Handled = true;
-            }
-        }
-
-        void AddCatch()
-        {
-            if (this.typePresenter != null)
-            {
-                Type type = this.typePresenter.Type;
-                if (type != null && this.ExceptionTypeFilter(type))
-                {
-                    CreateCatch(type);
-                }
-                this.SwitchToHintText();
-            }
-        }
-
-        #endregion
-
-        bool ExceptionTypeFilter(Type type)
-        {
-            if (type == null)
-            {
-                return false;
-            }
-
-            if (type != typeof(Exception) && !type.IsSubclassOf(typeof(Exception)))
-            {
-                return false;
-            }
-
-            ModelProperty catchesProperty = this.ModelItem.Properties[CatchesPropertyName];
-            Fx.Assert(catchesProperty != null, "TryCatch.Catches could not be null");
-            ModelItemCollection catches = catchesProperty.Collection;
-            Fx.Assert(catches != null, "Catches.Collection could not be null");
-            foreach (ModelItem catchItem in catches)
-            {
-                ModelProperty exceptionTypeProperty = catchItem.Properties[ExceptionTypePropertyName];
-                Fx.Assert(exceptionTypeProperty != null, "Catch.ExceptionType could not be null");
-                Type exceptionType = exceptionTypeProperty.ComputedValue as Type;
-                Fx.Assert(exceptionType != null, "Catch.ExceptionType.Value could not be null");
-
-                if (exceptionType == type)
-                {
-                    return false;
-                }
-            }
-
-            return true;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/VerticalConnector.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/VerticalConnector.xaml.cs
deleted file mode 100644 (file)
index 6d912cf..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Hosting;
-    using System.Activities.Presentation;
-    using System.Windows;
-    using System.Windows.Media.Animation;
-
-    partial class VerticalConnector
-    {
-        public static readonly DependencyProperty AllowedItemTypeProperty =
-            DependencyProperty.Register("AllowedItemType", typeof(Type), typeof(VerticalConnector), new UIPropertyMetadata(typeof(object)));
-
-        public static readonly DependencyProperty ContextProperty = DependencyProperty.Register(
-            "Context",
-            typeof(EditingContext),
-            typeof(VerticalConnector));
-
-        public VerticalConnector()
-        {
-            this.InitializeComponent();
-        }
-
-        public Type AllowedItemType
-        {
-            get { return (Type)GetValue(AllowedItemTypeProperty); }
-            set { SetValue(AllowedItemTypeProperty, value); }
-        }
-
-        public EditingContext Context
-        {
-            get { return (EditingContext)GetValue(ContextProperty); }
-            set { SetValue(ContextProperty, value); }
-        }
-
-        protected override void OnDragEnter(DragEventArgs e)
-        {
-            CheckAnimate(e, "Expand");
-            this.dropTarget.Visibility = Visibility.Visible;
-        }
-
-        protected override void OnDragLeave(DragEventArgs e)
-        {
-            CheckAnimate(e, "Collapse");
-            this.dropTarget.Visibility = Visibility.Collapsed;
-        }
-
-        protected override void OnDrop(DragEventArgs e)
-        {
-            this.dropTarget.Visibility = Visibility.Collapsed;
-            base.OnDrop(e);
-        }
-
-        void CheckAnimate(DragEventArgs e, string storyboardResourceName)
-        {
-            if (!e.Handled)
-            {
-                if (!this.Context.Items.GetValue<ReadOnlyState>().IsReadOnly &&
-                    DragDropHelper.AllowDrop(e.Data, this.Context, this.AllowedItemType))
-                {
-                    BeginStoryboard((Storyboard)this.Resources[storyboardResourceName]);
-                    return;
-                }
-                else
-                {
-                    e.Effects = DragDropEffects.None;
-                }
-                e.Handled = true;
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WhileDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WhileDesigner.xaml.cs
deleted file mode 100644 (file)
index c019677..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.View.OutlineView;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-
-    /// <summary>
-    /// Interaction logic for WhileDesigner.xaml
-    /// </summary>
-    partial class WhileDesigner
-    {
-        public WhileDesigner()
-        {
-            InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(While);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(WhileDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
-
-            builder.AddCustomAttributes(type, type.GetProperty("Condition"), new HidePropertyInOutlineViewAttribute());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WriteLineDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Core/Presentation/WriteLineDesigner.xaml.cs
deleted file mode 100644 (file)
index 7a6e207..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Core.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Statements;
-    using System.ComponentModel;
-
-    partial class WriteLineDesigner
-    {
-        public WriteLineDesigner()
-        {
-            this.InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(WriteLine);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(WriteLineDesigner)));
-            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityDesignerHelper.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityDesignerHelper.cs
deleted file mode 100644 (file)
index 53cfd86..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Presentation
-{
-    using System.ComponentModel;
-    using System.Activities.Statements;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Core.Presentation.Themes;
-    using System.Linq;
-    using System.Activities.Core.Presentation;
-    using System.Diagnostics.CodeAnalysis;
-    using System.ServiceModel.Activities;
-    using System.Windows;
-    using System.Runtime;
-    using System.Globalization;
-
-
-
-    static class ActivityDesignerHelper
-    {
-        public const string ChannelBasedCorrelationKey = "ChannelBasedCorrelation";
-
-        [SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters",
-            Justification = "This is a TryGet pattern that requires out parameters")]
-        public static bool IsItemInSequence(this ModelItem item, out ModelItem sequence)
-        {
-            if (null == item)
-            {
-                throw FxTrace.Exception.AsError(new ArgumentNullException("item"));
-            }
-
-            bool result = false;
-            int level = 0;
-
-            Func<ModelItem, bool> isInSequencePredicate = (p) =>
-            {
-                switch (level)
-                {
-                    case 0:
-                        ++level;
-                        return (p is ModelItemCollection);
-
-                    case 1:
-                        ++level;
-                        result = typeof(Sequence).IsAssignableFrom(p.ItemType);
-                        return result;
-
-                    default:
-                        return false;
-                };
-            };
-
-            ModelItem container = item.GetParentEnumerator(isInSequencePredicate).LastOrDefault();
-            sequence = result ? container : null;
-            return result;
-        }
-
-        [SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters",
-            Justification = "This is a TryGet pattern that requires out parameters")]
-        public static bool IsItemInFlowchart(this ModelItem item, out ModelItem flowchart, out ModelItem flowStep)
-        {
-            if (null == item)
-            {
-                throw FxTrace.Exception.AsError(new ArgumentNullException("item"));
-            }
-
-            bool result = false;
-            int level = 0;
-            ModelItem flowStepContainer = null;
-
-            flowchart = null;
-            flowStep = null;
-
-            Func<ModelItem, bool> isInFlowchartPredicate = (p) =>
-            {
-                switch (level)
-                {
-                    case 0:
-                        ++level;
-                        flowStepContainer = typeof(FlowStep).IsAssignableFrom(p.ItemType) ? p : null;
-                        return null != flowStepContainer;
-
-                    case 1:
-                        ++level;
-                        return (p is ModelItemCollection);
-
-                    case 2:
-                        ++level;
-                        result = (typeof(Flowchart).IsAssignableFrom(p.ItemType));
-                        return result;
-
-                    default:
-                        return false;
-                }
-            };
-
-            ModelItem container = item.GetParentEnumerator(isInFlowchartPredicate).LastOrDefault();
-
-            if (result)
-            {
-                flowchart = container;
-                flowStep = flowStepContainer;
-            }
-
-            return result;
-        }
-
-        public static bool IsMessagingActivity(this ModelItem item)
-        {
-            if (null == item)
-            {
-                throw FxTrace.Exception.ArgumentNull("item");
-            }
-
-            bool result =
-                item.IsAssignableFrom<Receive>() ||
-                item.IsAssignableFrom<Send>() ||
-                item.IsAssignableFrom<ReceiveReply>() ||
-                item.IsAssignableFrom<SendReply>();
-
-            return result;
-        }
-
-        public static string GenerateUniqueVariableNameForContext(DependencyObject context, string prefix)
-        {
-            if (null == context)
-            {
-                throw FxTrace.Exception.ArgumentNull("context");
-            }
-
-            var viewElement = context as WorkflowViewElement;
-            if (null == viewElement)
-            {
-                var msg = StringResourceDictionary.Instance.GetString("activityFactoryWrongTarget");
-                throw FxTrace.Exception.Argument("target", msg);
-            }
-
-            string name;
-            var scope = VariableHelper.FindCommonVariableScope(viewElement.ModelItem, viewElement.ModelItem);
-            if (null == scope)
-            {
-                name = string.Format(CultureInfo.CurrentUICulture, "{0}{1}", prefix, 1);
-            }
-            else
-            {
-                name = scope.GetVariableCollection().CreateUniqueVariableName(prefix, 1);
-            }
-            return name;
-
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityXRefPropertyEditor.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/ActivityXRefPropertyEditor.cs
deleted file mode 100644 (file)
index 8ff8705..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Presentation
-{
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Core.Presentation.Themes;
-
-    sealed class ActivityXRefPropertyEditor : PropertyValueEditor 
-    {
-        public ActivityXRefPropertyEditor()
-        {
-            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("ActivityXRef_InlineEditorTemplate");
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/ArgumentCollectionPropertyEditor.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/ArgumentCollectionPropertyEditor.cs
deleted file mode 100644 (file)
index ef06ba7..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Presentation
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Text;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.Internal.PropertyEditing.Model;
-    using System.Activities.Core.Presentation.Themes;
-    using System.Windows;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.Model;
-    using System.Collections.ObjectModel;
-    using System.Windows.Controls;
-
-    sealed class ArgumentCollectionPropertyEditor : DialogPropertyValueEditor 
-    {
-        public ArgumentCollectionPropertyEditor()
-        {
-            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("ArgumentCollection_InlineTemplate");
-        }
-
-        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
-        {
-            ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter =
-                new ModelPropertyEntryToOwnerActivityConverter();
-
-            ModelItem activityModelItem =
-                (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
-
-            ModelItem parentModelItem =
-                (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), true, null);
-
-            EditingContext context = ((IModelTreeItem)activityModelItem).ModelTreeManager.Context;
-
-            var inputData = parentModelItem.Properties[propertyValue.ParentProperty.PropertyName].Collection;            
-
-            DynamicArgumentDesignerOptions options = new DynamicArgumentDesignerOptions
-            { 
-                Title = propertyValue.ParentProperty.DisplayName, 
-            };
-
-            using (EditingScope scope = context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(StringResourceDictionary.Instance.GetString("InvokeMethodParameterEditing"), true))
-            {
-                if (DynamicArgumentDialog.ShowDialog(activityModelItem, inputData, context, activityModelItem.View, options))
-                {
-                    scope.Complete();
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesigner.xaml.cs
deleted file mode 100644 (file)
index 9c989f0..0000000
+++ /dev/null
@@ -1,860 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Presentation
-{
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.Hosting;
-    using System.Runtime;
-    using System.Collections;
-    using System.Collections.ObjectModel;
-    using System.Collections.Generic;
-    using System.Collections.Specialized;
-    using System.ComponentModel;
-    using System.Linq;
-    using System.Globalization;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Data;
-    using System.Windows.Input;
-    using System.Windows.Threading;
-    using System.Reflection;
-
-    internal sealed partial class DynamicArgumentDesigner : UserControl
-    {
-        public static readonly DependencyProperty ContextProperty =
-            DependencyProperty.Register("Context",
-            typeof(EditingContext),
-            typeof(DynamicArgumentDesigner));
-
-        public static readonly DependencyProperty OwnerActivityProperty =
-           DependencyProperty.Register("OwnerActivity",
-           typeof(ModelItem),
-           typeof(DynamicArgumentDesigner));
-
-        public static readonly DependencyProperty IsDirectionReadOnlyProperty =
-            DependencyProperty.Register("IsDirectionReadOnly",
-            typeof(bool),
-            typeof(DynamicArgumentDesigner),
-            new UIPropertyMetadata(true, OnIsDirectionReadOnlyChanged));
-
-        public static readonly DependencyProperty DynamicArgumentsProperty =
-            DependencyProperty.Register("DynamicArguments",
-            typeof(ObservableCollection<DynamicArgumentWrapperObject>),
-            typeof(DynamicArgumentDesigner),
-            new PropertyMetadata(new ObservableCollection<DynamicArgumentWrapperObject>()));
-
-        public static readonly DependencyProperty IsDictionaryProperty =
-            DependencyProperty.Register("IsDictionary",
-            typeof(bool?),
-            typeof(DynamicArgumentDesigner),
-            new PropertyMetadata(false));
-
-        public static readonly DependencyProperty UnderlyingArgumentTypeProperty =
-            DependencyProperty.Register("UnderlyingArgumentType",
-            typeof(Type),
-            typeof(DynamicArgumentDesigner),
-            new PropertyMetadata(typeof(Argument)));
-
-        public static readonly RoutedCommand CreateDynamicArgumentCommand   = new RoutedCommand("CreateDynamicArgumentCommand", typeof(DynamicArgumentDesigner));
-        public static readonly RoutedCommand MoveUpArgumentCommand          = new RoutedCommand("MoveUpArgumentCommand", typeof(DynamicArgumentDesigner));
-        public static readonly RoutedCommand MoveDownArgumentCommand        = new RoutedCommand("MoveDownArgumentCommand", typeof(DynamicArgumentDesigner));
-        public static readonly RoutedCommand DeleteArgumentCommand          = new RoutedCommand("DeleteArgumentCommand", typeof(DynamicArgumentDesigner));
-        public const string DefaultArgumentPrefix = "Argument";
-
-        SubscribeContextCallback<ReadOnlyState> onReadOnlyStateChangedCallback;
-
-        static readonly Type InArgumentType = typeof(InArgument);
-        static readonly Type OutArgumentType = typeof(OutArgument);
-        static readonly Type InOutArgumentType = typeof(InOutArgument);
-        static readonly Type ArgumentType = typeof(Argument);
-
-        const int NameColumn = 0;
-        const int DirectionColumn = 1;
-        const int ArgumentTypeColumn = 2;
-        const int ExpressionColumn = 3;
-
-        bool isReadOnly;
-        bool hideDirection;
-        string argumentPrefix = DefaultArgumentPrefix;
-        string hintText;
-        DataGridHelper dgHelper;
-        ContextItemManager contextItemManager;        
-
-        public DynamicArgumentDesigner()
-        {
-            InitializeComponent();
-
-            this.dgHelper = new DataGridHelper(this.WPF_DataGrid, this);
-            this.dgHelper.AddNewRowCommand = DynamicArgumentDesigner.CreateDynamicArgumentCommand;
-            this.HintText = null;
-
-            this.WPF_DataGrid.LoadingRow += this.DataGrid_Standard_LoadingRow;
-
-            this.Loaded += (sender, e) =>
-            {
-                OnReadOnlyStateChanged(new ReadOnlyState());
-                this.ContextItemManager.Subscribe<ReadOnlyState>(this.OnReadOnlyStateChangedCallback);
-                this.OnDynamicArgumentsLoaded();
-                this.OnUnderlyingArgumentTypeChanged();
-            };
-            this.Unloaded += (sender, e) =>
-            {
-                this.ContextItemManager.Unsubscribe<ReadOnlyState>(this.OnReadOnlyStateChangedCallback);
-            };
-
-            DynamicArgumentWrapperObject.Editor = this;
-        }
-
-        ContextItemManager ContextItemManager
-        {
-            get
-            {
-                if (this.contextItemManager == null)
-                {
-                    this.contextItemManager = this.OwnerActivity.GetEditingContext().Items;
-                }
-                return this.contextItemManager;
-            }
-        }
-
-        void OnReadOnlyStateChanged(ReadOnlyState state)
-        {
-            UpdateChildrenElementStatus();
-        }
-
-        void UpdateChildrenElementStatus()
-        {
-            this.isReadOnly = this.ContextItemManager.GetValue<ReadOnlyState>().IsReadOnly || this.DynamicArguments == null;
-
-            if (this.isReadOnly)
-            {
-                this.WPF_DataGrid.IsReadOnly = true;
-                this.ButtonMovDown.IsEnabled = false;
-                this.ButtonMovUp.IsEnabled = false;
-                this.ButtonDelete.IsEnabled = false;
-            }
-        }
-
-        void OnDataGridSelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            if (this.isReadOnly 
-                || this.WPF_DataGrid.SelectedItems == null
-                || this.WPF_DataGrid.SelectedItems.Count == 0)
-            {
-                this.ButtonMovUp.IsEnabled   = false;
-                this.ButtonMovDown.IsEnabled = false;
-                this.ButtonDelete.IsEnabled  = false;
-                return;
-            }
-
-            // delete button
-            this.ButtonDelete.IsEnabled = true;
-            
-            // up/down button.
-            if (this.WPF_DataGrid.SelectedItems.Count == 1)
-            {
-                bool upHadFocus = ButtonMovUp.IsFocused;
-                bool downHadFocus = ButtonMovDown.IsFocused;
-                this.ButtonMovUp.IsEnabled = this.WPF_DataGrid.SelectedIndex > 0;
-                this.ButtonMovDown.IsEnabled = this.WPF_DataGrid.SelectedIndex < this.DynamicArguments.Count - 1;
-                if (!this.ButtonMovDown.IsEnabled && downHadFocus)
-                {
-                    this.ButtonMovUp.Focus();
-                }
-                if (!this.ButtonMovUp.IsEnabled && upHadFocus)
-                {
-                    this.ButtonMovDown.Focus();
-                }
-            }
-            else
-            {
-                this.ButtonMovUp.IsEnabled = this.ButtonMovDown.IsEnabled = false;
-            }
-        }
-
-        // The DataGrid does not bubble up KeyDown event and we expect the upper window to be closed when ESC key is down.
-        // Thus we added an event handler in DataGrid to handle ESC key and closes the uppper window.
-        void OnDataGridRowKeyDown(object sender, KeyEventArgs args)
-        {
-            DataGridRow row = (DataGridRow)sender;
-            if (args.Key == Key.Escape && !row.IsEditing && this.ParentDialog != null)
-            {
-                this.ParentDialog.CloseDialog(false);
-            }
-        }        
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-            this.Unloaded += this.OnDynamicArgumentDesignerUnloaded;
-        }
-
-        SubscribeContextCallback<ReadOnlyState> OnReadOnlyStateChangedCallback
-        {
-            get
-            {
-                if (onReadOnlyStateChangedCallback == null)
-                {
-                    onReadOnlyStateChangedCallback = new SubscribeContextCallback<ReadOnlyState>(OnReadOnlyStateChanged);
-                }
-                return onReadOnlyStateChangedCallback;
-            }
-        }
-
-        void OnDynamicArgumentDesignerUnloaded(object sender, RoutedEventArgs e)
-        {
-            this.WPF_DataGrid.LoadingRow -= this.DataGrid_Standard_LoadingRow;
-            this.Unloaded -= this.OnDynamicArgumentDesignerUnloaded;
-        }
-
-        public ObservableCollection<DynamicArgumentWrapperObject> DynamicArguments
-        {
-            get
-            {
-                return (ObservableCollection<DynamicArgumentWrapperObject>)GetValue(DynamicArgumentsProperty);
-            }
-            set
-            {
-                SetValue(DynamicArgumentsProperty, value);
-                if (value != null)
-                {
-                    this.WPF_DataGrid.ItemsSource = value;
-                }
-            }
-        }
-
-        [Fx.Tag.KnownXamlExternal]
-        public ModelItem OwnerActivity
-        {
-            get { return (ModelItem)GetValue(OwnerActivityProperty); }
-            set { SetValue(OwnerActivityProperty, value); }
-        }
-
-        [Fx.Tag.KnownXamlExternal]
-        public EditingContext Context
-        {
-            get { return (EditingContext)GetValue(ContextProperty); }
-            set { SetValue(ContextProperty, value); }
-        }
-
-        public bool IsDirectionReadOnly
-        {
-            get { return (bool)GetValue(IsDirectionReadOnlyProperty); }
-            set { SetValue(IsDirectionReadOnlyProperty, value); }
-        }
-
-        public bool HideDirection
-        {
-            get
-            {
-                return this.hideDirection;
-            }
-            set
-            {
-                this.hideDirection = value;
-                if (this.hideDirection)
-                {
-                    this.WPF_DataGrid.Columns[DynamicArgumentDesigner.DirectionColumn].Visibility = Visibility.Hidden;
-                }
-                else
-                {
-                    this.WPF_DataGrid.Columns[DynamicArgumentDesigner.DirectionColumn].Visibility = Visibility.Visible;
-                }
-            }
-        }
-
-        public string ArgumentPrefix
-        {
-            get
-            {
-                return this.argumentPrefix;
-            }
-            set
-            {
-                this.argumentPrefix = value;
-            }
-        }
-
-        public string HintText
-        {
-            get
-            {
-                if (this.hintText != null)
-                {
-                    return this.hintText;
-                }
-                else
-                {
-                    return (string)this.FindResource("addDynamicArgumentNewRowLabel");
-                }
-            }
-            set
-            {
-                this.hintText = value;
-                if (hintText == null)
-                {
-                    dgHelper.AddNewRowContent = (string)this.FindResource("addDynamicArgumentNewRowLabel");
-                }
-                else
-                {
-                    dgHelper.AddNewRowContent = hintText;
-                }
-            }
-        }
-
-        public WorkflowElementDialog ParentDialog
-        {
-            get;
-            set;
-        }
-
-        static void OnIsDirectionReadOnlyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
-        {
-            ((DynamicArgumentDesigner)dependencyObject).OnIsDirectionReadOnlyChanged();
-        }
-
-        void OnIsDirectionReadOnlyChanged()
-        {
-            if (!this.IsDirectionReadOnly)
-            {
-                DataGridTemplateColumn directionCol = this.WPF_DataGrid.Columns[1] as DataGridTemplateColumn;
-                directionCol.CellEditingTemplate = (DataTemplate)this.WPF_DataGrid.FindResource("argumentDirectionEditingTemplate");
-            }
-        }
-
-        internal Type UnderlyingArgumentType
-        {
-            get
-            {
-                return (Type)GetValue(UnderlyingArgumentTypeProperty);
-            }
-            set
-            {
-                if (!typeof(Argument).IsAssignableFrom(value))
-                {
-                    ErrorReporting.ShowErrorMessage(SR.NonSupportedDynamicArgumentType);
-                }
-                else
-                {
-                    SetValue(UnderlyingArgumentTypeProperty, value);
-                    OnUnderlyingArgumentTypeChanged();
-                }
-            }
-        }
-
-        void OnUnderlyingArgumentTypeChanged()
-        {
-            Type currentArgumentType = this.UnderlyingArgumentType;
-
-            if (currentArgumentType != null && (OutArgumentType.IsAssignableFrom(currentArgumentType) || InOutArgumentType.IsAssignableFrom(currentArgumentType)))
-            {
-                this.WPF_DataGrid.Columns[DynamicArgumentDesigner.ExpressionColumn].Header = (string)this.FindResource("assignToHeader");
-            }
-            else
-            {
-                this.WPF_DataGrid.Columns[DynamicArgumentDesigner.ExpressionColumn].Header = (string)this.FindResource("valueHeader");
-            }
-        }
-
-        internal bool? IsDictionary
-        {
-            get
-            {
-                return (bool?)GetValue(IsDictionaryProperty);
-            }
-            set
-            {
-                SetValue(IsDictionaryProperty, value);
-            }
-        }
-
-        internal static ObservableCollection<DynamicArgumentWrapperObject> ModelItemToWrapperCollection(ModelItem model, out bool isDictionary, out Type underlyingArgumentType)
-        {
-            string errorMessage = string.Empty;
-            underlyingArgumentType = null;
-            isDictionary = false;
-            if (model is ModelItemCollection)
-            {
-                underlyingArgumentType = model.GetCurrentValue().GetType().GetGenericArguments()[0];
-                if (!typeof(Argument).IsAssignableFrom(underlyingArgumentType))
-                {
-                    errorMessage = SR.NonSupportedDynamicArgumentType;
-                }
-            }
-            else if (model is ModelItemDictionary)
-            {
-                Type underlyingKeyType = model.GetCurrentValue().GetType().GetGenericArguments()[0];
-                underlyingArgumentType = model.GetCurrentValue().GetType().GetGenericArguments()[1];
-                if (!typeof(Argument).IsAssignableFrom(underlyingArgumentType))
-                {
-                    errorMessage = SR.NonSupportedDynamicArgumentType;
-                }
-                if (underlyingKeyType != typeof(string))
-                {
-                    errorMessage += SR.NonSupportedDynamicArgumentKeyType;
-                }
-                isDictionary = true;
-            }
-            else
-            {
-                errorMessage = SR.NonSupportedModelItemCollectionOrDictionary;
-            }
-            if (!string.IsNullOrEmpty(errorMessage))
-            {
-                ErrorReporting.ShowErrorMessage(SR.NonSupportedModelItemCollectionOrDictionary);
-                return null;
-            }
-            if (isDictionary)
-            {
-                ObservableCollection<DynamicArgumentWrapperObject> wrappers = new ObservableCollection<DynamicArgumentWrapperObject>();
-                foreach (ModelItem item in GetArgumentCollection(model))
-                {
-                    wrappers.Add(new DynamicArgumentWrapperObject(item.Properties["Key"].ComputedValue as string, item.Properties["Value"].Value));
-                }
-                return wrappers;
-            }
-            else
-            {
-                ObservableCollection<DynamicArgumentWrapperObject> wrappers = new ObservableCollection<DynamicArgumentWrapperObject>();
-                foreach (ModelItem item in GetArgumentCollection(model))
-                {
-                    wrappers.Add(new DynamicArgumentWrapperObject(null, item));
-                }
-                return wrappers;
-            }
-        }
-
-        internal static void WrapperCollectionToModelItem(ObservableCollection<DynamicArgumentWrapperObject> wrappers, ModelItem data, bool isDictionary, Type underlyingArgumentType)
-        {
-            ModelItemCollection collection = GetArgumentCollection(data);
-            using (ModelEditingScope change = collection.BeginEdit(SR.UpdateDynamicArgumentsDescription))
-            {
-                if (isDictionary)
-                {
-                    collection.Clear();
-                    Type dictionaryEntryType = typeof(ModelItemKeyValuePair<,>).MakeGenericType(new Type[] { typeof(string), underlyingArgumentType });
-                    foreach (DynamicArgumentWrapperObject wrapper in wrappers)
-                    {
-                        Argument argument = Argument.Create(wrapper.Type, wrapper.Direction);
-                        object mutableKVPair = Activator.CreateInstance(dictionaryEntryType, new object[] { wrapper.Name, argument });
-                        ModelItem argumentKVPair = collection.Add(mutableKVPair);
-                        if (wrapper.Expression != null)
-                        {
-                            argumentKVPair.Properties["Value"].Value.Properties["Expression"].SetValue(wrapper.Expression.GetCurrentValue());
-                        }
-                    }
-                }
-                else
-                {
-                    collection.Clear();
-                    foreach (DynamicArgumentWrapperObject wrapper in wrappers)
-                    {
-                        Argument argument = Argument.Create(wrapper.Type, wrapper.Direction);
-                        ModelItem argumentItem = collection.Add(argument);
-                        if (wrapper.Expression != null)
-                        {
-                            argumentItem.Properties["Expression"].SetValue(wrapper.Expression.GetCurrentValue());
-                        }
-                    }
-                }
-
-                change.Complete();
-            }
-        }
-
-        static ModelItemCollection GetArgumentCollection(ModelItem data)
-        {
-            if (data is ModelItemCollection)
-            {
-                return (data as ModelItemCollection);
-            }
-            else if (data is ModelItemDictionary)
-            {
-                return (data as ModelItemDictionary).Properties["ItemsCollection"].Collection;
-            }
-            else
-            {
-                ErrorReporting.ShowErrorMessage(SR.NonSupportedModelItemCollectionOrDictionary);
-                return null;
-            }
-        }
-
-        void OnDynamicArgumentsLoaded()
-        {
-            Fx.Assert(this.Context != null, "EditingContext cannot be null");
-            Fx.Assert(this.IsDictionary != null, "IsDictionary is not set");
-            Fx.Assert(this.UnderlyingArgumentType != null, "UnderlyingArgumentType is not set");            
-            if (!(this.IsDictionary.Value))
-            {
-                this.WPF_DataGrid.Columns[DynamicArgumentDesigner.NameColumn].Visibility = Visibility.Hidden;
-            }
-
-            if (null != this.DynamicArguments)
-            {
-                if (this.UnderlyingArgumentType == ArgumentType)
-                {
-                    this.IsDirectionReadOnly = false;
-                }
-
-                if (this.UnderlyingArgumentType.IsGenericType)
-                {
-                    Type[] innerArgumentTypes = this.UnderlyingArgumentType.GetGenericArguments();
-                    if (innerArgumentTypes.Length > 0)
-                    {
-                        Type innerArgumentType = innerArgumentTypes[0];
-                        this.WPF_DataGrid.Columns[DynamicArgumentDesigner.ArgumentTypeColumn].IsReadOnly = !innerArgumentType.IsGenericParameter;
-                    }
-                }
-            }
-
-            this.WPF_DataGrid.ItemsSource = this.DynamicArguments;
-
-            UpdateChildrenElementStatus();
-        }
-
-        internal void ValidateEntry(DynamicArgumentWrapperObject entry, DependencyPropertyChangedEventArgs e)
-        {
-            if (e.Property == DynamicArgumentWrapperObject.NameProperty)
-            {
-                if (this.IsDictionary.Value)
-                {
-                    DataGridRow row = entry.Row;
-                    string newName = e.NewValue as string;
-
-                    bool duplicates =
-                        this.DynamicArguments.Any<DynamicArgumentWrapperObject>(
-                            p => string.Equals(p.Name, newName) && p != entry);
-                    if (duplicates || string.IsNullOrEmpty(newName))
-                    {
-                        entry.Name = e.OldValue as string;
-                        if (duplicates)
-                        {
-                            ErrorReporting.ShowErrorMessage(string.Format(CultureInfo.CurrentCulture, SR.DuplicateArgumentName, newName));
-                        }
-                        else
-                        {
-                            ErrorReporting.ShowErrorMessage(string.Format(CultureInfo.CurrentCulture, SR.EmptyArgumentName));
-                        }
-                    }
-                    entry.IsValidating = false;
-                }
-            }
-            else
-            {
-                if (e.Property == DynamicArgumentWrapperObject.DirectionProperty)
-                {
-                    entry.UseLocationExpression = (entry.Direction != ArgumentDirection.In);
-                }                
-                if ((e.Property != DynamicArgumentWrapperObject.ExpressionProperty) && (entry.Expression != null))
-                {
-                    ActivityWithResult expression = entry.Expression.GetCurrentValue() as ActivityWithResult;                    
-                    if (expression != null)
-                    {
-                        ActivityWithResult newExpression;
-                        if (ExpressionHelper.TryMorphExpression(expression, entry.UseLocationExpression, entry.Type, this.Context, out newExpression))
-                        {
-                            entry.Expression = (this.OwnerActivity as IModelTreeItem).ModelTreeManager.WrapAsModelItem(newExpression);
-                        }
-                        else
-                        {
-                            //[....] 
-
-                            entry.Expression = null;
-                        }
-                    }
-                }
-                entry.IsValidating = false;
-            }
-        }
-
-        internal string GetDefaultName()
-        {
-            if (!this.IsDictionary.Value)
-            {
-                return string.Empty;
-            }
-            else
-            {
-                var defaultNames = this.DynamicArguments
-                        .Select<DynamicArgumentWrapperObject, string>(p => (string)p.Name)
-                        .Where<string>(p => 0 == string.Compare(p, 0, this.ArgumentPrefix, 0, this.ArgumentPrefix.Length, StringComparison.Ordinal))
-                        .Select(p => p.Substring(this.ArgumentPrefix.Length));
-
-                int maxNum = 1;
-                foreach (string numberPart in defaultNames)
-                {
-                    int current;
-                    if (int.TryParse(numberPart, out current))
-                    {
-                        if (current >= maxNum)
-                        {
-                            maxNum = current + 1;
-                        }
-                    }
-                }
-                return string.Format(CultureInfo.InvariantCulture, "{0}{1}", this.ArgumentPrefix, maxNum);
-            }
-
-        }
-
-        internal Type GetDefaultType()
-        {
-            Type[] genericArguments = this.UnderlyingArgumentType.GetGenericArguments();
-            if (genericArguments.Length == 0)
-            {
-                return typeof(string);
-            }
-            else
-            {
-                return genericArguments[0];
-            }
-        }
-
-        internal ArgumentDirection GetDefaultDirection()
-        {
-            if (this.UnderlyingArgumentType == ArgumentType)
-            {
-                return ArgumentDirection.In;
-            }
-
-            if (InArgumentType.IsAssignableFrom(this.UnderlyingArgumentType))
-            {
-                return ArgumentDirection.In;
-            }
-
-            if (OutArgumentType.IsAssignableFrom(this.UnderlyingArgumentType))
-            {
-                return ArgumentDirection.Out;
-            }
-
-            Fx.Assert(InOutArgumentType.IsAssignableFrom(this.UnderlyingArgumentType), "UnderlyingArgumentType should be of type OutArgumentType");
-            return ArgumentDirection.InOut;
-        }
-
-        //Hook LoadingRow event to set different row template (<Click here to add new item>) for new place holder
-        void DataGrid_Standard_LoadingRow(object sender, DataGridRowEventArgs e)
-        {
-            if (e.Row.Item != CollectionView.NewItemPlaceholder)
-            {
-                DynamicArgumentWrapperObject wrapper = e.Row.Item as DynamicArgumentWrapperObject;
-                wrapper.Row = e.Row;
-            }
-        }
-
-        void OnCreateDynamicArgumentExecute(object sender, ExecutedRoutedEventArgs e)
-        {
-            DynamicArgumentWrapperObject wrapper = new DynamicArgumentWrapperObject();
-            this.DynamicArguments.Add(wrapper);
-            this.dgHelper.BeginRowEdit(wrapper);
-        }
-
-        void OnMoveUpArgumentExecute(object sender, RoutedEventArgs e)
-        {
-            if (null != this.WPF_DataGrid.SelectedItem)
-            {
-                int selectedArgumentIndex = this.WPF_DataGrid.SelectedIndex;
-                if (selectedArgumentIndex > 0)
-                {
-                    this.DynamicArguments.Move(selectedArgumentIndex, selectedArgumentIndex - 1);
-                }
-                this.OnDataGridSelectionChanged(this, null);
-            }
-        }
-
-        void OnMoveDownArgumentExecute(object sender, RoutedEventArgs e)
-        {
-            if (null != this.WPF_DataGrid.SelectedItem)
-            {
-                int selectedArgumentIndex = this.WPF_DataGrid.SelectedIndex;
-                if (selectedArgumentIndex < this.DynamicArguments.Count - 1)
-                {
-                    this.DynamicArguments.Move(selectedArgumentIndex, selectedArgumentIndex + 1);
-                }
-                this.OnDataGridSelectionChanged(this, null);
-            }
-        }
-
-        void OnDeleteArgumentExecute(object sender, RoutedEventArgs e)
-        {
-            DataGridHelper.OnDeleteSelectedItems(this.WPF_DataGrid);
-        }
-
-        void OnExpressionTextBoxLoaded(object sender, RoutedEventArgs args)
-        {
-            ExpressionTextBox etb = (ExpressionTextBox)sender;
-            etb.IsIndependentExpression = true;
-            if (!etb.IsReadOnly)
-            {
-                DataGridHelper.OnEditingControlLoaded(sender, args);
-            }
-        }
-
-        void OnExpressionTextBoxUnloaded(object sender, RoutedEventArgs args)
-        {
-            ExpressionTextBox etb = (ExpressionTextBox)sender;
-            if (!etb.IsReadOnly)
-            {
-                DataGridHelper.OnEditingControlUnloaded(sender, args);
-            }
-        }
-
-        void OnEditingControlLoaded(object sender, RoutedEventArgs args)
-        {
-            DataGridHelper.OnEditingControlLoaded(sender, args);
-        }
-
-        void OnEditingControlUnloaded(object sender, RoutedEventArgs args)
-        {
-            DataGridHelper.OnEditingControlUnloaded(sender, args);
-        }
-    }
-
-    sealed class DynamicArgumentWrapperObject : DependencyObject
-    {
-        public static readonly DependencyProperty ModelItemProperty = DependencyProperty.Register(
-            "ModelItem",
-            typeof(ModelItem),
-            typeof(DynamicArgumentWrapperObject),
-            new UIPropertyMetadata(null));
-
-        public static readonly DependencyProperty NameProperty = DependencyProperty.Register(
-            "Name",
-            typeof(string),
-            typeof(DynamicArgumentWrapperObject),
-            new UIPropertyMetadata(string.Empty, OnArgumentPropertyChanged));
-
-        public static readonly DependencyProperty ArgumentTypeProperty = DependencyProperty.Register(
-            "Type",
-            typeof(Type),
-            typeof(DynamicArgumentWrapperObject),
-            new UIPropertyMetadata(typeof(string), OnArgumentPropertyChanged));
-
-        public static readonly DependencyProperty DirectionProperty = DependencyProperty.Register(
-            "Direction",
-            typeof(ArgumentDirection),
-            typeof(DynamicArgumentWrapperObject),
-            new UIPropertyMetadata(ArgumentDirection.In, OnArgumentPropertyChanged));
-
-        public static readonly DependencyProperty ExpressionProperty =
-            DependencyProperty.Register(
-            "Expression",
-            typeof(ModelItem),
-            typeof(DynamicArgumentWrapperObject),
-            new UIPropertyMetadata(OnArgumentPropertyChanged));
-
-        public static readonly DependencyProperty UseLocationExpressionProperty =
-            DependencyProperty.Register(
-            "UseLocationExpression",
-            typeof(bool),
-            typeof(DynamicArgumentWrapperObject));
-
-        public event PropertyChangedEventHandler PropertyChanged;
-
-        bool isInitializing;
-
-        const string ExpressionPropertyName = "Expression";
-
-        public string Name
-        {
-            get { return (string)GetValue(NameProperty); }
-            set { SetValue(NameProperty, value); }
-        }
-
-        public Type Type
-        {
-            get { return (Type)GetValue(ArgumentTypeProperty); }
-            set { SetValue(ArgumentTypeProperty, value); }
-        }
-
-        public ArgumentDirection Direction
-        {
-            get { return (ArgumentDirection)GetValue(DirectionProperty); }
-            set { SetValue(DirectionProperty, value); }
-        }
-
-        public ModelItem Expression
-        {
-            get { return (ModelItem)GetValue(ExpressionProperty); }
-            set { SetValue(ExpressionProperty, value); }
-        }
-
-        public bool UseLocationExpression
-        {
-            get { return (bool)GetValue(UseLocationExpressionProperty); }
-            set { SetValue(UseLocationExpressionProperty, value); }
-        }
-
-        internal bool IsValidating
-        {
-            get;
-            set;
-        }
-
-        internal DataGridRow Row
-        {
-            get;
-            set;
-        }
-
-        public static DynamicArgumentDesigner Editor
-        {
-            get;
-            set;
-        }
-
-        public DynamicArgumentWrapperObject()
-        {
-            this.isInitializing = true;
-            this.IsValidating = false;
-            this.Name = DynamicArgumentWrapperObject.Editor.GetDefaultName();
-            this.Type = DynamicArgumentWrapperObject.Editor.GetDefaultType();
-            this.Direction = DynamicArgumentWrapperObject.Editor.GetDefaultDirection();
-            this.UseLocationExpression = (this.Direction != ArgumentDirection.In);
-            this.isInitializing = false;
-        }
-
-        public DynamicArgumentWrapperObject(string argumentName, ModelItem argumentItem)
-        {
-            Fx.Assert(argumentItem != null, "argumentItem canot be null");
-            this.isInitializing = true;
-            this.IsValidating = false;            
-            Argument argument = (Argument)argumentItem.GetCurrentValue();
-            this.Name = argumentName;
-            this.Direction = argument.Direction;
-            this.UseLocationExpression = (this.Direction != ArgumentDirection.In);
-            this.Type = argument.ArgumentType;
-            this.Expression = argumentItem.Properties[ExpressionPropertyName].Value;
-            this.isInitializing = false;
-        }
-
-        static void OnArgumentPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
-        {
-            DynamicArgumentWrapperObject wrapper = (DynamicArgumentWrapperObject)sender;
-            if (!wrapper.IsValidating && !wrapper.isInitializing)
-            {
-                wrapper.OnArgumentPropertyChanged(e);
-            }
-        }
-
-        void OnArgumentPropertyChanged(DependencyPropertyChangedEventArgs e)
-        {
-            Fx.Assert(DynamicArgumentWrapperObject.Editor != null, "collection editor is null!");
-            this.IsValidating = true;
-            DynamicArgumentWrapperObject.Editor.ValidateEntry(this, e);
-
-            if (this.PropertyChanged != null)
-            {
-                this.PropertyChanged(this, new PropertyChangedEventArgs(e.Property.Name));
-            }
-        }
-
-        // For screen reader to read the DataGrid row.
-        public override string ToString()
-        {
-            return string.IsNullOrEmpty(this.Name) ? "Parameter" : this.Name;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesignerOptions.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDesignerOptions.cs
deleted file mode 100644 (file)
index 7b25ae3..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Presentation
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Linq;
-    using System.Text;
-
-    public class DynamicArgumentDesignerOptions
-    {
-        string argumentPrefix = DynamicArgumentDesigner.DefaultArgumentPrefix;
-        string hintText;
-
-        public string Title
-        {
-            get;
-            set;
-        }
-
-        public string ArgumentPrefix
-        {
-            get { return this.argumentPrefix; }
-            set { this.argumentPrefix = value; }
-        }
-
-        internal bool HideDirection
-        {
-            get;
-            set;
-        }
-
-        internal string HintText
-        {
-            get { return this.hintText; }
-            set { this.hintText = value; }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDialog.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/DynamicArgumentDialog.cs
deleted file mode 100644 (file)
index fe8b075..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.Activities.Presentation
-{
-    using System.Activities.Presentation.Model;
-    using System.Windows;
-    using System.Collections;
-    using System.Collections.ObjectModel;
-    using System.Collections.Generic;
-    using System.Runtime;
-
-    public sealed class DynamicArgumentDialog : WorkflowElementDialog
-    {
-        bool isDictionary;
-        Type underlyingArgumentType;
-        ModelItem data;
-
-        DynamicArgumentDialog(ModelItem activity, ModelItem data, EditingContext context, DependencyObject owner, DynamicArgumentDesignerOptions options)
-        {
-            this.MinHeight = 200;
-            this.MinWidth = 700;
-            this.WindowSizeToContent = SizeToContent.Manual;
-            this.ModelItem = activity;
-            this.Context = context;
-            this.HelpKeyword = HelpKeywords.DynamicArgumentDialog;
-            this.Owner = owner;
-            this.Title = options.Title;
-            this.data = data;
-            this.Content = new DynamicArgumentDesigner()
-            {
-                DynamicArguments = DynamicArgumentDesigner.ModelItemToWrapperCollection(data, out isDictionary, out underlyingArgumentType),
-                IsDictionary = isDictionary,
-                UnderlyingArgumentType = underlyingArgumentType,
-                Context = context,
-                OwnerActivity = activity,
-                HideDirection = options.HideDirection,
-                ArgumentPrefix = options.ArgumentPrefix,
-                HintText = options.HintText,
-                ParentDialog = this,
-            };
-        }
-
-        public static bool ShowDialog(ModelItem activity, ModelItem data, EditingContext context, DependencyObject owner, DynamicArgumentDesignerOptions options)
-        {
-            return new DynamicArgumentDialog(activity, data, context, owner, options).ShowOkCancel();
-        }
-
-        protected override void OnWorkflowElementDialogClosed(bool? dialogResult)
-        {
-            if (dialogResult.Value)
-            {
-                DynamicArgumentDesigner.WrapperCollectionToModelItem((this.Content as DynamicArgumentDesigner).DynamicArguments, data, isDictionary, underlyingArgumentType);
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionDesigner.xaml.cs
deleted file mode 100644 (file)
index 7b600c8..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Presentation
-{
-    using System;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Collections.ObjectModel;
-    using System.Collections.Specialized;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Linq;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Input;
-    using System.ComponentModel;
-    using System.Windows.Threading;
-    using System.Windows.Data;
-    using Microsoft.Activities.Presentation;
-
-    [Fx.Tag.XamlVisible(false)]
-    partial class TypeCollectionDesigner
-    {
-        public static readonly DependencyProperty ContextProperty = DependencyProperty.Register(
-            "Context",
-            typeof(EditingContext),
-            typeof(TypeCollectionDesigner),
-            new UIPropertyMetadata(null));
-
-        [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes",
-            Justification = "Type RoutedCommand is immutable.")]
-        public static readonly ICommand AddNewTypeCommand = new RoutedCommand("AddNewType", typeof(TypeCollectionDesigner));
-        public static readonly ICommand DeleteTypeCommand = new RoutedCommand("DeleteType", typeof(TypeCollectionDesigner));
-
-        DataGridHelper dgHelper;
-        ObservableCollection<TypeWrapper> wrapperCollection;
-
-        public TypeCollectionDesigner()
-        {
-            this.DefaultType = typeof(Object);
-            InitializeComponent();
-        }
-
-        // The collection of Type objects to display when type collection designer is opened.
-        internal IEnumerable<Type> InitialTypeCollection
-        {
-            set
-            {
-                this.wrapperCollection = new ObservableCollection<TypeWrapper>(value.Select(type => new TypeWrapper(type)));
-                this.typesDataGrid.ItemsSource = this.wrapperCollection;
-            }
-        }
-
-        // The collction of Type objects in the type collection designer when user clicks OK.
-        public IEnumerable<Type> UpdatedTypeCollection
-        {
-            get
-            {
-                return wrapperCollection.Where(wrapper => wrapper.Type != null).Select(wrapper => wrapper.Type);
-            }
-        }
-
-        public EditingContext Context
-        {
-            get { return (EditingContext)GetValue(ContextProperty); }
-            set { SetValue(ContextProperty, value); }
-        }
-
-        public bool AllowDuplicate
-        {
-            get;
-            set;
-        }
-
-        public Func<Type, bool> Filter
-        {
-            get;
-            set;
-        }
-
-        public Type DefaultType
-        {
-            get;
-            set;
-        }
-
-        internal WorkflowElementDialog ParentDialog
-        {
-            get;
-            set;
-        }
-
-        internal bool OnOK()
-        {   
-            if (!this.AllowDuplicate)
-            {
-                List<TypeWrapper> list = new List<TypeWrapper>();
-                foreach (TypeWrapper tw in this.wrapperCollection)
-                {
-                    if (tw.Type != null && list.Any<TypeWrapper>(entry => Type.Equals(entry.Type, tw.Type)))
-                    {
-                        ErrorReporting.ShowErrorMessage(string.Format(CultureInfo.CurrentCulture, (string)this.FindResource("duplicateEntryErrorMessage"), TypeNameHelper.GetDisplayName(tw.Type, true)));
-                        return false;
-                    }
-                    list.Add(tw);
-                }
-            }
-            return true;
-        }
-
-        // The DataGrid does not bubble up KeyDown event and we expect the upper window to be closed when ESC key is down.
-        // Thus we added an event handler in DataGrid to handle ESC key and closes the uppper window.
-        void OnTypesDataGridRowKeyDown(object sender, KeyEventArgs args)
-        {
-            DataGridRow row = (DataGridRow)sender;
-            if (args.Key == Key.Escape && !row.IsEditing && this.ParentDialog != null)
-            {
-                this.ParentDialog.CloseDialog(false);
-            }
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            this.dgHelper = new DataGridHelper(this.typesDataGrid, this);
-            this.dgHelper.AddNewRowContent = this.FindResource("addNewRowLabel");
-            this.dgHelper.AddNewRowCommand = AddNewTypeCommand;
-
-            base.OnInitialized(e);
-        }
-
-        void OnDataGridSelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            this.ButtonDelete.IsEnabled =
-                   (this.typesDataGrid.SelectedItems != null)
-                && (this.typesDataGrid.SelectedItems.Count != 0);
-        }
-
-        void OnAddTypeExecuted(object sender, ExecutedRoutedEventArgs e)
-        {   
-            var newEntry = new TypeWrapper(this.DefaultType);
-            this.wrapperCollection.Add(newEntry);
-            this.dgHelper.BeginRowEdit(newEntry);            
-            e.Handled = true;
-        }
-
-        void OnDeleteTypeExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            DataGridHelper.OnDeleteSelectedItems(this.typesDataGrid);
-        }
-
-        void OnEditingControlLoaded(object sender, RoutedEventArgs args)
-        {
-            DataGridHelper.OnEditingControlLoaded(sender, args);
-        }
-
-        void OnEditingControlUnloaded(object sender, RoutedEventArgs args)
-        {
-            DataGridHelper.OnEditingControlUnloaded(sender, args);
-        }
-
-        sealed class TypeWrapper : DependencyObject
-        {
-            public static readonly DependencyProperty TypeProperty =
-                DependencyProperty.Register("Type", typeof(Type), typeof(TypeWrapper));
-
-            //Default constructor is required by DataGrid to load NewItemPlaceHolder row and this constructor will never be called.
-            //Since we've already customized the new row template and hooked over creating new object event.
-            public TypeWrapper()
-            {
-                throw FxTrace.Exception.AsError(new NotSupportedException());
-            }
-
-            public TypeWrapper(Type type)
-            {
-                this.Type = type;
-            }
-
-            public Type Type
-            {
-                get { return (Type)GetValue(TypeProperty); }
-                set { SetValue(TypeProperty, value); }
-            }
-
-            // For screen reader to read the DataGrid row.
-            public override string ToString()
-            {
-                if (this.Type != null && !string.IsNullOrEmpty(this.Type.Name))
-                {
-                    return this.Type.Name;
-                }
-                return "null";
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionPropertyEditor.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/Activities/Presentation/TypeCollectionPropertyEditor.cs
deleted file mode 100644 (file)
index ef27e53..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.Activities.Presentation
-{
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.View;
-    using System.Windows;
-    using System.Runtime;
-    using System.Collections.Generic;
-    using System.Reflection;
-    using System.Diagnostics.CodeAnalysis;
-    using System.ComponentModel;
-    using System.Collections;
-
-    sealed class TypeCollectionPropertyEditor : DialogPropertyValueEditor 
-    {
-        public const string AllowDuplicate = "AllowDuplicate";
-
-        public const string Filter = "Filter";
-
-        public const string DefaultType = "DefaultType";
-
-        public TypeCollectionPropertyEditor()
-        {
-            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("TypeCollection_InlineTemplate");
-        }
-
-        internal static T GetOptionValueOrUseDefault<T>(IEnumerable attributes, string optionName, T defaultValue)
-        {
-            object optionValue;
-
-            if (EditorOptionAttribute.TryGetOptionValue(attributes, optionName, out optionValue))
-            {
-                return (T)optionValue;
-            }
-
-            return defaultValue;
-        }
-
-        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
-        {
-            ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = 
-                new ModelPropertyEntryToOwnerActivityConverter();
-
-            ModelItem activityModelItem = 
-                (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
-
-            ModelItem parentModelItem =
-                (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), true, null);
-
-            EditingContext context = ((IModelTreeItem)activityModelItem).ModelTreeManager.Context;
-
-            ModelItemCollection inputData = parentModelItem.Properties[propertyValue.ParentProperty.PropertyName].Collection;
-            IEnumerable<Type> rawInputData = inputData.GetCurrentValue() as IEnumerable<Type>;
-            Fx.Assert(rawInputData != null, "rawInputData is null or is not IEnumerable<Type>.");
-
-            ModelProperty editingProperty = activityModelItem.Properties[propertyValue.ParentProperty.PropertyName];
-            bool allowDuplication = GetOptionValueOrUseDefault(editingProperty.Attributes, TypeCollectionPropertyEditor.AllowDuplicate, true);
-            Func<Type, bool> filter = GetOptionValueOrUseDefault<Func<Type, bool>>(editingProperty.Attributes, TypeCollectionPropertyEditor.Filter, null);
-            Type defaultType = GetOptionValueOrUseDefault<Type>(editingProperty.Attributes, TypeCollectionPropertyEditor.DefaultType, typeof(Object));
-            EditorWindow editorWindow = new EditorWindow(activityModelItem, rawInputData, context, activityModelItem.View, allowDuplication, filter, defaultType);
-            if (editorWindow.ShowOkCancel())
-            {
-                using (var commitEditingScope = inputData.BeginEdit(System.Activities.Core.Presentation.SR.ChangeTypeCollectionEditingScopeDesc))
-                {
-                    inputData.Clear();
-                    foreach (Type i in ((TypeCollectionDesigner)editorWindow.Content).UpdatedTypeCollection)
-                    {
-                        inputData.Add(i);
-                    }
-                    commitEditingScope.Complete();
-                }
-            }
-        }
-
-        sealed class EditorWindow : WorkflowElementDialog
-        {
-            public EditorWindow(ModelItem activity, IEnumerable<Type> data, EditingContext context, DependencyObject owner, bool allowDuplicate, Func<Type, bool> filter, Type defaultType)
-            {
-                this.ModelItem = activity;
-                this.Context = context;
-                this.Owner = owner;
-                this.EnableMaximizeButton = false;
-                this.EnableMinimizeButton = false;
-                this.MinWidth = 450;
-                this.MinHeight = 260;
-                this.WindowResizeMode = ResizeMode.CanResize;
-                this.WindowSizeToContent = SizeToContent.Manual;
-                TypeCollectionDesigner content = new TypeCollectionDesigner()
-                {
-                    Context = context,
-                    InitialTypeCollection = data,
-                    AllowDuplicate = allowDuplicate,
-                    Filter = filter,
-                    DefaultType = defaultType,
-                    ParentDialog = this,
-                };
-                this.Title = (string)content.Resources["controlTitle"];
-                this.Content = content;
-                this.OnOk = content.OnOK;
-                this.HelpKeyword = HelpKeywords.TypeCollectionEditor;
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ActivityXRefConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ActivityXRefConverter.cs
deleted file mode 100644 (file)
index a848a23..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System;
-    using System.Globalization;
-    using System.Windows.Data;
-    using System.Activities.Presentation.Model;
-    using System.Activities;
-    using System.Activities.Core.Presentation;
-
-    sealed class ActivityXRefConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            if (!(targetType == typeof(string) || targetType == typeof(object)))
-            {
-                throw FxTrace.Exception.AsError(new NotSupportedException());
-            }
-            if (null == value)
-            {
-                throw FxTrace.Exception.AsError(new ArgumentNullException("value"));
-            }
-            ModelItem activity = value as ModelItem;
-            string displayName = value as string;
-            
-            string formatString = (parameter as string) ?? "{0}";
-
-            if (null != activity && typeof(Activity).IsAssignableFrom(activity.ItemType))
-            {
-                displayName = ((string)activity.Properties["DisplayName"].ComputedValue);
-            }
-
-            if (null == displayName)
-            {
-                displayName = "<null>";
-            }
-            else if (displayName.Length == 0)
-            {
-                displayName = "...";
-            }
-
-            return string.Format(CultureInfo.CurrentUICulture, formatString, displayName);
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotSupportedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingEditor.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingEditor.xaml.cs
deleted file mode 100644 (file)
index cdd606a..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Collections.Generic;
-    using System.Linq;
-    using System.ServiceModel;
-    using System.ServiceModel.Channels;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Activities.Presentation.Model;
-    using System.Configuration;
-    using System.ServiceModel.Configuration;
-    using System.Activities.Presentation;
-    
-    partial class BindingEditor
-    {
-        public static readonly DependencyProperty BindingProperty =
-            DependencyProperty.Register("Binding",
-            typeof(object),
-            typeof(BindingEditor),
-            new PropertyMetadata(OnBindingChanged));
-
-        List<BindingDescriptor> bindingElements = new List<BindingDescriptor>();
-
-        bool isInitializing;
-
-        public BindingEditor()
-        {
-            InitializeComponent();
-        }
-
-        public object Binding
-        {
-            get { return GetValue(BindingProperty); }
-            set { SetValue(BindingProperty, value); }
-        }
-
-        void LoadBindings()
-        {
-            try
-            {
-                this.bindingElements.Add(new BindingDescriptor { BindingName = (string)(this.TryFindResource("bindingEditorEmptyBindingLabel") ?? "none"), Value = null });
-                Configuration machineConfig = ConfigurationManager.OpenMachineConfiguration();              
-                ServiceModelSectionGroup section = ServiceModelSectionGroup.GetSectionGroup(machineConfig);
-                if (null != section && null != section.Bindings)
-                {
-                    this.bindingElements.AddRange(section.Bindings.BindingCollections
-                        .OrderBy(p => p.BindingName)
-                        .Select<BindingCollectionElement, BindingDescriptor>(p => new BindingDescriptor() { BindingName = p.BindingName, Value = p }));
-                }
-            }
-            catch (ConfigurationErrorsException err)
-            {
-                ErrorReporting.ShowErrorMessage(err.Message);
-            }
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-            this.isInitializing = true;
-            LoadBindings();
-            this.ItemsSource = this.bindingElements;
-            this.SelectedIndex = 0;
-            this.isInitializing = false;
-        }
-
-        protected override void OnSelectionChanged(SelectionChangedEventArgs e)
-        {
-            base.OnSelectionChanged(e);
-            if (!this.isInitializing)
-            {
-
-                BindingDescriptor entry = (BindingDescriptor)e.AddedItems[0];
-                if (null == entry.Value)
-                {
-                    Binding = null;
-                }
-                // try to avoid blowing away any binding that has been custom-tweaked in XAML.
-                else if (Binding == null || !(Binding is ModelItem) || !((ModelItem)Binding).ItemType.Equals(entry.Value.BindingType))
-                {
-                    Binding instance = (Binding)Activator.CreateInstance(entry.Value.BindingType);
-                    instance.Name = entry.BindingName;
-                    Binding = instance;
-                }
-            }
-        }
-
-        static void OnBindingChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
-        {
-            BindingEditor editor = (BindingEditor)sender;
-            object newValue = args.NewValue;
-
-            Type bindingType = null;
-            ModelItem item = newValue as ModelItem;
-            string bindingName = null;
-            if (item != null)
-            {
-                bindingType = item.ItemType;
-                bindingName = (string)item.Properties["Name"].ComputedValue;
-            }
-            else if (newValue != null)
-            {
-                bindingType = newValue.GetType();
-                if (typeof(Binding).IsAssignableFrom(bindingType))
-                {
-                    bindingName = ((Binding)newValue).Name;
-                }
-            }
-
-            // Make combo appear empty if the binding is not one of the ones known to us, e.g., has been custom-tweaked in XAML.
-            BindingDescriptor toSelect = null;
-            Func<BindingDescriptor, bool> where = p => null != p.Value && p.Value.BindingType == bindingType;
-            if (editor.bindingElements.Count(where) > 1)
-            {
-                toSelect = editor.bindingElements.Where(where).Where(p => string.Equals(p.BindingName, bindingName)).FirstOrDefault();
-            }
-            else
-            {
-                toSelect = editor.bindingElements.Where(where).FirstOrDefault();
-            }
-            //prevent OnSelectionChanged now - the binding is set directly to the object, no need to set again through event handler
-            editor.isInitializing = true;
-            if (null != toSelect)
-            {
-                editor.SelectedItem = toSelect;
-            }
-            else
-            {
-                editor.SelectedIndex = 0;
-            }
-            //allow selection changed events to be consumed again
-            editor.isInitializing = false;
-        }
-
-        sealed class BindingDescriptor 
-        {
-            public string BindingName
-            {
-                get;
-                internal set;
-            }
-
-            public BindingCollectionElement Value
-            {
-                get;
-                internal set;
-            }
-
-            public override string ToString()
-            {
-                return BindingName;
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingPropertyValueEditor.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/BindingPropertyValueEditor.cs
deleted file mode 100644 (file)
index e2ff6de..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Core.Presentation.Themes;
-
-    sealed class BindingPropertyValueEditor : PropertyValueEditor
-    {
-        public BindingPropertyValueEditor()
-        {
-            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("Binding_InlineEditorTemplate");
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentButtonTitleConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentButtonTitleConverter.cs
deleted file mode 100644 (file)
index d79825e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Runtime;
-    using System.Activities.Core.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Globalization;
-    using System.Windows.Data;
-
-    sealed class ContentButtonTitleConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            object content = value;
-            if (content != null && content is ModelItem)
-            {
-                content = ((ModelItem)content).GetCurrentValue();
-            }
-            if (content == null)
-            {
-                return SR.DefineContent;
-            }
-            else
-            {
-                //string contentTypeName = content.GetType().Name;
-                if (content is ReceiveMessageContent || content is SendMessageContent)
-                {
-                    return SR.ViewMessageContent;
-                }
-                else if (content is ReceiveParametersContent || content is SendParametersContent)
-                {
-                    return SR.ViewParameterContent;
-                }
-                else
-                {
-                    Fx.Assert(false, "Content must be of either ReceiveMessageContent, ReceiveParametersContent, SendMessageContent or SendParametersContent.");
-                    return null;
-                }
-            }
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotSupportedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentCorrelationTypeExpander.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentCorrelationTypeExpander.xaml.cs
deleted file mode 100644 (file)
index e57264d..0000000
+++ /dev/null
@@ -1,315 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Collections.Generic;
-    using System.Reflection;
-    using System.Runtime.Serialization;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Input;
-    using System.Windows.Threading;
-    using System.Xml;
-    using System.Linq;
-    using System.Collections;
-    using System.Xml.Linq;
-
-    partial class ContentCorrelationTypeExpander
-    {
-        static readonly DependencyPropertyKey IsSelectionValidPropertyKey = DependencyProperty.RegisterReadOnly(
-            "IsSelectionValid",
-            typeof(bool),
-            typeof(ContentCorrelationTypeExpander),
-            new UIPropertyMetadata(false, OnIsSelectionValidChanged));
-
-        public static readonly DependencyProperty IsSelectionValidProperty = IsSelectionValidPropertyKey.DependencyProperty;
-
-        public static readonly RoutedEvent IsSelectionValidChangedEvent = EventManager.RegisterRoutedEvent(
-            "IsSelectionValidChanged",
-            RoutingStrategy.Bubble,
-            typeof(RoutedEventHandler),
-            typeof(ContentCorrelationTypeExpander));
-
-        public static readonly RoutedEvent SelectionChangedEvent = EventManager.RegisterRoutedEvent(
-            "SelectionChanged",
-            RoutingStrategy.Bubble,
-            typeof(RoutedEventHandler),
-            typeof(ContentCorrelationTypeExpander));
-
-        public static readonly DependencyProperty TypesToExpandProperty = DependencyProperty.Register(
-            "TypesToExpand",
-            typeof(IList<ExpanderTypeEntry>),
-            typeof(ContentCorrelationTypeExpander),
-            new UIPropertyMetadata(null, OnTypesToExpandChanged));
-
-        static readonly DependencyPropertyKey SelectedTypeEntryPropertyKey = DependencyProperty.RegisterReadOnly(
-            "SelectedTypeEntry", 
-            typeof(ExpanderTypeEntry), 
-            typeof(ContentCorrelationTypeExpander), 
-            new UIPropertyMetadata(null));
-
-        public static readonly DependencyProperty SelectedTypeEntryProperty = SelectedTypeEntryPropertyKey.DependencyProperty;
-
-        static readonly Type[] PrimitiveTypesInXPath = new Type[]
-            {
-                typeof(DateTime),
-                typeof(TimeSpan),
-                typeof(XmlQualifiedName),                
-                typeof(Uri),                
-                typeof(Guid),
-                typeof(XmlElement),
-                typeof(string),
-                typeof(object),
-                typeof(Decimal),
-                typeof(XElement),
-            };
-
-        MemberInfo[] path = null;
-        Type selectedType = null;       
-
-        public ContentCorrelationTypeExpander()
-        {
-            InitializeComponent();
-        }
-
-        public event RoutedEventHandler IsSelectionValidChanged
-        {
-            add
-            {
-                AddHandler(IsSelectionValidChangedEvent, value);
-            }
-            remove
-            {
-                RemoveHandler(IsSelectionValidChangedEvent, value);
-            }
-        }
-
-        public event RoutedEventHandler SelectionChanged
-        {
-            add
-            {
-                AddHandler(SelectionChangedEvent, value);
-            }
-            remove
-            {
-                RemoveHandler(SelectionChangedEvent, value);
-            }
-        }
-        public bool IsSelectionValid
-        {
-            get { return (bool)GetValue(IsSelectionValidProperty); }
-            private set { SetValue(IsSelectionValidPropertyKey, value); }
-        }
-
-        public IList<ExpanderTypeEntry> TypesToExpand
-        {
-            get { return (IList<ExpanderTypeEntry>)GetValue(TypesToExpandProperty); }
-            set { SetValue(TypesToExpandProperty, value); }
-        }
-
-        public ExpanderTypeEntry SelectedTypeEntry
-        {
-            get { return (ExpanderTypeEntry)GetValue(SelectedTypeEntryProperty); }
-            private set { SetValue(SelectedTypeEntryPropertyKey, value); }
-        }
-
-        public Type GetSelectedType()
-        {
-            return this.selectedType;
-        }
-
-        public MemberInfo[] GetMemberPath()
-        {
-            return this.path;
-        }
-
-        void RaiseSelectionValidChanged()
-        {
-            this.RaiseEvent(new RoutedEventArgs(IsSelectionValidChangedEvent, this));
-        }
-
-        void OnTypesToExpandChanged()
-        {
-            this.typeExpander.ItemsSource = this.TypesToExpand;
-            this.emptyContent.Visibility = null == this.TypesToExpand || 0 == this.TypesToExpand.Count ? Visibility.Visible : Visibility.Collapsed;
-        }
-
-        void OnTypeExpanderLoaded(object sender, RoutedEventArgs e)
-        {
-            this.typeExpander.Focus();
-        }
-
-        void OnTreeViewItemLoaded(object sender, RoutedEventArgs e)
-        {
-            var item = (TreeViewItem)sender;
-            if (null != item.Header)
-            {
-                if (item.Header is ExpanderTypeEntry)
-                {
-                    item.IsExpanded = true;
-                }
-                else if (item.Header is Type)
-                {
-                    var type = (Type)item.Header;
-                    item.IsExpanded = true;
-                }
-            }
-        }
-
-        void OnTreeViewItemMouseAccept(object sender, MouseButtonEventArgs e)
-        {
-            var item = sender as TreeViewItem;
-            if (null != item && item.Header is ExpanderTypeEntry)
-            {
-                this.SelectedTypeEntry = (ExpanderTypeEntry)item.Header;
-            }
-            if (null != item && item.IsSelected && item.IsSelectionActive)
-            {
-                this.Accept(item);
-                e.Handled = true;
-            }
-        }
-
-        void OnTreeViewItemKeyboardAccept(object sender, KeyEventArgs e)
-        {
-            var item = sender as TreeViewItem;
-            if (null != item && item.Header is ExpanderTypeEntry)
-            {
-                this.SelectedTypeEntry = (ExpanderTypeEntry)item.Header;
-            }
-            if (null != item && item.IsSelected && item.IsSelectionActive && Key.Enter == e.Key && Keyboard.Modifiers == ModifierKeys.None)
-            {
-                this.Accept(item);
-                e.Handled = true;
-            }
-        }
-
-        void Accept(TreeViewItem item)
-        {
-            bool isType = item.Header is ExpanderTypeEntry;
-            bool isMember  = item.Header is MemberInfo;
-            if (isMember)
-            {
-                var members = new List<MemberInfo>(1);
-                while (null != item && item.Header is MemberInfo)
-                {
-                    var member = (MemberInfo)item.Header;
-                    members.Insert(0, member);
-
-                    if (item.Tag is TreeViewItem)
-                    {
-                        item = (TreeViewItem)item.Tag;
-                    }
-                    else
-                    {
-                        item = null;
-                    }
-                }
-                this.SelectedTypeEntry = (ExpanderTypeEntry)item.Header;
-                this.selectedType = this.SelectedTypeEntry.TypeToExpand;
-                this.path = members.ToArray();
-            }
-            else if (isType)
-            {
-                this.SelectedTypeEntry = (ExpanderTypeEntry)item.Header;
-                this.selectedType = this.SelectedTypeEntry.TypeToExpand;
-                this.path = new MemberInfo[0];
-            }
-            else
-            {
-                this.SelectedTypeEntry = null;
-                this.selectedType = null;
-                this.path = null;
-            }
-            this.IsSelectionValid = isType || isMember;
-            this.RaiseEvent(new RoutedEventArgs(SelectionChangedEvent, this));
-        }
-
-        //The following types are considered as primitives as far as XPath generation is concerned and shouldn't be expanded any more
-        // 1. CLR built-in types 
-        // 2. Byte array, DateTime, TimeSpan, GUID, Uri, XmlQualifiedName, XmlElement and XmlNode array [This includes XElement and XNode array from .NET 3.5] 
-        // 3. Enums 
-        // 4. Arrays and Collection classes including List<T>, Dictionary<K,V> and Hashtable (Anything that implements IEnumerable or IDictionary or is an array is treated as a collection).
-        // 5. Type has [CollectionDataContract] attribute
-        internal static bool IsPrimitiveTypeInXPath(Type type)
-        {
-            return ((type.IsPrimitive) || type.IsEnum || PrimitiveTypesInXPath.Any((item => item == type))
-                || (typeof(IEnumerable).IsAssignableFrom(type)) || typeof(IDictionary).IsAssignableFrom(type) || type.IsArray
-                || (type.GetCustomAttributes(typeof(CollectionDataContractAttribute), false).Length > 0));
-        }
-
-        static void OnIsSelectionValidChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
-        {
-            ((ContentCorrelationTypeExpander)sender).RaiseSelectionValidChanged();
-        }
-
-        static void OnTypesToExpandChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
-        {
-            var control = (ContentCorrelationTypeExpander)sender;
-            control.Dispatcher.BeginInvoke(new Action(() => { control.OnTypesToExpandChanged(); }), DispatcherPriority.Render);
-        }
-    }
-
-    internal sealed class TypeEntryContainer
-    {
-        public string DisplayText { get; set; }
-        public IList<ExpanderTypeEntry> Items { get; set; }
-
-        public override string ToString()
-        {
-            return this.DisplayText ?? base.ToString();
-        }
-    }
-
-    internal sealed class ExpanderTypeEntry : DependencyObject
-    {
-        public static readonly DependencyProperty NameProperty = DependencyProperty.Register(
-            "Name",
-            typeof(string),
-            typeof(ExpanderTypeEntry),
-            new UIPropertyMetadata(string.Empty));
-
-        public static readonly DependencyProperty TypeToExpandProperty = DependencyProperty.Register(
-            "TypeToExpand",
-            typeof(Type),
-            typeof(ExpanderTypeEntry),
-            new UIPropertyMetadata(null));
-
-        public static readonly DependencyProperty TagProperty = DependencyProperty.Register(
-            "Tag",
-            typeof(object),
-            typeof(ExpanderTypeEntry),
-            new UIPropertyMetadata(null));
-
-        public string Name
-        {
-            get { return (string)GetValue(NameProperty); }
-            set { SetValue(NameProperty, value); }
-        }
-
-        public Type TypeToExpand
-        {
-            get { return (Type)GetValue(TypeToExpandProperty); }
-            set { SetValue(TypeToExpandProperty, value); }
-        }
-
-        public Type[] TypeToExpandSource
-        {
-            get { return new Type[] { this.TypeToExpand }; }
-        }
-
-        public object Tag
-        {
-            get { return GetValue(TagProperty); }
-            set { SetValue(TagProperty, value); }
-        }
-
-        public override string ToString()
-        {
-            return this.Name ?? "<null>";
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentDialogViewModel.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ContentDialogViewModel.cs
deleted file mode 100644 (file)
index 5e80f1f..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Hosting;
-    using System.Activities.Presentation.Model;
-    using System.Collections.ObjectModel;
-    using System.ComponentModel;
-
-    class ContentDialogViewModel<TMessage, TParameter> : INotifyPropertyChanged
-        where TMessage : new()
-        where TParameter : new()
-    {
-        EditingMode editingMode = EditingMode.Message;
-        ModelItem messageExpression;
-        Type declaredMessageType;
-
-        public ContentDialogViewModel(ModelItem modelItem)
-        {
-            this.ModelItem = modelItem;
-            InitializeMessageAndParameterData();
-        }
-
-        public event PropertyChangedEventHandler PropertyChanged;
-
-        public bool IsEditingEnabled
-        {
-            get
-            {
-                return !this.Context.Items.GetValue<ReadOnlyState>().IsReadOnly;
-            }
-        }
-
-        public bool IsMessageChecked
-        {
-            get
-            {
-                return this.editingMode == EditingMode.Message;
-            }
-            set
-            {
-                if (value != this.IsMessageChecked)
-                {
-                    this.editingMode = value ? EditingMode.Message : EditingMode.Parameter;
-                    OnModeChanged();
-                }
-            }
-        }
-
-        public bool IsParameterChecked
-        {
-            get
-            {
-                return this.editingMode == EditingMode.Parameter;
-            }
-            set
-            {
-                if (value != this.IsParameterChecked)
-                {
-                    this.editingMode = value ? EditingMode.Parameter : EditingMode.Message;
-                    OnModeChanged();
-                }
-            }
-        }
-
-        public ModelItem ModelItem
-        {
-            get;
-            private set;
-        }
-
-        public EditingContext Context
-        {
-            get
-            {
-                return this.ModelItem.GetEditingContext();
-            }
-        }
-
-        public ModelItem MessageExpression
-        {
-            get
-            {
-                return this.messageExpression;
-            }
-            set
-            {
-                this.messageExpression = value;
-                if (this.PropertyChanged != null)
-                {
-                    this.PropertyChanged(this, new PropertyChangedEventArgs("MessageExpression"));
-                }
-            }
-        }
-
-        public Type DeclaredMessageType
-        {
-            get
-            {
-                return this.declaredMessageType;
-            }
-            set
-            {
-                this.declaredMessageType = value;
-                if (this.PropertyChanged != null)
-                {
-                    this.PropertyChanged(this, new PropertyChangedEventArgs("DeclaredMessageType"));
-                }
-            }
-        }
-
-        public bool IsDictionary
-        {
-            get;
-            private set;
-        }
-
-        public Type UnderlyingArgumentType
-        {
-            get;
-            private set;
-        }
-
-        public ObservableCollection<DynamicArgumentWrapperObject> DynamicArguments
-        {
-            get;
-            set;
-        }
-
-        internal bool OnOk()
-        {
-            ModelProperty contentProperty = this.ModelItem.Properties["Content"];
-            if (this.editingMode == EditingMode.Parameter)
-            {
-                contentProperty.SetValue(new TParameter());
-                DynamicArgumentDesigner.WrapperCollectionToModelItem(this.DynamicArguments,
-                                        contentProperty.Value.Properties["Parameters"].Value,
-                                        this.IsDictionary, this.UnderlyingArgumentType);
-            }
-            else
-            {
-                if (this.DeclaredMessageType == null && this.MessageExpression == null)
-                {
-                    contentProperty.SetValue(null);
-                }
-                else
-                {
-                    contentProperty.SetValue(new TMessage());
-                    contentProperty.Value.Properties["Message"].SetValue(this.MessageExpression);
-                    contentProperty.Value.Properties["DeclaredMessageType"].SetValue(this.DeclaredMessageType);
-                }
-            }
-
-            return true;
-        }
-
-        void InitializeMessageAndParameterData()
-        {
-            ModelItem parameterModelItem;
-            ModelTreeManager modelTreeManager = (this.ModelItem as IModelTreeItem).ModelTreeManager;
-
-            ModelItem contentModelItem = this.ModelItem.Properties["Content"].Value;
-            if (contentModelItem == null)
-            {
-                this.messageExpression = modelTreeManager.WrapAsModelItem(new TMessage()).Properties["Message"].Value;
-                this.declaredMessageType = null;
-                parameterModelItem = modelTreeManager.WrapAsModelItem(new TParameter()).Properties["Parameters"].Value;
-            }
-            else
-            {
-                if (contentModelItem.ItemType == typeof(TMessage))
-                {
-                    this.editingMode = EditingMode.Message;
-                    this.messageExpression = contentModelItem.Properties["Message"].Value;
-                    this.declaredMessageType = (Type)contentModelItem.Properties["DeclaredMessageType"].ComputedValue;
-                    parameterModelItem = modelTreeManager.WrapAsModelItem(new TParameter()).Properties["Parameters"].Value;
-                }
-                else
-                {
-                    this.editingMode = EditingMode.Parameter;
-                    this.messageExpression = modelTreeManager.WrapAsModelItem(new TMessage()).Properties["Message"].Value;
-                    this.declaredMessageType = null;
-                    parameterModelItem = contentModelItem.Properties["Parameters"].Value;
-                }
-            }
-
-            bool isDictionary;
-            Type underlyingArgumentType;
-            this.DynamicArguments = DynamicArgumentDesigner.ModelItemToWrapperCollection(
-                                                parameterModelItem,
-                                                out isDictionary,
-                                                out underlyingArgumentType);
-
-            this.IsDictionary = isDictionary;
-            this.UnderlyingArgumentType = underlyingArgumentType;
-        }
-
-        void OnModeChanged()
-        {
-            if (this.PropertyChanged != null)
-            {
-                this.PropertyChanged(this, new PropertyChangedEventArgs("IsMessageChecked"));
-                this.PropertyChanged(this, new PropertyChangedEventArgs("IsParameterChecked"));
-            }
-        }
-
-        enum EditingMode
-        {
-            Message,
-            Parameter
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveMessageContentSearchableStringConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveMessageContentSearchableStringConverter.cs
deleted file mode 100644 (file)
index 84b7024..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation.Converters
-{
-    using System.Activities.Presentation.Converters;
-    using System.Collections.Generic;
-    using System.ServiceModel.Activities;
-
-    class ReceiveMessageContentSearchableStringConverter : SearchableStringConverter
-    {
-        public override IList<string> Convert(object value)
-        {
-            List<string> results = new List<string>();
-            ReceiveMessageContent content = value as ReceiveMessageContent;
-            if (null != content)
-            {
-                results.AddRange(new ArgumentSearchableStringConverter().Convert(content.Message));
-                results.AddRange(new TypeSearchableStringConverter().Convert(content.DeclaredMessageType));
-            }
-            return results;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveParametersContentSearchableStringConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/ReceiveParametersContentSearchableStringConverter.cs
deleted file mode 100644 (file)
index ae15f2b..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation.Converters
-{
-    using System.Activities;
-    using System.Activities.Presentation.Converters;
-    using System.Collections.Generic;
-    using System.ServiceModel.Activities;
-
-    class ReceiveParametersContentSearchableStringConverter : SearchableStringConverter
-    {
-        public override IList<string> Convert(object value)
-        {
-            List<string> results = new List<string>();
-            ReceiveParametersContent content = value as ReceiveParametersContent;
-            if (null != content)
-            {
-                foreach (KeyValuePair<string, OutArgument> param in content.Parameters)
-                {
-                    results.Add(param.Key);
-                    results.Add(param.Value.GetType().Name);
-                    results.AddRange(new ArgumentSearchableStringConverter().Convert(param.Value));
-                }
-            }
-            return results;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendMessageContentSearchableStringConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendMessageContentSearchableStringConverter.cs
deleted file mode 100644 (file)
index d55da13..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation.Converters
-{
-    using System.Activities.Presentation.Converters;
-    using System.Collections.Generic;
-    using System.ServiceModel.Activities;
-
-    class SendMessageContentSearchableStringConverter : SearchableStringConverter
-    {
-        public override IList<string> Convert(object value)
-        {
-            List<string> results = new List<string>();
-            SendMessageContent content = value as SendMessageContent;
-            if (null != content)
-            {
-                results.AddRange(new ArgumentSearchableStringConverter().Convert(content.Message));
-                results.AddRange(new TypeSearchableStringConverter().Convert(content.DeclaredMessageType));
-            }
-            return results;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendParametersContentSearchableStringConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/SendParametersContentSearchableStringConverter.cs
deleted file mode 100644 (file)
index 6c8901c..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation.Converters
-{
-    using System.Activities;
-    using System.Activities.Presentation.Converters;
-    using System.Collections.Generic;
-    using System.ServiceModel.Activities;
-
-    class SendParametersContentSearchableStringConverter : SearchableStringConverter
-    {
-        public override IList<string> Convert(object value)
-        {
-            List<string> results = new List<string>();
-            SendParametersContent content = value as SendParametersContent;
-            if (null != content)
-            {
-                foreach (KeyValuePair<string, InArgument> param in content.Parameters)
-                {
-                    results.Add(param.Key);
-                    results.Add(param.Value.GetType().Name);
-                    results.AddRange(new ArgumentSearchableStringConverter().Convert(param.Value));
-                }
-            }
-            return results;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/XPathMessageQuerySearchableStringConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Converters/XPathMessageQuerySearchableStringConverter.cs
deleted file mode 100644 (file)
index 1cfa0be..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation.Converters
-{
-    using System.Activities;
-    using System.Activities.Presentation.Converters;
-    using System.Collections.Generic;
-    using System.ServiceModel;
-
-    class XPathMessageQuerySearchableStringConverter : SearchableStringConverter
-    {
-        public override IList<string> Convert(object value)
-        {
-            IList<string> results = new List<string>();
-            XPathMessageQuery messageQuery = value as XPathMessageQuery;
-            if (messageQuery != null)
-            {
-                results.Add(messageQuery.Expression);
-            }
-            return results;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelatesOnValueEditor.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelatesOnValueEditor.cs
deleted file mode 100644 (file)
index 9d9a9c0..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.View;
-    using System.Windows;
-    using System.Runtime;
-    using System.Windows.Controls;
-
-    sealed class CorrelatesOnValueEditor : DialogPropertyValueEditor
-    {
-        public CorrelatesOnValueEditor()
-        {
-            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("CorrelatesOnDesigner_InlineTemplate");
-        }
-
-        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
-        {
-            ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = new ModelPropertyEntryToOwnerActivityConverter();
-
-            ModelItem modelItem = (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
-            EditingContext context = modelItem.GetEditingContext();
-
-            this.ShowDialog(modelItem, context);
-        }
-
-        public void ShowDialog(ModelItem activity, EditingContext context)
-        {
-            Fx.Assert(activity != null, "Activity model item shouldn't be null!");
-            Fx.Assert(context != null, "EditingContext shouldn't be null!");
-
-
-            string bookmarkTitle = (string)this.InlineEditorTemplate.Resources["bookmarkTitle"];
-
-            UndoEngine undoEngine = context.Services.GetService<UndoEngine>();
-            Fx.Assert(null != undoEngine, "UndoEngine should be available");
-
-            using (EditingScope scope = context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(bookmarkTitle, true))
-            {
-                if ((new EditorWindow(activity, context)).ShowOkCancel())
-                {
-                    scope.Complete();
-                }
-            }
-        }
-
-        sealed class EditorWindow : WorkflowElementDialog
-        {
-            public EditorWindow(ModelItem activity, EditingContext context)
-            {
-                this.ModelItem = activity;
-                this.Context = context;
-                this.Owner = activity.View;
-                this.EnableMaximizeButton = false;
-                this.EnableMinimizeButton = false;
-                this.MinHeight = 250;
-                this.MinWidth = 450;
-                this.WindowResizeMode = ResizeMode.CanResize;
-                this.WindowSizeToContent = SizeToContent.Manual;
-                var template = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("CorrelatesOnDesigner_DialogTemplate");
-
-                var presenter = new ContentPresenter()
-                {
-                    Content = activity,
-                    ContentTemplate = template
-                };
-                this.Title = (string)template.Resources["controlTitle"];
-                this.Content = presenter;
-                this.HelpKeyword = HelpKeywords.CorrelatesOnDefinitionDialog;
-            }
-
-            protected override void OnWorkflowElementDialogClosed(bool? dialogResult)
-            {
-                if (dialogResult.HasValue && dialogResult.Value)
-                {
-                    var correlatesOnProperty = this.ModelItem.Properties["CorrelatesOn"];
-
-                    if (correlatesOnProperty.IsSet && 0 == correlatesOnProperty.Dictionary.Count)
-                    {
-                        correlatesOnProperty.ClearValue();
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationDataDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationDataDesigner.xaml.cs
deleted file mode 100644 (file)
index 7288d31..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Collections.Generic;
-    using System.Windows;
-    using System.Activities.Presentation.View;
-    using System.Windows.Input;
-    using System.Collections.ObjectModel;
-    using System.Collections.Specialized;
-    using System.Runtime;
-    using System.Activities.Presentation.Hosting;
-    using System.Windows.Controls;
-    using System.Globalization;
-    using System.Linq;
-
-    internal partial class CorrelationDataDesigner 
-    {
-        const string KeyPrefix = "key";
-                
-        public static readonly DependencyProperty ActivityProperty = DependencyProperty.Register(
-            "Activity", 
-            typeof(ModelItem), 
-            typeof(CorrelationDataDesigner), 
-            new UIPropertyMetadata(OnActivityChanged));
-
-        public static readonly DependencyProperty CorrelationInitializeDataProperty = DependencyProperty.Register(
-            "CorrelationInitializeData", 
-            typeof(ObservableCollection<CorrelationDataWrapper>), 
-            typeof(CorrelationDataDesigner),
-            new UIPropertyMetadata(OnCorrelationDataChanged));
-
-        public static readonly DependencyProperty CorrelationHandleProperty = DependencyProperty.Register(
-            "CorrelationHandle", 
-            typeof(ModelItem), 
-            typeof(CorrelationDataDesigner));
-
-        public static readonly RoutedCommand AddNewDataCommand = new RoutedCommand("AddNewDataCommand", typeof(CorrelationDataDesigner));
-
-        DataGridHelper correlationDataDGHelper;
-
-        public ModelItem Activity
-        {
-            get { return (ModelItem)GetValue(ActivityProperty); }
-            set { SetValue(ActivityProperty, value); }
-        }
-
-        public ObservableCollection<CorrelationDataWrapper> CorrelationInitializeData
-        {
-            get { return (ObservableCollection<CorrelationDataWrapper>)GetValue(CorrelationInitializeDataProperty); }
-            set { SetValue(CorrelationInitializeDataProperty, value); }
-        }
-
-        public ModelItem CorrelationHandle
-        {
-            get { return (ModelItem)GetValue(CorrelationHandleProperty); }
-            set { SetValue(CorrelationHandleProperty, value); }
-        }
-
-        public CorrelationDataDesigner()
-        {
-            this.InitializeComponent();
-
-            //create data grid helper
-            this.correlationDataDGHelper = new DataGridHelper(this.correlationInitializers, this);            
-            //add binding to handle Add new entry clicks
-            this.CommandBindings.Add(new CommandBinding(AddNewDataCommand, OnAddNewDataExecuted));
-            //provide callback to add new row functionality
-            this.correlationDataDGHelper.AddNewRowCommand = AddNewDataCommand;
-            //add title for "add new row" button
-            this.correlationDataDGHelper.AddNewRowContent = (string)this.FindResource("addNewEntry");                       
-
-            CorrelationDataWrapper.Editor = this;
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-            this.Loaded += this.OnCorrelationDataDesignerLoaded;
-        }
-
-        void OnCorrelationDataDesignerLoaded(object sender, RoutedEventArgs e)
-        {
-            bool isReadOnly = this.Activity != null ? this.Activity.GetEditingContext().Items.GetValue<ReadOnlyState>().IsReadOnly : false;
-            this.correlationInitializers.IsReadOnly = isReadOnly;
-            this.correlationHandleETB.IsReadOnly = isReadOnly;
-        }
-
-        void OnExpressionTextBoxLoaded(object sender, RoutedEventArgs args)
-        {
-            ((ExpressionTextBox)sender).IsIndependentExpression = true;
-        }
-
-        //user clicked Add new data
-        void OnAddNewDataExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            //generate unique dictionary key
-            string keyName = this.CorrelationInitializeData.GetUniqueName<CorrelationDataWrapper>(KeyPrefix, item => item.Key);
-            //create new key value pair and add it to the dictionary
-            CorrelationDataWrapper wrapper = new CorrelationDataWrapper(keyName, null);
-            this.CorrelationInitializeData.Add(wrapper);
-            //begin row edit after adding new entry
-            this.correlationDataDGHelper.BeginRowEdit(wrapper, this.correlationInitializers.Columns[1]);
-        }
-       
-        static void OnActivityChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
-        {
-            var item = e.NewValue as ModelItem;
-            if (null != item && !item.IsAssignableFrom<InitializeCorrelation>())
-            {
-                Fx.Assert("CorrelationDataDesigner can only used to edit CorrelationData property of InitializeCorrelation activity");                
-            }            
-        }
-
-        static void OnCorrelationDataChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
-        {
-            (sender as CorrelationDataDesigner).correlationInitializers.ItemsSource = e.NewValue as ObservableCollection<CorrelationDataWrapper>;
-        }
-
-        internal void CommitEdit()
-        {
-            if ((this.Activity != null) && (this.Activity.ItemType == typeof(InitializeCorrelation)))
-            {
-                using (ModelEditingScope scope = this.Activity.BeginEdit((string)this.FindResource("editCorrelationDataDescription")))
-                {
-                    this.Activity.Properties[InitializeCorrelationDesigner.CorrelationPropertyName].SetValue(this.CorrelationHandle);
-                    ModelItemCollection correlationDataCollection = this.Activity.Properties[InitializeCorrelationDesigner.CorrelationDataPropertyName].Dictionary.Properties["ItemsCollection"].Collection;
-                    correlationDataCollection.Clear();
-                    foreach (CorrelationDataWrapper wrapper in this.CorrelationInitializeData)
-                    {
-                        correlationDataCollection.Add(new ModelItemKeyValuePair<string, InArgument<string>>
-                            {
-                                Key = wrapper.Key,
-                                Value = wrapper.Value != null ? wrapper.Value.GetCurrentValue() as InArgument<string> : null
-                            });
-                    }
-                    scope.Complete();
-                }
-            }
-        }
-
-        internal void ValidateKey(CorrelationDataWrapper wrapper, string oldKey)
-        {
-            string newKey = wrapper.Key;            
-            if (string.IsNullOrEmpty(newKey))
-            {
-                ErrorReporting.ShowErrorMessage(string.Format(CultureInfo.CurrentCulture, System.Activities.Core.Presentation.SR.NullOrEmptyKeyName));
-                wrapper.Key = oldKey;
-            }
-            else 
-            {
-                // At this point, the key of the entry has already been changed. If there are 
-                // entries with duplicate keys, the number of those entries is greater than 1.
-                // Thus, we only need to check the entry count.
-                int entryCount = this.CorrelationInitializeData.Count(entry => entry.Key == newKey);
-                if (entryCount > 1)
-                {
-                    ErrorReporting.ShowErrorMessage(string.Format(CultureInfo.CurrentCulture, System.Activities.Core.Presentation.SR.DuplicateKeyName, newKey));
-                    wrapper.Key = oldKey;
-                }
-            }
-        }
-
-        void OnEditingControlLoaded(object sender, RoutedEventArgs args)
-        {
-            DataGridHelper.OnEditingControlLoaded(sender, args);
-        }
-
-        void OnEditingControlUnloaded(object sender, RoutedEventArgs args)
-        {
-            DataGridHelper.OnEditingControlUnloaded(sender, args);
-        }
-    }
-
-    internal sealed class CorrelationDataWrapper : DependencyObject
-    {
-        public static readonly DependencyProperty KeyProperty =
-            DependencyProperty.Register("Key", typeof(string), typeof(CorrelationDataWrapper), new UIPropertyMetadata(string.Empty, OnKeyChanged));
-
-
-        public static readonly DependencyProperty ValueProperty =
-            DependencyProperty.Register("Value", typeof(ModelItem), typeof(CorrelationDataWrapper));
-
-        bool isValidating;
-        public ModelItem Value
-        {
-            get { return (ModelItem)GetValue(ValueProperty); }
-            set { SetValue(ValueProperty, value); }
-        }
-       
-        public string Key
-        {
-            get { return (string)GetValue(KeyProperty); }
-            set { SetValue(KeyProperty, value); }
-        }
-
-        public static CorrelationDataDesigner Editor
-        {
-            get;
-            set;
-        }
-
-        public CorrelationDataWrapper()
-        {
-            throw FxTrace.Exception.AsError(new NotSupportedException());
-        }
-
-        internal CorrelationDataWrapper(string key, ModelItem value)            
-        {
-            //Skip validation when first populate the collection
-            this.isValidating = true;
-            this.Key = key;
-            this.Value = value;
-            this.isValidating = false;
-        }
-
-        static void OnKeyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
-        {
-            CorrelationDataWrapper wrapper = sender as CorrelationDataWrapper;
-            if ((wrapper != null) && (!wrapper.isValidating))
-            {                
-                wrapper.isValidating = true;
-                CorrelationDataWrapper.Editor.ValidateKey(wrapper, (string)e.OldValue);
-                wrapper.isValidating = false;
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerDesigner.xaml.cs
deleted file mode 100644 (file)
index 9790956..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Collections;
-    using System.Collections.ObjectModel;
-    using System.Collections.Specialized;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Input;
-    using System.Globalization;
-    using System.Collections.Generic;
-
-    internal partial class CorrelationInitializerDesigner 
-    {
-        DataGridHelper correlationInitializerDGHelper;
-
-        const string CorrelationInitializersKey = "CorrelationInitializers";
-
-        public static readonly DependencyProperty ActivityProperty = DependencyProperty.Register(
-            "Activity", 
-            typeof(ModelItem), 
-            typeof(CorrelationInitializerDesigner), 
-            new UIPropertyMetadata(OnActivityChanged));
-
-        static readonly ICommand AddNewInitializerCommand = new RoutedCommand();
-
-        public CorrelationInitializerDesigner()
-        {
-            this.InitializeComponent();
-        }
-
-        public ModelItem Activity
-        {
-            get { return (ModelItem)GetValue(ActivityProperty); }
-            set { SetValue(ActivityProperty, value); }
-        }
-
-        ModelItemCollection CorrelationInitializers
-        {
-            get { return this.Activity.Properties[CorrelationInitializersKey].Collection; }
-        }
-
-        protected override void OnInitialized(EventArgs args)
-        {
-            base.OnInitialized(args);
-
-            this.CommandBindings.Add(new CommandBinding(AddNewInitializerCommand, this.OnAddNewInitializerExecuted));
-
-            //create data grid helper
-            this.correlationInitializerDGHelper = new DataGridHelper(this.correlationInitializers, this);
-            this.correlationInitializerDGHelper.ShowValidationErrorAsToolTip = true;
-            this.correlationInitializerDGHelper.AddNewRowContent = (string)this.FindResource("addNewInitializer");
-            this.correlationInitializerDGHelper.AddNewRowCommand = CorrelationInitializerDesigner.AddNewInitializerCommand;            
-        }
-
-        void OnAddNewInitializerExecuted(object sender, ExecutedRoutedEventArgs e)
-        {
-            var initializer = (CanUseQueryCorrelationInitializer(this.Activity) ? 
-                (CorrelationInitializer)new QueryCorrelationInitializer() : (CorrelationInitializer)new ContextCorrelationInitializer());
-            var result = this.CorrelationInitializers.Add(initializer);
-            var wrapper = new CorrelationInitializerEntry(result);
-            this.correlationInitializerDGHelper.Source<IList>().Add(wrapper);
-            this.correlationInitializerDGHelper.BeginRowEdit(wrapper);
-        }
-
-        static bool CanUseQueryCorrelationInitializer(ModelItem activity)
-        {
-            bool result = true;
-            if (null != activity)
-            {
-                if (activity.IsAssignableFrom<Receive>() || activity.IsAssignableFrom<Send>())
-                {
-                    ModelItem serializationOption;
-                    activity.TryGetPropertyValue(out serializationOption, "SerializerOption");
-                    result = SerializerOption.XmlSerializer != (SerializerOption)serializationOption.GetCurrentValue();
-                }
-                else if (activity.IsAssignableFrom<SendReply>() || activity.IsAssignableFrom<ReceiveReply>())
-                {
-                    ModelItem request;
-                    activity.TryGetPropertyValue(out request, "Request");
-                    result = CanUseQueryCorrelationInitializer(request);
-                }
-            }
-            return result;
-        }
-
-        void OnDataCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
-        {
-            switch (e.Action)
-            {
-                case NotifyCollectionChangedAction.Remove:
-                    foreach (CorrelationInitializerEntry entry in e.OldItems)
-                    {
-                        this.CorrelationInitializers.Remove(entry.ReflectedObject);
-                        entry.Dispose();
-                    }
-                    break;
-            }
-        }
-
-
-        internal void CleanupObjectMap()
-        {
-        }
-
-        void OnActivityChanged()
-        {
-            if (null != this.Activity)
-            {
-                var source = new ObservableCollection<CorrelationInitializerEntry>();
-
-                foreach (var entry in this.CorrelationInitializers)
-                {
-                    var wrapper = new CorrelationInitializerEntry(entry);
-                    source.Add(wrapper);
-                }
-
-                this.correlationInitializers.ItemsSource = source;
-                source.CollectionChanged += this.OnDataCollectionChanged;
-            }
-        }
-
-        static void OnActivityChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
-        {
-            var activity = e.NewValue as ModelItem;
-            if (null != activity && !activity.IsMessagingActivity())
-            {
-                throw FxTrace.Exception.AsError(new NotSupportedException(activity.ItemType.FullName));
-            }
-            ((CorrelationInitializerDesigner)sender).OnActivityChanged();
-        }
-
-        void OnEditingControlLoaded(object sender, RoutedEventArgs args)
-        {
-            DataGridHelper.OnEditingControlLoaded(sender, args);
-        }
-
-        void OnEditingControlUnloaded(object sender, RoutedEventArgs args)
-        {
-            DataGridHelper.OnEditingControlUnloaded(sender, args);
-        }
-
-        internal sealed class CorrelationInitializerEntry : DesignObjectWrapper
-        {
-            internal static readonly string HandleProperty = "CorrelationHandle";
-            internal static readonly string CorrelationTypeProperty = "CorrelationType";
-            internal static readonly string MessageQuerySetModelPropertyProperty = "MessageQuerySet";
-
-            static readonly string[] Properties = new string[] { HandleProperty, CorrelationTypeProperty, MessageQuerySetModelPropertyProperty };
-
-            #region Initialize type properties code
-            public static PropertyDescriptorData[] InitializeTypeProperties()
-            {
-                return new PropertyDescriptorData[]
-                {
-                    new PropertyDescriptorData()
-                    {
-                        PropertyName = HandleProperty,
-                        PropertyType = typeof(InArgument),
-                        PropertySetter = (instance, newValue) =>
-                            {
-                                ((CorrelationInitializerEntry)instance).SetHandle(newValue);
-                            },
-                        PropertyGetter = (instance) => (((CorrelationInitializerEntry)instance).GetHandle()),
-                    },
-                    new PropertyDescriptorData()
-                    {
-                        PropertyName = CorrelationTypeProperty,
-                        PropertyType = typeof(Type),
-                        PropertyValidator = (instance, newValue, errors) => (((CorrelationInitializerEntry)instance).ValidateCorrelationType(newValue, errors)),
-                        PropertySetter = (instance, newValue) =>
-                            {
-                                ((CorrelationInitializerEntry)instance).SetCorrelationType(newValue);                                
-                            },
-                        PropertyGetter = (instance) => (((CorrelationInitializerEntry)instance).GetCorrelationType()),
-                    },
-                    new PropertyDescriptorData()
-                    {
-                        PropertyName = MessageQuerySetModelPropertyProperty,
-                        PropertyType = typeof(ModelProperty),
-                        PropertyGetter = (instance) => (((CorrelationInitializerEntry)instance).GetMessageQuerySetModelProperty()),
-                    },
-                };
-            }
-            #endregion
-
-
-            public CorrelationInitializerEntry()
-            {
-                throw FxTrace.Exception.AsError(new NotSupportedException());
-            }
-
-            public CorrelationInitializerEntry(ModelItem initializer) : base(initializer)
-            {
-            }
-
-            protected override string AutomationId
-            {
-                get { return ((ModelItemCollection)this.ReflectedObject.Parent).IndexOf(this.ReflectedObject).ToString(CultureInfo.InvariantCulture); }
-            }
-
-            internal object GetHandle()
-            {
-                return this.ReflectedObject.Properties[HandleProperty].ComputedValue;
-            }
-
-            void SetHandle(object value)
-            {
-                InArgument handle = (InArgument)(value is ModelItem ? ((ModelItem)value).GetCurrentValue() : value);
-                this.ReflectedObject.Properties[HandleProperty].SetValue(handle);
-            }
-
-            internal Type GetCorrelationType()
-            {
-                return this.ReflectedObject.ItemType;
-            }
-
-            void SetCorrelationType(object value)
-            {
-                Type type = (Type)(value is ModelItem ? ((ModelItem)value).GetCurrentValue() : value);
-                var source = (ModelItemCollection)this.ReflectedObject.Parent;
-                int index = source.IndexOf(this.ReflectedObject);
-                var oldInitalizer = (CorrelationInitializer)this.ReflectedObject.GetCurrentValue();
-                var newInitializer = (CorrelationInitializer)Activator.CreateInstance(type);
-                newInitializer.CorrelationHandle = oldInitalizer.CorrelationHandle;
-                this.Dispose();
-                source.RemoveAt(index);
-                this.Initialize(source.Insert(index, newInitializer));
-                this.RaisePropertyChangedEvent(MessageQuerySetModelPropertyProperty);
-            }
-
-            bool ValidateCorrelationType(object value, List<string> errors)
-            {
-                Type type = (Type)(value is ModelItem ? ((ModelItem)value).GetCurrentValue() : value);
-                var activity = this.ReflectedObject.Parent.Parent;
-                if (typeof(QueryCorrelationInitializer).IsAssignableFrom(type) && !CorrelationInitializerDesigner.CanUseQueryCorrelationInitializer(activity))
-                {
-                    errors.Add(System.Activities.Core.Presentation.SR.CorrelationInitializerNotSupported);
-                }
-                return 0 == errors.Count;
-            }
-
-            internal ModelProperty GetMessageQuerySetModelProperty()
-            {
-                return this.ReflectedObject.Properties[MessageQuerySetModelPropertyProperty];
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerValueEditor.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationInitializerValueEditor.cs
deleted file mode 100644 (file)
index 186fff2..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.View;
-    using System.Runtime;
-    using System.Windows;
-
-    sealed class CorrelationInitializerValueEditor : DialogPropertyValueEditor
-    {
-        public CorrelationInitializerValueEditor()
-        {
-            this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("CorrelationInitializer_InlineTemplate");
-        }
-
-        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
-        {
-            ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = new ModelPropertyEntryToOwnerActivityConverter();
-
-            ModelItem modelItem = (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
-            EditingContext context = modelItem.GetEditingContext();
-
-            this.ShowDialog(modelItem, context);
-        }
-
-        public void ShowDialog(ModelItem modelItem, EditingContext context)
-        {
-            Fx.Assert(modelItem != null, "Activity model item shouldn't be null!");
-            Fx.Assert(context != null, "EditingContext shouldn't be null!");
-
-
-            string bookmarkTitle = (string)this.InlineEditorTemplate.Resources["bookmarkTitle"];
-
-            UndoEngine undoEngine = context.Services.GetService<UndoEngine>();
-            Fx.Assert(null != undoEngine, "UndoEngine should be available");
-
-            using (ModelEditingScope editingScope = modelItem.BeginEdit(bookmarkTitle, shouldApplyChangesImmediately: true))
-            {
-                if ((new EditorWindow(modelItem, context)).ShowOkCancel())
-                {
-                    editingScope.Complete();
-                }
-                else
-                {
-                    editingScope.Revert();
-                }
-            }
-        }
-
-        sealed class EditorWindow : WorkflowElementDialog
-        {
-            public EditorWindow(ModelItem activity, EditingContext context)
-            {
-                this.ModelItem = activity;
-                this.Context = context;
-                this.Owner = activity.View;
-                this.EnableMaximizeButton = false;
-                this.EnableMinimizeButton = false;
-                this.MinWidth = 450;
-                this.MinHeight = 250; 
-                this.WindowResizeMode = ResizeMode.CanResize;
-                this.WindowSizeToContent = SizeToContent.Manual;
-                var content = new CorrelationInitializerDesigner() { Activity = activity };
-                this.Title = (string)content.Resources["controlTitle"];
-                this.Content = content;
-                this.HelpKeyword = HelpKeywords.AddCorrelationInitializersDialog;
-            }
-
-            protected override void OnWorkflowElementDialogClosed(bool? dialogResult)
-            {
-                if (dialogResult.HasValue && dialogResult.Value)
-                {
-                    ((CorrelationInitializerDesigner)this.Content).CleanupObjectMap();
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationScopeDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/CorrelationScopeDesigner.xaml.cs
deleted file mode 100644 (file)
index f761166..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System;
-    using System.Activities.Presentation.Metadata;
-    using System.ComponentModel;
-    using System.Activities.Presentation;
-
-    partial class CorrelationScopeDesigner 
-    {
-        public CorrelationScopeDesigner()
-        {
-            InitializeComponent();
-        }
-
-        internal static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(CorrelationScope);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CorrelationScopeDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/EndpointDesigner.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/EndpointDesigner.cs
deleted file mode 100644 (file)
index d961618..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System;
-    using System.ComponentModel;
-    using System.ServiceModel;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.PropertyEditing;
-
-    sealed class EndpointDesigner
-    {
-        internal static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type endpointType = typeof(Endpoint);
-
-            var browsableAttribute = new BrowsableAttribute(false);
-            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("BehaviorConfigurationName"), browsableAttribute);
-            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Headers"), browsableAttribute);
-            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Identity"), browsableAttribute);
-            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Name"), browsableAttribute);
-            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("ListenUri"), browsableAttribute);
-            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("ServiceContractName"), browsableAttribute);
-
-            builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Binding"),
-                PropertyValueEditor.CreateEditorAttribute(typeof(BindingPropertyValueEditor)));
-        }
-
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/ReceiveAndSendReplyFactory.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/ReceiveAndSendReplyFactory.cs
deleted file mode 100644 (file)
index ffb611f..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation.Factories
-{
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Activities.Statements;
-    using System.ServiceModel.Activities;
-    using System.Windows;
-    using System.Xml.Linq;
-    using Microsoft.VisualBasic.Activities;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.Services;
-    using System.Activities.Expressions;
-
-    public sealed class ReceiveAndSendReplyFactory : IActivityTemplateFactory
-    {
-        const string correlationHandleNamePrefix = "__handle";
-        static string requiredAssemblyName = typeof(CorrelationHandle).Assembly.GetName().Name;
-        static string requiredNamespace = typeof(CorrelationHandle).Namespace;
-
-        public Activity Create(DependencyObject target)
-        {            
-            string correlationHandleName = ActivityDesignerHelper.GenerateUniqueVariableNameForContext(target, correlationHandleNamePrefix);
-
-            Variable<CorrelationHandle> requestReplyCorrelation = new Variable<CorrelationHandle> { Name = correlationHandleName };
-
-            Receive receive = new Receive
-            {
-                OperationName = "Operation1",
-                ServiceContractName = XName.Get("IService", "http://tempuri.org/"),
-                CorrelationInitializers =
-                {
-                    new RequestReplyCorrelationInitializer
-                    {
-                        CorrelationHandle = new VariableValue<CorrelationHandle> { Variable = requestReplyCorrelation }
-                    }
-                }
-            };
-
-
-            Sequence sequence = new Sequence()
-            {
-                Variables = { requestReplyCorrelation },
-                Activities =
-                {
-                    receive,
-                    new SendReply
-                    {    
-                        DisplayName = "SendReplyToReceive",
-                        Request = receive,
-                    },
-                }
-            };
-
-            return sequence;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/SendAndReceiveReplyFactory.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/Factories/SendAndReceiveReplyFactory.cs
deleted file mode 100644 (file)
index f899fba..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation.Factories
-{
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Activities.Statements;
-    using System.ServiceModel.Activities;
-    using System.Windows;
-    using System.Xml.Linq;
-    using Microsoft.VisualBasic.Activities;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.Services;
-    using System.Activities.Expressions;
-
-    public sealed class SendAndReceiveReplyFactory : IActivityTemplateFactory
-    {
-        const string correlationHandleNamePrefix = "__handle";
-        static string requiredAssemblyName = typeof(CorrelationHandle).Assembly.GetName().Name;
-        static string requiredNamespace = typeof(CorrelationHandle).Namespace;
-
-        public Activity Create(DependencyObject target)
-        {
-            string correlationHandleName = ActivityDesignerHelper.GenerateUniqueVariableNameForContext(target, correlationHandleNamePrefix);
-
-            Variable<CorrelationHandle> requestReplyCorrelation = new Variable<CorrelationHandle> { Name = correlationHandleName };
-           
-            Send send = new Send
-            {
-                OperationName = "Operation1",
-                ServiceContractName = XName.Get("IService", "http://tempuri.org/"),
-                CorrelationInitializers =
-                {
-                    new RequestReplyCorrelationInitializer
-                    {
-                        CorrelationHandle = new VariableValue<CorrelationHandle> { Variable = requestReplyCorrelation }
-                    }
-                }
-            };
-
-            Sequence sequence = new Sequence()
-            {
-                Variables = { requestReplyCorrelation },
-                Activities =
-                {
-                    send,
-                    new ReceiveReply
-                    {      
-                        DisplayName = "ReceiveReplyForSend",
-                        Request = send,
-                    },
-                }
-            };
-            return sequence;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/InitializeCorrelationDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/InitializeCorrelationDesigner.xaml.cs
deleted file mode 100644 (file)
index e92af45..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System;
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.View;
-    using System.ComponentModel;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Runtime;
-    using System.Windows;
-    using System.Collections.ObjectModel;
-
-    partial class InitializeCorrelationDesigner 
-    {
-        public const string CorrelationPropertyName = "Correlation";
-        public const string CorrelationDataPropertyName = "CorrelationData";
-
-        public InitializeCorrelationDesigner()
-        {
-            InitializeComponent();            
-        }
-
-        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline,
-            Justification = "PropertyValueEditors association needs to be done in the static constructor.")]
-        static InitializeCorrelationDesigner()
-        {
-            Type type = typeof(InitializeCorrelation);
-            AttributeTableBuilder builder = new AttributeTableBuilder();
-
-            builder.AddCustomAttributes(type, type.GetProperty("Correlation"),
-                new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingCorrelatesWithHint")));
-
-            builder.AddCustomAttributes(type, type.GetProperty("CorrelationData"),
-                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationDataValueEditor)),
-                new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingCorrelationDataHint")));
-
-            builder.AddCustomAttributes(type, "CorrelationData", BrowsableAttribute.Yes);
-            MetadataStore.AddAttributeTable(builder.CreateTable());
-        }
-
-        void OnEditCorrelationData(object sender, RoutedEventArgs e)
-        {
-            var dlg = new CorrelationDataValueEditor();
-            dlg.ShowDialog(this.ModelItem, this.ModelItem.GetEditingContext());
-            this.UpdateButton();
-        }
-
-        protected override void OnReadOnlyChanged(bool isReadOnly)
-        {
-            this.btnCorrelationData.IsEnabled = !isReadOnly;
-            base.OnReadOnlyChanged(isReadOnly);
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            base.OnModelItemChanged(newItem);
-            this.UpdateButton();
-        }
-
-        void UpdateButton()
-        {
-            this.btnCorrelationData.Content =
-                this.ModelItem.Properties[CorrelationDataPropertyName].IsSet ? this.FindResource("viewTitle") : this.FindResource("defineTitle");
-        }
-
-        internal sealed class CorrelationDataValueEditor : DialogPropertyValueEditor
-        {
-            public CorrelationDataValueEditor()
-            {
-                this.InlineEditorTemplate = EditorCategoryTemplateDictionary.Instance.GetCategoryTemplate("CorrelationDataValueEditor_InlineTemplate");
-            }
-
-            public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
-            {
-                ModelPropertyEntryToOwnerActivityConverter propertyEntryConverter = new ModelPropertyEntryToOwnerActivityConverter();
-
-                ModelItem modelItem = (ModelItem)propertyEntryConverter.Convert(propertyValue.ParentProperty, typeof(ModelItem), false, null);
-                EditingContext context = modelItem.GetEditingContext();
-
-                this.ShowDialog(modelItem, context);
-            }
-
-            public void ShowDialog(ModelItem modelItem, EditingContext context)
-            {
-                Fx.Assert(modelItem != null, "Activity model item shouldn't be null!");
-                Fx.Assert(context != null, "EditingContext shouldn't be null!");
-                
-                new EditorWindow(modelItem, modelItem.Properties[CorrelationPropertyName].Value, this.GetCorrelationDataWrapperCollection(modelItem), context).ShowOkCancel();
-            }
-
-            ObservableCollection<CorrelationDataWrapper> GetCorrelationDataWrapperCollection(ModelItem modelItem)
-            {
-                ObservableCollection<CorrelationDataWrapper> wrapperCollection = null;
-                if (modelItem.ItemType == typeof(InitializeCorrelation))
-                {
-                    wrapperCollection = new ObservableCollection<CorrelationDataWrapper>();
-                    foreach (ModelItem entry in modelItem.Properties[CorrelationDataPropertyName].Dictionary.Properties["ItemsCollection"].Collection)
-                    { 
-                        wrapperCollection.Add(new CorrelationDataWrapper((string)entry.Properties["Key"].ComputedValue, entry.Properties["Value"].Value));
-                    }
-                }
-                return wrapperCollection;
-            }
-
-            sealed class EditorWindow : WorkflowElementDialog
-            {
-                public EditorWindow(ModelItem activity, ModelItem correlationHandler, ObservableCollection<CorrelationDataWrapper> correlationData, EditingContext context)
-                {
-                    this.ModelItem = activity;
-                    this.Context = context;
-                    this.Owner = activity.View;
-                    this.MinHeight = 250;
-                    this.MinWidth = 450;
-                    this.EnableMaximizeButton = false;
-                    this.EnableMinimizeButton = false;
-                    this.WindowResizeMode = ResizeMode.CanResize;
-                    this.WindowSizeToContent = SizeToContent.Manual;
-                    var content = new CorrelationDataDesigner() 
-                    { 
-                        Activity = activity,
-                        CorrelationHandle = correlationHandler,
-                        CorrelationInitializeData = correlationData
-                    };
-                    this.Title = (string)content.Resources["controlTitle"];
-                    this.Content = content;
-                    this.HelpKeyword = HelpKeywords.InitializeCorrelationDialog;
-                }
-
-                protected override void OnWorkflowElementDialogClosed(bool? dialogResult)
-                {
-                    if ((dialogResult.HasValue) && (dialogResult.Value))
-                    {
-                        (this.Content as CorrelationDataDesigner).CommitEdit();
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQueryEditor.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQueryEditor.xaml.cs
deleted file mode 100644 (file)
index d1b5161..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities.Presentation.Model;
-    using System.Activities.Core.Presentation;
-    using System.Collections.Generic;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Reflection;
-    using System.Runtime.Serialization;
-    using System.ServiceModel;
-    using System.ServiceModel.Dispatcher;
-    using System.Text;
-    using System.Windows;
-    using System.Windows.Controls;
-    using System.Windows.Input;
-    using System.Xml;
-    using System.Xml.Linq;
-    using System.ServiceModel.Description;
-    using System.Runtime;
-
-    partial class MessageQueryEditor
-    {
-        public static readonly DependencyProperty TypeCollectionProperty = DependencyProperty.Register(
-            "TypeCollection",
-            typeof(IList<KeyValuePair<string, Type>>), 
-            typeof(MessageQueryEditor), 
-            new UIPropertyMetadata(null, OnTypeCollectionChanged));
-
-        static readonly DependencyPropertyKey QueryPropertyKey = DependencyProperty.RegisterReadOnly(
-            "Query",
-            typeof(XPathMessageQuery),
-            typeof(MessageQueryEditor),
-            new UIPropertyMetadata(null));
-
-        static readonly DependencyProperty ActivityProperty = DependencyProperty.Register(
-            "Activity",
-            typeof(ModelItem),
-            typeof(MessageQueryEditor),
-            new UIPropertyMetadata(null));
-
-        public static readonly DependencyProperty QueryProperty = QueryPropertyKey.DependencyProperty;
-
-        public static readonly RoutedEvent XPathCreatedEvent = EventManager.RegisterRoutedEvent(
-            "XPathCreated", 
-            RoutingStrategy.Bubble, 
-            typeof(RoutedEventHandler), 
-            typeof(MessageQueryEditor));
-      
-        public MessageQueryEditor()
-        {
-            InitializeComponent();
-        }
-
-        //a collection of name and type (argument name + argument type) to expand
-        public IList<KeyValuePair<string, Type>> TypeCollection
-        {
-            get { return (IList<KeyValuePair<string, Type>>)GetValue(TypeCollectionProperty); }
-            set { SetValue(TypeCollectionProperty, value); }
-        }
-
-        public XPathMessageQuery Query
-        {
-            get { return (XPathMessageQuery)GetValue(QueryProperty); }
-            private set { SetValue(QueryPropertyKey, value); }
-        }
-
-        internal ModelItem Activity
-        {
-            get { return (ModelItem)GetValue(ActivityProperty); }
-            set { SetValue(ActivityProperty, value); }
-        }
-
-        //event raised whenever user creates a xpath
-        public event RoutedEventHandler XPathCreated
-        {
-            add { this.AddHandler(XPathCreatedEvent, value); }
-            remove { this.RemoveHandler(XPathCreatedEvent, value); }
-        }
-
-        //override default combo box item with my own implementation and style
-        protected override DependencyObject GetContainerForItemOverride()
-        {
-            return new MessageQueryComboBoxItem() { Style = (Style)this.FindResource("comboBoxStyle") };
-        }
-
-        protected override void OnKeyDown(KeyEventArgs e)
-        {
-            if (e.Key == Key.Enter && Keyboard.Modifiers == ModifierKeys.None)
-            {
-                e.Handled = true;
-                if (!this.IsDropDownOpen && !string.IsNullOrEmpty(this.Text))
-                {
-                    this.Query = new XPathMessageQuery(this.Text);
-                    this.RaiseEvent(new RoutedEventArgs(XPathCreatedEvent, this));
-                }
-            }
-            base.OnKeyDown(e);
-        }
-
-        //user double clicked on the expanded type, create a xpath
-        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes",
-            Justification = "Propagating exceptions might lead to VS crash.")]
-        [SuppressMessage("Reliability", "Reliability108:IsFatalRule",
-            Justification = "Propagating exceptions might lead to VS crash.")]
-        void OnTypeSelectionChanged(object sender, RoutedEventArgs e)
-        {
-            var contentCorrelationDesigner = (ContentCorrelationTypeExpander)sender;
-            //is selection valid (valid type or property)
-            if (contentCorrelationDesigner.IsSelectionValid)
-            {
-                var path = contentCorrelationDesigner.GetMemberPath();
-                var type = contentCorrelationDesigner.GetSelectedType();
-                try
-                {
-                    XmlNamespaceManager namespaceManager = null;
-                    string xpathQuery = string.Empty;
-                    var content = this.Activity.Properties["Content"].Value;
-                    if (content.IsAssignableFrom<ReceiveMessageContent>() || content.IsAssignableFrom<SendMessageContent>())
-                    {
-                        //generating xpath for message content
-                        xpathQuery = XPathQueryGenerator.CreateFromDataContractSerializer(type, path, out namespaceManager);
-                    }
-                    else
-                    {
-                        //generating xpath for parameter content
-                        XName serviceContractName = null;
-                        string operationName = null;
-                        string parameterName = contentCorrelationDesigner.SelectedTypeEntry.Name;
-                        bool isReply = this.Activity.IsAssignableFrom<SendReply>() || this.Activity.IsAssignableFrom<ReceiveReply>();
-                        if (isReply)
-                        {
-                            operationName = (string)this.Activity.Properties["Request"].Value.Properties["OperationName"].ComputedValue;
-                            serviceContractName = (XName)this.Activity.Properties["Request"].Value.Properties["ServiceContractName"].ComputedValue;
-
-                            if (string.IsNullOrEmpty(operationName) || null == serviceContractName)
-                            {
-                                ModelItem requestDisplayName;
-                                this.Activity.TryGetPropertyValue(out requestDisplayName, "Request", "DisplayName");
-                                throw FxTrace.Exception.AsError(new InvalidOperationException(
-                                        string.Format(CultureInfo.CurrentUICulture, (string)this.FindResource("parametersRequiredText"), requestDisplayName.GetCurrentValue())));
-                            }
-                        }
-                        else
-                        {
-                            operationName = (string)this.Activity.Properties["OperationName"].ComputedValue;
-                            serviceContractName = (XName)this.Activity.Properties["ServiceContractName"].ComputedValue;
-
-                            if (string.IsNullOrEmpty(operationName) || null == serviceContractName)
-                            {
-                                throw FxTrace.Exception.AsError(new InvalidOperationException(
-                                        string.Format(CultureInfo.CurrentUICulture, (string)this.FindResource("parametersRequiredText"), this.Activity.Properties["DisplayName"].ComputedValue)));
-                            }
-                        }
-                        xpathQuery = ParameterXPathQueryGenerator.CreateFromDataContractSerializer(serviceContractName, operationName, parameterName, isReply, type, path, out namespaceManager);
-                    }
-                    //use CDF api to build a xpath out of type and its properties
-                    string xpath = string.Format(CultureInfo.InvariantCulture, "sm:body(){0}", xpathQuery);
-
-                    //get the context
-                    //We need to copy over the namespaces from the manager's table 1 by 1. According to MSDN:
-                    //If you specify an existing name table, any namespaces in the name table are not automatically added to XmlNamespaceManager.
-                    //You must use AddNamespace and RemoveNamespace to add or remove namespaces.
-                    XPathMessageContext messageContext = new XPathMessageContext();
-                    foreach (string prefix in namespaceManager)
-                    {
-                        if (!string.IsNullOrEmpty(prefix) && !messageContext.HasNamespace(prefix) && prefix != "xmlns")
-                        {
-                            messageContext.AddNamespace(prefix, namespaceManager.LookupNamespace(prefix));
-                        }
-                    }
-
-                    var typeEntry = (ExpanderTypeEntry)contentCorrelationDesigner.Tag;
-                    //construct xpath 
-                    XPathMessageQuery query = new XPathMessageQuery(xpath, messageContext);
-                    //store the xpath in the Tag property; this combo's selectedValue is bound to i
-                    typeEntry.Tag = query;
-                    this.SelectedIndex = 0;
-                    this.IsDropDownOpen = false;
-                    this.Query = query;
-                    this.RaiseEvent(new RoutedEventArgs(XPathCreatedEvent, this));
-                }
-                catch (Exception err)
-                {
-                    MessageBox.Show(
-                        err.Message,
-                        (string)this.Resources["controlTitle"],
-                        MessageBoxButton.OK, MessageBoxImage.Error);
-                }
-            }
-        }
-
-        void OnTypeCollectionChanged()
-        {
-            //user provided a list of types to expand
-            var items = new List<ExpanderTypeEntry>();
-            if (null != this.TypeCollection)
-            {
-                StringBuilder text = new StringBuilder((string)this.FindResource("selectedDisplayText"));
-                bool addComma = false;
-                //copy all of then into ExpanderTypeEntry
-                foreach (var entry in this.TypeCollection)
-                {
-                    if (addComma)
-                    {
-                        text.Append(", ");
-                    }
-                    items.Add(new ExpanderTypeEntry() { TypeToExpand = entry.Value, Name = entry.Key });
-                    text.Append(entry.Key);
-                    addComma = true;
-                }
-                //requirement of combo box is that data source must be enumerable, so provide one elemnt array 
-                this.ItemsSource = new object[] { new TypeEntryContainer() { Items = items, DisplayText = text.ToString() } };
-            }
-            else
-            {
-                this.ItemsSource = null;
-            }
-        }
-
-        static void OnTypeCollectionChanged(object sender, DependencyPropertyChangedEventArgs e)
-        {
-            ((MessageQueryEditor)sender).OnTypeCollectionChanged();
-        }
-
-        //ComboBox item subclass 
-        sealed class MessageQueryComboBoxItem : ComboBoxItem
-        {
-            public MessageQueryComboBoxItem()
-            {
-                //i don't want it to be focusable - its conent is
-                this.Focusable = false;
-            }
-
-            //do not notify parent ComboBox about mouse down & up events - i don't want to close popup too early
-            //i handle closing myself
-            protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
-            {                
-            }
-            protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
-            {
-            }
-        }
-
-    }
-
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQuerySetDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessageQuerySetDesigner.xaml.cs
deleted file mode 100644 (file)
index 8205196..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Collections.ObjectModel;
-    using System.Collections.Specialized;
-    using System.ComponentModel;
-    using System.Globalization;
-    using System.Linq;
-    using System.Runtime;
-    using System.ServiceModel;
-    using System.Windows;
-
-    partial class MessageQuerySetDesigner : INotifyPropertyChanged
-    {
-        static readonly string key = "key";
-        DataGridHelper messageQueriesDGHelper;
-        string querySetPropertyName = string.Empty;
-        ObservableCollection<MessageQueryEntry> dataSource = new ObservableCollection<MessageQueryEntry>();
-        public event PropertyChangedEventHandler PropertyChanged;
-
-        public static readonly DependencyProperty ActivityProperty = DependencyProperty.Register(
-            "Activity",
-            typeof(ModelItem),
-            typeof(MessageQuerySetDesigner),
-            new UIPropertyMetadata(OnActivityChanged));
-
-        public static readonly DependencyProperty MessageQuerySetContainerProperty = DependencyProperty.Register(
-            "MessageQuerySetContainer",
-            typeof(ModelItem),
-            typeof(MessageQuerySetDesigner),
-            new UIPropertyMetadata(null, OnMessageQuerySetContainerChanged));
-
-        static readonly DependencyPropertyKey IsTypeExpanderEnabledPropertyKey = DependencyProperty.RegisterReadOnly(
-            "IsTypeExpanderEnabled",
-            typeof(bool),
-            typeof(MessageQuerySetDesigner),
-            new UIPropertyMetadata(false));
-
-        public static readonly DependencyProperty IsTypeExpanderEnabledProperty =
-            IsTypeExpanderEnabledPropertyKey.DependencyProperty;
-
-        public MessageQuerySetDesigner()
-        {
-            InitializeComponent();
-        }
-
-        //reference to messaging activity containing given message query set
-        public ModelItem Activity
-        {
-            get { return (ModelItem)GetValue(ActivityProperty); }
-            set { SetValue(ActivityProperty, value); }
-        }
-
-        //reference to model item which contains edited message query set (may be the same as Activty)
-        public ModelItem MessageQuerySetContainer
-        {
-            get { return (ModelItem)GetValue(MessageQuerySetContainerProperty); }
-            set { SetValue(MessageQuerySetContainerProperty, value); }
-        }
-
-        public bool IsTypeExpanderEnabled
-        {
-            get { return (bool)GetValue(IsTypeExpanderEnabledProperty); }
-            private set { SetValue(IsTypeExpanderEnabledPropertyKey, value); }
-        }
-
-        public IList<KeyValuePair<string, Type>> ActivityParameters
-        {
-            get
-            {
-                return null != this.Activity ? this.GetActivityParameters() : null;
-            }
-        }
-
-        protected override void OnInitialized(EventArgs e)
-        {
-            base.OnInitialized(e);
-            //create data grid helper and provide drop down with type expander as new row template
-            this.messageQueriesDGHelper = new DataGridHelper(this.messageQueries, this);
-            this.messageQueriesDGHelper.AddNewRowContent = this.FindResource("newRowTemplate");
-            this.messageQueriesDGHelper.ShowValidationErrorAsToolTip = true;
-            this.messageQueries.ItemsSource = this.dataSource;
-            this.dataSource.CollectionChanged += this.OnDataCollectionChanged;
-        }
-
-        void OnXpathCreated(object sender, RoutedEventArgs e)
-        {
-            //user created a xpath
-            var editor = (MessageQueryEditor)sender;
-            //get its value
-            var query = editor.Query;
-            if (null != query)
-            {
-                //get reference to message query set dictionary
-                var messageQuerySet = this.MessageQuerySetContainer.Properties[this.querySetPropertyName].Dictionary;
-                //create unique key name
-                var name = messageQuerySet.GetUniqueName(key, p => (string)p.GetCurrentValue());
-                //add new entry with created key and query
-                messageQuerySet.Add(name, query);
-                //look for created key value pair
-                var entry = messageQuerySet.First(p => string.Equals(p.Key.GetCurrentValue(), name));
-                //wrap it 
-                var wrapper = new MessageQueryEntry(entry);
-                //and add it to the ui
-                this.messageQueriesDGHelper.Source<IList>().Add(wrapper);
-            }
-            //reset editor, so new query can be created
-            editor.SelectedItem = null;
-        }
-
-        void OnActivityChanged()
-        {
-            if (null != this.PropertyChanged)
-            {
-                this.PropertyChanged(this, new PropertyChangedEventArgs("ActivityParameters"));
-            }
-            this.OnInitialzeView();
-        }
-
-        //method called whenever Activity or MessageQuerySetContainer changes
-        void OnInitialzeView()
-        {
-            //cleanup previous ui binding
-            this.dataSource.Clear();
-
-            //if we have activity and valid message query set container
-            if (null != this.Activity && null != this.MessageQuerySetContainer && !string.IsNullOrEmpty(this.querySetPropertyName))
-            {
-                //check if message query set is initialized
-                if (!this.MessageQuerySetContainer.Properties[this.querySetPropertyName].IsSet)
-                {
-                    //initialize if required
-                    this.MessageQuerySetContainer.Properties[this.querySetPropertyName].SetValue(new MessageQuerySet());
-                }
-                //get reference to message query set
-                var input = this.MessageQuerySetContainer.Properties[this.querySetPropertyName].Dictionary;
-
-                if (null != input)
-                {
-                    //create all model objects into ux collection
-                    foreach (var entry in input)
-                    {
-                        var wrapper = new MessageQueryEntry(entry);
-                        this.dataSource.Add(wrapper);
-                    }
-                    this.IsTypeExpanderEnabled = true;
-                }
-            }
-        }
-
-        void OnDataCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
-        {
-            //whenever user removes an entry from ux, reflect that change into underlying model
-            switch (e.Action)
-            {
-                case NotifyCollectionChangedAction.Remove:
-                    var messageQuerySet = this.MessageQuerySetContainer.Properties[this.querySetPropertyName].Dictionary;
-                    foreach (MessageQueryEntry entry in e.OldItems)
-                    {
-                        messageQuerySet.Remove(entry.GetKey());
-                        entry.Dispose();
-                    }
-                    break;
-
-                case NotifyCollectionChangedAction.Reset:
-                    this.IsTypeExpanderEnabled = false;
-                    break;
-            }
-        }
-
-        //helper method - used to pull activity's parameters 
-        IList<KeyValuePair<string, Type>> GetActivityParameters()
-        {
-            var result = new List<KeyValuePair<string, Type>>();
-            //get activity's content
-            var content = this.Activity.Properties["Content"].Value;
-            if (null != content)
-            {
-                //simple scenario - content is just one argument - get its type
-                if ((content.IsAssignableFrom<ReceiveMessageContent>() || content.IsAssignableFrom<SendMessageContent>()) &&
-                    content.Properties["Message"].IsSet)
-                {
-                    ModelItem type = null;
-                    content.TryGetPropertyValue(out type, "Message", "ArgumentType");
-                    result.Add(new KeyValuePair<string, Type>((string)this.FindResource("defaultParameterName"), (Type)type.GetCurrentValue()));
-                }
-                //complex scenario - content is a collection of parameters, for each one get its name and type
-                else if (content.IsAssignableFrom<ReceiveParametersContent>() && content.Properties["Parameters"].IsSet)
-                {
-                    var source = (IDictionary<string, OutArgument>)content.Properties["Parameters"].ComputedValue;
-                    foreach (var entry in source)
-                    {
-                        result.Add(new KeyValuePair<string, Type>(entry.Key, entry.Value.ArgumentType));
-                    }
-                }
-                else if (content.IsAssignableFrom<SendParametersContent>() && content.Properties["Parameters"].IsSet)
-                {
-                    var source = (IDictionary<string, InArgument>)content.Properties["Parameters"].ComputedValue;
-                    foreach (var entry in source)
-                    {
-                        result.Add(new KeyValuePair<string, Type>(entry.Key, entry.Value.ArgumentType));
-                    }
-                }
-            }
-            return result;
-        }
-
-        static void OnActivityChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
-        {
-            var activity = e.NewValue as ModelItem;
-            //throw if activity is not valid messaging activity type
-            if (null != activity && !activity.IsMessagingActivity())
-            {
-                throw FxTrace.Exception.AsError(new NotSupportedException(activity.ItemType.FullName));
-            }
-            ((MessageQuerySetDesigner)sender).OnActivityChanged();
-        }
-
-        static void OnMessageQuerySetContainerChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
-        {
-            var control = (MessageQuerySetDesigner)sender;
-            var container = e.NewValue as ModelItem;
-            //throw if query set container is not derived from correlation initializer or doesn't have required property
-            if (null != container)
-            {
-                var property = container.Properties.FirstOrDefault(p => typeof(MessageQuerySet).IsAssignableFrom(p.PropertyType));
-                if (!container.IsAssignableFrom<CorrelationInitializer>() && null == property)
-                {
-                    throw FxTrace.Exception.AsError(new NotSupportedException(container.ItemType.FullName));
-                }
-                control.querySetPropertyName = null != property ? property.Name : string.Empty;
-            }
-            control.OnInitialzeView();
-        }
-
-        void OnEditingControlLoaded(object sender, RoutedEventArgs args)
-        {
-            DataGridHelper.OnEditingControlLoaded(sender, args);
-        }
-
-        void OnEditingControlUnloaded(object sender, RoutedEventArgs args)
-        {
-            DataGridHelper.OnEditingControlUnloaded(sender, args);
-        }
-
-        internal sealed class MessageQueryEntry : DesignObjectWrapper
-        {
-            internal static string KeyProperty = "Key";
-            internal static string ValueProperty = "Expression";
-
-            string keyValue;
-
-            public MessageQueryEntry()
-            {
-                throw FxTrace.Exception.AsError(new NotSupportedException());
-            }
-
-            public MessageQueryEntry(KeyValuePair<ModelItem, ModelItem> entry)
-                : base(entry.Value)
-            {
-                this.keyValue = (string)entry.Key.GetCurrentValue();
-            }
-
-            #region Initialize type properties code
-            public static PropertyDescriptorData[] InitializeTypeProperties()
-            {
-                return new PropertyDescriptorData[]
-                {
-                    new PropertyDescriptorData()
-                    {
-                         PropertyType = typeof(string),
-                         PropertyName = KeyProperty,
-                         PropertyGetter = (instance) => ( ((MessageQueryEntry)instance).GetKey() ),
-                         PropertyValidator = (instance, value, errors) => (((MessageQueryEntry)instance).ValidateKey(value, errors)),
-                         PropertySetter = (instance, value) => { ((MessageQueryEntry)instance).SetKey(value); },
-                    },
-                    new PropertyDescriptorData()
-                    {
-                        PropertyType = typeof(string),
-                        PropertyName = ValueProperty,
-                        PropertyGetter = (instance) => (((MessageQueryEntry)instance).ReflectedObject.Properties[ValueProperty].ComputedValue),
-                        PropertySetter = (instance, value) => { ((MessageQueryEntry)instance).ReflectedObject.Properties[ValueProperty].SetValue( value ); },
-                    }
-                };
-            }
-            #endregion
-
-            internal string GetKey()
-            {
-                return this.keyValue;
-            }
-
-            void SetKey(object value)
-            {
-                string name = (string)(value is ModelItem ? ((ModelItem)value).GetCurrentValue() : value);
-                name = name.Trim();
-
-                var source = (ModelItemDictionary)this.ReflectedObject.Parent;
-                ModelItem newKeyMI = null;
-                source.SwitchKeys(this.keyValue, name, out newKeyMI);
-                this.keyValue = name;
-            }
-
-            bool ValidateKey(object newValue, List<string> errors)
-            {
-                string name = (string)(newValue is ModelItem ? ((ModelItem)newValue).GetCurrentValue() : newValue);
-                if (null != name)
-                {
-                    name = name.Trim();
-                }
-
-                if (string.IsNullOrEmpty(name))
-                {
-                    errors.Add(System.Activities.Core.Presentation.SR.NullOrEmptyKeyName);
-                }
-                else
-                {
-                    var source = (ModelItemDictionary)this.ReflectedObject.Parent;
-                    if (source.Keys.Any(p => string.Equals(p.GetCurrentValue(), name)))
-                    {
-                        errors.Add(string.Format(CultureInfo.CurrentUICulture, System.Activities.Core.Presentation.SR.DuplicateKeyName, name));
-                    }
-                }
-                return errors.Count == 0;
-            }
-
-            protected override string AutomationId
-            {
-                get { return this.keyValue; }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessagingContentPropertyEditorResources.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/MessagingContentPropertyEditorResources.xaml.cs
deleted file mode 100644 (file)
index 0ab3eba..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Linq;
-    using System.Text;
-    using System.Windows;
-    using System.Runtime;
-
-    class MessagingContentPropertyEditorResources
-    {
-        private static ResourceDictionary resources;
-        internal static ResourceDictionary GetResources()
-        {
-            if (resources == null)
-            {
-                Uri resourceLocator = new Uri(
-                    string.Concat(
-                    typeof(MessagingContentPropertyEditorResources).Assembly.GetName().Name,
-                    @";component/System/ServiceModel/Activities/Presentation/MessagingContentPropertyEditorResources.xaml"),
-                    UriKind.RelativeOrAbsolute);
-                resources = (ResourceDictionary)Application.LoadComponent(resourceLocator);
-            }
-            Fx.Assert(resources != null, "Could not load argument value editor resources.");
-            return resources;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentDialog.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentDialog.xaml.cs
deleted file mode 100644 (file)
index cac5cc7..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Hosting;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Windows;
-    using System.Windows.Input;
-
-    partial class ReceiveContentDialog : WorkflowElementDialog
-    {
-        public static readonly DependencyProperty ViewModelProperty =
-            DependencyProperty.Register("ViewModel", typeof(ContentDialogViewModel<ReceiveMessageContent, ReceiveParametersContent>), typeof(ReceiveContentDialog));
-
-        ReceiveContentDialog()
-        {
-            InitializeComponent();
-        }
-
-        [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors",
-            Justification = "This values must be set before this constructor complete to ensure ShowOkCancel() can consume that immediately")]
-        ReceiveContentDialog(ModelItem activity, EditingContext context, DependencyObject owner)
-            : this()
-        {
-            this.ModelItem = activity;
-            this.Context = context;
-            this.HelpKeyword = HelpKeywords.MessageContentDialog;
-            this.Owner = owner;
-            this.ViewModel = new ContentDialogViewModel<ReceiveMessageContent, ReceiveParametersContent>(this.ModelItem);
-            if (!this.Context.Items.GetValue<ReadOnlyState>().IsReadOnly)
-            {
-                this.OnOk = this.ViewModel.OnOk;
-            }
-        }
-
-        public ContentDialogViewModel<ReceiveMessageContent, ReceiveParametersContent> ViewModel
-        {
-            get { return (ContentDialogViewModel<ReceiveMessageContent, ReceiveParametersContent>)GetValue(ViewModelProperty); }
-            set { SetValue(ViewModelProperty, value); }
-        }
-
-        public static bool ShowDialog(ModelItem activity, EditingContext context, DependencyObject owner)
-        {
-            return new ReceiveContentDialog(activity, context, owner).ShowOkCancel();
-        }
-
-        void OnDynamicArgumentDesignerLoaded(object sender, RoutedEventArgs args)
-        {
-            ((DynamicArgumentDesigner)sender).ParentDialog = this;
-        }
-
-        void OnExpressionTextBoxLoaded(object sender, RoutedEventArgs args)
-        {
-            ((ExpressionTextBox)sender).IsIndependentExpression = true;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentPropertyEditor.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveContentPropertyEditor.cs
deleted file mode 100644 (file)
index 33d3cdc..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Windows;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.View;
-
-    sealed class ReceiveContentPropertyEditor : DialogPropertyValueEditor
-    {
-        public ReceiveContentPropertyEditor()
-        {
-            this.InlineEditorTemplate = (DataTemplate)MessagingContentPropertyEditorResources.GetResources()["ReceiveContentPresenter_InlineEditorTemplate"];
-        }
-
-        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
-        {
-            ModelPropertyEntryToModelItemConverter converter = new ModelPropertyEntryToModelItemConverter();
-            ModelPropertyEntryToModelItemConverter.Container container = (ModelPropertyEntryToModelItemConverter.Container)converter.Convert(propertyValue, null, null, null);
-            ReceiveContentDialog.ShowDialog(container.ModelItem, container.Context, container.WorkflowViewElement);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveDesigner.xaml.cs
deleted file mode 100644 (file)
index b5fafb4..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using Microsoft.VisualBasic.Activities;
-    using System;
-    using System.Activities;
-    using System.Activities.Statements;
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Core.Presentation;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Reflection;
-    using System.Windows;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Runtime;
-    using System.Activities.Presentation.Services;
-    using System.Activities.Expressions;
-
-    partial class ReceiveDesigner
-    {
-        const string CorrelationsCategoryLabelKey = "correlationsCategoryLabel";
-        const string MiscellaneousCategoryLabelKey = "miscellaneousCategoryLabel";
-        const string AdvancedCategoryLabelKey = "advancedCategoryLabel";
-        static string CorrelationHandleTypeNamespace = typeof(CorrelationHandle).Namespace;
-        static string Message;
-        static string Action;
-        static string DeclaredMessageType;
-
-        public static readonly RoutedCommand CreateSendReplyCommand = new RoutedCommand("CreateSendReply", typeof(ReceiveDesigner));
-
-        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline,
-            Justification = "PropertyValueEditors association needs to be done in the static constructor.")]
-        static ReceiveDesigner()
-        {
-            AttributeTableBuilder builder = new AttributeTableBuilder();
-            Type receiveType = typeof(Receive);
-
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelationInitializers"), PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
-
-            var categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(CorrelationsCategoryLabelKey));
-            var descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingCorrelatesWithHint", "<Correlation handle>"));
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelatesWith"), categoryAttribute, descriptionAttribute);
-
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelatesOn"), categoryAttribute, BrowsableAttribute.Yes,
-                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelatesOnValueEditor)));
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelationInitializers"), categoryAttribute, BrowsableAttribute.Yes,
-                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
-
-            categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(MiscellaneousCategoryLabelKey));
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("DisplayName"), categoryAttribute);
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("OperationName"), categoryAttribute);
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("ServiceContractName"), categoryAttribute, new TypeConverterAttribute(typeof(XNameConverter)));
-            descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingValueHint", "<Value to bind>"));
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("Content"), categoryAttribute, descriptionAttribute, PropertyValueEditor.CreateEditorAttribute(typeof(ReceiveContentPropertyEditor)));
-
-            var advancedAttribute = new EditorBrowsableAttribute(EditorBrowsableState.Advanced);
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("Action"), advancedAttribute, categoryAttribute);
-            builder.AddCustomAttributes(
-                receiveType,
-                "KnownTypes",
-                advancedAttribute,
-                categoryAttribute,
-                PropertyValueEditor.CreateEditorAttribute(typeof(TypeCollectionPropertyEditor)),
-                new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.AllowDuplicate, Value = false });
-
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("ProtectionLevel"), advancedAttribute, categoryAttribute);
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("SerializerOption"), advancedAttribute, categoryAttribute);
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CanCreateInstance"), advancedAttribute, categoryAttribute);
-
-            Action = receiveType.GetProperty("Action").Name;
-
-            Type receiveMessageContentType = typeof(ReceiveMessageContent);
-            Message = receiveMessageContentType.GetProperty("Message").Name;
-            DeclaredMessageType = receiveMessageContentType.GetProperty("DeclaredMessageType").Name;
-            MetadataStore.AddAttributeTable(builder.CreateTable());
-
-            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) => new ArgumentAccessor[]
-            {
-                new ArgumentAccessor
-                {
-                    Getter = (ownerActivity) =>
-                    {
-                        Receive receive = (Receive)ownerActivity;
-                        ReceiveMessageContent content = receive.Content as ReceiveMessageContent;
-                        return content != null ? content.Message : null;
-                    },
-                    Setter = (ownerActivity, arg) =>
-                    {
-                        Receive receive = (Receive)ownerActivity;
-                        ReceiveMessageContent content = receive.Content as ReceiveMessageContent;
-                        if (content != null)
-                        {
-                            content.Message = arg as OutArgument;
-                        }
-                    },
-                },
-            };
-            ActivityArgumentHelper.RegisterAccessorsGenerator(receiveType, argumentAccessorGenerator);
-        }
-
-        public ReceiveDesigner()
-        {
-            InitializeComponent();
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            base.OnModelItemChanged(newItem);
-            if (null != this.ModelItem)
-            {
-                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
-            }
-        }
-
-        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            if (string.Equals(e.PropertyName, Message))
-            {
-                ReceiveMessageContent messageContent = ((Receive)this.ModelItem.GetCurrentValue()).Content as ReceiveMessageContent;
-                this.ModelItem.Properties[DeclaredMessageType].SetValue(null == messageContent ? null : messageContent.Message.ArgumentType);
-            }
-        }
-
-        protected override void OnReadOnlyChanged(bool isReadOnly)
-        {
-            this.txtOperationName.IsReadOnly = isReadOnly;
-        }
-
-        void OnCreateSendReplyExecute(object sender, ExecutedRoutedEventArgs e)
-        {
-            ModelItem container;
-            ModelItem flowStepContainer;
-
-            using (ModelEditingScope scope = this.ModelItem.BeginEdit((string)this.FindResource("createSendReplyDescription")))
-            {                    
-                //special case handling for Sequence
-                if (this.ModelItem.IsItemInSequence(out container))
-                {
-                    //get activities collection
-                    ModelItemCollection activities = container.Properties["Activities"].Collection;
-                    //get index of Send within collection and increment by one
-                    int index = activities.IndexOf(this.ModelItem) + 1;
-                    //insert created reply just after the Receive
-                    activities.Insert(index, ReceiveDesigner.CreateSendReply(container, this.ModelItem));                 
-                }
-                //special case handling for Flowchart
-                else if (this.ModelItem.IsItemInFlowchart(out container, out flowStepContainer))
-                {
-                    Activity replyActivity = ReceiveDesigner.CreateSendReply(container, this.ModelItem);
-                    FlowchartDesigner.DropActivityBelow(this.ViewStateService, this.ModelItem, replyActivity, 30);
-                }
-                else
-                {
-                    ErrorReporting.ShowAlertMessage(string.Format(CultureInfo.CurrentUICulture, System.Activities.Core.Presentation.SR.CannotPasteSendReplyOrReceiveReply, typeof(SendReply).Name));
-                }
-                scope.Complete();
-            }
-            //always copy reply to clipboard
-            Func<ModelItem, object, object> callback = CreateSendReply;
-            CutCopyPasteHelper.PutCallbackOnClipBoard(callback, typeof(SendReply), this.ModelItem);
-            e.Handled = true;
-        }
-
-        static SendReply CreateSendReply(ModelItem target, object context)
-        {
-            SendReply reply = null;
-            ModelItem receive = (ModelItem)context;
-            if (null != receive)
-            {
-                Receive receiveInstance = (Receive)receive.GetCurrentValue();
-                string name = null;
-                //if no correlation is set - create one
-                if (null == receiveInstance.CorrelatesWith)
-                {
-                    Variable handleVariable = null;
-                    //first, look for nearest variable scope 
-                    ModelItemCollection variableScope = VariableHelper.FindRootVariableScope(receive).GetVariableCollection();
-                    if (null != variableScope)
-                    {
-                        ModelItemCollection correlations = receive.Properties["CorrelationInitializers"].Collection;
-                        bool hasRequestReplyHandle = false;
-                        foreach (ModelItem item in correlations)
-                        {
-                            if (item.ItemType.IsAssignableFrom(typeof(RequestReplyCorrelationInitializer)))
-                            {
-                                hasRequestReplyHandle = true;
-                                break;
-                            }
-                        }
-
-                        if (!hasRequestReplyHandle)
-                        {
-                            //create unique variable name
-                            name = variableScope.CreateUniqueVariableName("__handle", 1);
-                            //create variable
-                            handleVariable = Variable.Create(name, typeof(CorrelationHandle), VariableModifiers.None);
-                            //add it to the scope
-                            variableScope.Add(handleVariable);
-                            //setup correlation
-                            ImportDesigner.AddImport(CorrelationHandleTypeNamespace, receive.GetEditingContext());
-                            VariableValue<CorrelationHandle> expression = new VariableValue<CorrelationHandle> { Variable = handleVariable };
-                            InArgument<CorrelationHandle> handle = new InArgument<CorrelationHandle>(expression);
-                            correlations.Add(new RequestReplyCorrelationInitializer { CorrelationHandle = handle });
-                        }
-                    }
-                }
-
-                reply = new SendReply()
-                {
-                    DisplayName = string.Format(CultureInfo.CurrentUICulture, "SendReplyTo{0}", receive.Properties["DisplayName"].ComputedValue),
-                    Request = (Receive)receive.GetCurrentValue(),
-                };
-            }
-            else
-            {
-                MessageBox.Show(
-                    (string)StringResourceDictionary.Instance["receiveActivityCreateReplyErrorLabel"] ?? "Source 'Reply' element not found!",
-                    (string)StringResourceDictionary.Instance["MessagingActivityTitle"] ?? "Send",
-                    MessageBoxButton.OK, MessageBoxImage.Error);
-            }
-            return reply;
-        }
-
-        void OnDefineButtonClicked(object sender, RoutedEventArgs args)
-        {
-            using (EditingScope scope = this.Context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(StringResourceDictionary.Instance.GetString("editReceiveContent"), true))
-            {
-                if (ReceiveContentDialog.ShowDialog(this.ModelItem, this.Context, this))
-                {
-                    scope.Complete();
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyDesigner.xaml.cs
deleted file mode 100644 (file)
index 0ff2023..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System;
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Input;
-    using System.Activities;
-
-
-    partial class ReceiveReplyDesigner
-    {
-        const string CorrelationsCategoryLabelKey = "correlationsCategoryLabel";
-        const string EndpointCategoryLabelKey = "endpointCategoryLabel";
-        const string MiscellaneousCategoryLabelKey = "miscellaneousCategoryLabel";
-        const string AdvancedCategoryLabelKey = "advancedCategoryLabel";
-        static string Message;
-        static string Action;
-        static string DeclaredMessageType;
-
-        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline,
-            Justification = "PropertyValueEditors association needs to be done in the static constructor.")]
-        static ReceiveReplyDesigner()
-        {
-            AttributeTableBuilder builder = new AttributeTableBuilder();
-            Type receiveType = typeof(ReceiveReply);
-
-
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelationInitializers"), PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
-
-            var categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(CorrelationsCategoryLabelKey));
-
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("CorrelationInitializers"), categoryAttribute, BrowsableAttribute.Yes,
-                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));            
-
-            categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(MiscellaneousCategoryLabelKey));
-
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("DisplayName"), categoryAttribute);
-            var descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingValueHint", "<Value to bind>"));
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("Content"), categoryAttribute, descriptionAttribute, PropertyValueEditor.CreateEditorAttribute(typeof(ReceiveContentPropertyEditor)));
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("Request"),
-                categoryAttribute,
-                PropertyValueEditor.CreateEditorAttribute(typeof(ActivityXRefPropertyEditor)));
-
-            var advancedAttribute = new EditorBrowsableAttribute(EditorBrowsableState.Advanced);
-            builder.AddCustomAttributes(receiveType, receiveType.GetProperty("Action"), advancedAttribute, categoryAttribute);
-
-            Action = receiveType.GetProperty("Action").Name;
-
-            Type receiveMessageContentType = typeof(ReceiveMessageContent);
-            Message = receiveMessageContentType.GetProperty("Message").Name;
-            DeclaredMessageType = receiveMessageContentType.GetProperty("DeclaredMessageType").Name;
-            MetadataStore.AddAttributeTable(builder.CreateTable());
-
-            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) => new ArgumentAccessor[]
-            {
-                new ArgumentAccessor
-                {
-                    Getter = (ownerActivity) =>
-                    {
-                        ReceiveReply receiveReply = (ReceiveReply)ownerActivity;
-                        ReceiveMessageContent content = receiveReply.Content as ReceiveMessageContent;
-                        return content != null ? content.Message : null;
-                    },
-                    Setter = (ownerActivity, arg) =>
-                    {
-                        ReceiveReply receiveReply = (ReceiveReply)ownerActivity;
-                        ReceiveMessageContent content = receiveReply.Content as ReceiveMessageContent;
-                        if (content != null)
-                        {
-                            content.Message = arg as OutArgument;
-                        }
-                    },
-                },
-            };
-            ActivityArgumentHelper.RegisterAccessorsGenerator(receiveType, argumentAccessorGenerator);
-        }
-
-        public ReceiveReplyDesigner()
-        {
-            InitializeComponent();
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            base.OnModelItemChanged(newItem);
-            if (null != this.ModelItem)
-            {
-                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
-            }
-        }
-
-        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            if (string.Equals(e.PropertyName, Message))
-            {
-                ReceiveMessageContent messageContent = ((ReceiveReply)this.ModelItem.GetCurrentValue()).Content as ReceiveMessageContent;
-                this.ModelItem.Properties[DeclaredMessageType].SetValue(null == messageContent ? null : messageContent.Message.ArgumentType);
-            }
-        }
-
-        void OnDefineButtonClicked(object sender, RoutedEventArgs args)
-        {
-            using (EditingScope scope = this.Context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(StringResourceDictionary.Instance.GetString("editReceiveContent"), true))
-            {
-                if (ReceiveContentDialog.ShowDialog(this.ModelItem, this.Context, this))
-                {
-                    scope.Complete();
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyValidationFeature.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ReceiveReplyValidationFeature.cs
deleted file mode 100644 (file)
index 578a8b7..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Runtime;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Validation;
-    using System.Activities.Validation;
-    using System.Collections.Generic;
-    using System.Activities;
-    using System.Activities.Statements;
-    using System.Globalization;
-
-    class ReceiveReplyValidationFeature : DesignTimeValidationFeature
-    {
-        List<Constraint> constraints;
-
-        protected override Type ApplyTo
-        {
-            get { return typeof(ReceiveReply); }
-        }
-
-        protected override IList<Constraint> DesignTimeConstraints
-        {
-            get
-            {
-                if (this.constraints == null)
-                {
-                    this.constraints = new List<Constraint> { UnrootedRequestRule() };
-                }
-                return this.constraints;
-            }
-        }
-
-        Constraint UnrootedRequestRule()
-        {
-            DelegateInArgument<ReceiveReply> receiveReply = new DelegateInArgument<ReceiveReply>();
-            DelegateInArgument<ValidationContext> context = new DelegateInArgument<ValidationContext>();
-            DelegateInArgument<Activity> activityInTree = new DelegateInArgument<Activity>();
-            Variable<bool> requestInTree = new Variable<bool> { Default = false };
-
-            return new Constraint<ReceiveReply>
-            {
-                Body = new ActivityAction<ReceiveReply, ValidationContext>
-                {
-                    Argument1 = receiveReply,
-                    Argument2 = context,
-                    Handler = new Sequence
-                    {
-                        Variables = { requestInTree },
-                        Activities =
-                        {
-                            new If
-                            {
-                                Condition = new InArgument<bool>(ctx => receiveReply.Get(ctx).Request != null),
-                                Then = new Sequence
-                                {
-                                    Activities = 
-                                    {
-                                        new ForEach<Activity>
-                                        {
-                                            Values = new GetWorkflowTree
-                                            {
-                                                ValidationContext = context,
-                                            },
-                                            Body = new ActivityAction<Activity>
-                                            {
-                                                Argument = activityInTree,
-                                                Handler = new If
-                                                {
-                                                    Condition = new InArgument<bool>(ctx => activityInTree.Get(ctx) == receiveReply.Get(ctx).Request),
-                                                    Then = new Assign<bool>
-                                                    {
-                                                        To = requestInTree,
-                                                        Value = true,
-                                                    }                                                    
-                                                }
-                                            }
-                                        },                            
-                                        new AssertValidation
-                                        {                                
-                                            Assertion = new InArgument<bool>(ctx => requestInTree.Get(ctx)),
-                                            IsWarning = false,
-                                            Message = new InArgument<string>(ctx => string.Format(CultureInfo.CurrentCulture, System.Activities.Core.Presentation.SR.UnrootedRequestInReceiveReply, receiveReply.Get(ctx).DisplayName))
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            };
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentDialog.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentDialog.xaml.cs
deleted file mode 100644 (file)
index 1954b73..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Hosting;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.View;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Windows;
-    using System.Windows.Input;
-
-    partial class SendContentDialog : WorkflowElementDialog
-    {
-        public static readonly DependencyProperty ViewModelProperty =
-            DependencyProperty.Register("ViewModel", typeof(ContentDialogViewModel<SendMessageContent, SendParametersContent>), typeof(SendContentDialog));
-
-        SendContentDialog()
-        {
-            InitializeComponent();
-        }
-
-        [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors",
-            Justification = "This values must be set before this constructor complete to ensure ShowOkCancel() can consume that immediately")]
-        SendContentDialog(ModelItem activity, EditingContext context, DependencyObject owner)
-            : this()
-        {
-            this.ModelItem = activity;
-            this.Context = context;
-            this.HelpKeyword = HelpKeywords.MessageContentDialog;
-            this.Owner = owner;
-            this.ViewModel = new ContentDialogViewModel<SendMessageContent, SendParametersContent>(this.ModelItem);
-            if (!this.Context.Items.GetValue<ReadOnlyState>().IsReadOnly)
-            {
-                this.OnOk = this.ViewModel.OnOk;
-            }
-        }
-
-        public ContentDialogViewModel<SendMessageContent, SendParametersContent> ViewModel
-        {
-            get { return (ContentDialogViewModel<SendMessageContent, SendParametersContent>)GetValue(ViewModelProperty); }
-            set { SetValue(ViewModelProperty, value); }
-        }
-
-        public static bool ShowDialog(ModelItem activity, EditingContext context, DependencyObject owner)
-        {
-            return new SendContentDialog(activity, context, owner).ShowOkCancel();
-        }
-
-        void OnDynamicArgumentDesignerLoaded(object sender, RoutedEventArgs args)
-        {
-            ((DynamicArgumentDesigner)sender).ParentDialog = this;
-        }
-
-        void OnExpressionTextBoxLoaded(object sender, RoutedEventArgs args)
-        {
-            ((ExpressionTextBox)sender).IsIndependentExpression = true;
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentPropertyEditor.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendContentPropertyEditor.cs
deleted file mode 100644 (file)
index de6c8ed..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Windows;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.Converters;
-    using System.Activities.Presentation.View;
-
-    sealed class SendContentPropertyEditor : DialogPropertyValueEditor
-    {
-        public SendContentPropertyEditor()
-        {
-            this.InlineEditorTemplate = (DataTemplate)MessagingContentPropertyEditorResources.GetResources()["SendContentPresenter_InlineEditorTemplate"];
-        }
-
-        public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)
-        {
-            ModelPropertyEntryToModelItemConverter converter = new ModelPropertyEntryToModelItemConverter();
-            ModelPropertyEntryToModelItemConverter.Container container = (ModelPropertyEntryToModelItemConverter.Container)converter.Convert(propertyValue, null, null, null);
-            SendContentDialog.ShowDialog(container.ModelItem, container.Context, container.WorkflowViewElement);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendDesigner.xaml.cs
deleted file mode 100644 (file)
index a90e089..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using Microsoft.VisualBasic.Activities;
-    using System;
-    using System.Activities;
-    using System.Activities.Core.Presentation;
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Activities.Presentation.View;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Globalization;
-    using System.Reflection;
-    using System.Windows;
-    using System.Windows.Input;
-    using System.Windows.Media;
-    using System.Runtime;
-    using System.Activities.Presentation.Services;
-    using System.Activities.Expressions;
-
-    partial class SendDesigner
-    {
-        const string CorrelationsCategoryLabelKey = "correlationsCategoryLabel";
-        const string EndpointCategoryLabelKey = "endpointCategoryLabel";
-        const string MiscellaneousCategoryLabelKey = "miscellaneousCategoryLabel";
-        const string AdvancedCategoryLabelKey = "advancedCategoryLabel";
-        static string CorrelationHandleTypeNamespace = typeof(CorrelationHandle).Namespace;
-        static string Message;
-        static string Action;
-        static string DeclaredMessageType;
-
-        public static readonly RoutedCommand CreateReceiveReplyCommand = new RoutedCommand("CreateReceiveReply", typeof(SendDesigner));
-
-        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline,
-            Justification = "PropertyValueEditors association needs to be done in the static constructor.")]
-        static SendDesigner()
-        {
-            AttributeTableBuilder builder = new AttributeTableBuilder();
-            Type sendType = typeof(Send);
-
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("CorrelationInitializers"), PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
-
-            var categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(CorrelationsCategoryLabelKey));
-            var descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingCorrelatesWithHint", "Correlation handle"));
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("CorrelatesWith"), categoryAttribute, descriptionAttribute);
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("CorrelationInitializers"), categoryAttribute, BrowsableAttribute.Yes,
-                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
-
-            categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(EndpointCategoryLabelKey));
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("Endpoint"), categoryAttribute, new TypeConverterAttribute(typeof(ExpandableObjectConverter)));
-            descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingEndpointAddressHint", "<Address>"));
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("EndpointAddress"), categoryAttribute, descriptionAttribute);
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("EndpointConfigurationName"), categoryAttribute);
-
-            categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(MiscellaneousCategoryLabelKey));
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("DisplayName"), categoryAttribute);
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("OperationName"), categoryAttribute);
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("ServiceContractName"), categoryAttribute, new TypeConverterAttribute(typeof(XNameConverter)));
-            descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingValueHint", "<Value to bind>"));
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("Content"), categoryAttribute, descriptionAttribute, PropertyValueEditor.CreateEditorAttribute(typeof(SendContentPropertyEditor)));
-
-            var advancedAttribute = new EditorBrowsableAttribute(EditorBrowsableState.Advanced);
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("Action"), advancedAttribute, categoryAttribute);
-            builder.AddCustomAttributes(
-                sendType,
-                "KnownTypes",
-                advancedAttribute,
-                categoryAttribute,
-                PropertyValueEditor.CreateEditorAttribute(typeof(TypeCollectionPropertyEditor)),
-                new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.AllowDuplicate, Value = false });
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("ProtectionLevel"), advancedAttribute, categoryAttribute);
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("SerializerOption"), advancedAttribute, categoryAttribute);
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("TokenImpersonationLevel"), advancedAttribute, categoryAttribute);
-
-            Action = sendType.GetProperty("Action").Name;
-
-            Type sendMessageContentType = typeof(SendMessageContent);
-            Message = sendMessageContentType.GetProperty("Message").Name;
-            DeclaredMessageType = sendMessageContentType.GetProperty("DeclaredMessageType").Name;
-            MetadataStore.AddAttributeTable(builder.CreateTable());
-
-            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) => new ArgumentAccessor[]
-            {
-                new ArgumentAccessor
-                {
-                    Getter = (ownerActivity) =>
-                    {
-                        Send send = (Send)ownerActivity;
-                        SendMessageContent content = send.Content as SendMessageContent;
-                        return content != null ? content.Message : null;
-                    },
-                    Setter = (ownerActivity, arg) =>
-                    {
-                        Send send = (Send)ownerActivity;
-                        SendMessageContent content = send.Content as SendMessageContent;
-                        if (content != null)
-                        {
-                            content.Message = arg as InArgument;
-                        }
-                    },
-                },
-            };
-            ActivityArgumentHelper.RegisterAccessorsGenerator(sendType, argumentAccessorGenerator);
-        }
-
-        public SendDesigner()
-        {
-            InitializeComponent();
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            base.OnModelItemChanged(newItem);
-            if (null != this.ModelItem)
-            {
-                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
-            }
-        }
-
-        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            if (string.Equals(e.PropertyName, Message))
-            {
-                SendMessageContent messageContent = ((Send)this.ModelItem.GetCurrentValue()).Content as SendMessageContent;
-                this.ModelItem.Properties[DeclaredMessageType].SetValue(null == messageContent ? null : messageContent.Message.ArgumentType);
-            }
-        }
-
-        protected override void OnReadOnlyChanged(bool isReadOnly)
-        {
-            this.txtOperationName.IsReadOnly = isReadOnly;
-        }
-
-        void OnCreateReceiveReplyExecute(object sender, ExecutedRoutedEventArgs e)
-        {
-            ModelItem container;
-            ModelItem flowStepContainer;
-
-            using (ModelEditingScope scope = this.ModelItem.BeginEdit((string)this.FindResource("createReceiveReplyDescription")))
-            {
-                //special case handling for Sequence
-                if (this.ModelItem.IsItemInSequence(out container))
-                {            
-                    //get activities collection
-                    ModelItemCollection activities = container.Properties["Activities"].Collection;
-                    //get index of Send within collection and increment by one
-                    int index = activities.IndexOf(this.ModelItem) + 1;
-                    //insert created reply just after the Send
-                    activities.Insert(index, SendDesigner.CreateReceiveReply(container, this.ModelItem));                 
-                }
-                //special case handling for Flowchart
-                else if (this.ModelItem.IsItemInFlowchart(out container, out flowStepContainer))
-                {
-                    Activity replyActivity = SendDesigner.CreateReceiveReply(container, this.ModelItem);
-                    FlowchartDesigner.DropActivityBelow(this.ViewStateService, this.ModelItem, replyActivity, 30);
-                }
-                else
-                {
-                    ErrorReporting.ShowAlertMessage(string.Format(CultureInfo.CurrentUICulture, System.Activities.Core.Presentation.SR.CannotPasteSendReplyOrReceiveReply, typeof(ReceiveReply).Name));
-                }
-                scope.Complete();
-            }            
-            //always copy reply to clipboard            
-            Func<ModelItem, object, object> callback = CreateReceiveReply;
-            CutCopyPasteHelper.PutCallbackOnClipBoard(callback, typeof(ReceiveReply), this.ModelItem);
-            e.Handled = true;
-        }
-
-        static ReceiveReply CreateReceiveReply(ModelItem target, object context)
-        {
-            ReceiveReply reply = null;
-            ModelItem send = (ModelItem)context;
-            if (null != send)
-            {
-                Send sendInstance = (Send)send.GetCurrentValue();
-                string name = null;
-                //if no correlation is set - create one
-                if (null == sendInstance.CorrelatesWith)
-                {
-                    Variable handleVariable = null;
-                    //first, look for root variable scope
-                    ModelItemCollection variableScope = VariableHelper.FindRootVariableScope(send).GetVariableCollection();
-                    if (null != variableScope)
-                    {
-                        ModelItemCollection correlations = send.Properties["CorrelationInitializers"].Collection;
-                        bool hasRequestReplyHandle = false;
-                        foreach (ModelItem item in correlations)
-                        {
-                            if (item.ItemType.IsAssignableFrom(typeof(RequestReplyCorrelationInitializer)))
-                            {
-                                hasRequestReplyHandle = true;
-                                break;
-                            }
-                        }
-
-                        if (!hasRequestReplyHandle)
-                        {
-                            //create unique variable name
-                            name = variableScope.CreateUniqueVariableName("__handle", 1);
-                            //create variable
-                            handleVariable = Variable.Create(name, typeof(CorrelationHandle), VariableModifiers.None);
-                            //add it to the scope
-                            variableScope.Add(handleVariable);
-                            //setup correlation
-                            ImportDesigner.AddImport(CorrelationHandleTypeNamespace, send.GetEditingContext());                            
-                            VariableValue<CorrelationHandle> expression = new VariableValue<CorrelationHandle> { Variable = handleVariable };
-                            InArgument<CorrelationHandle> handle = new InArgument<CorrelationHandle>(expression);
-                            correlations.Add(new RequestReplyCorrelationInitializer { CorrelationHandle = handle });
-                        }
-                    }
-                }
-                //create receive reply
-                reply = new ReceiveReply()
-                {
-                    DisplayName = string.Format(CultureInfo.CurrentUICulture, "ReceiveReplyFor{0}", send.Properties["DisplayName"].ComputedValue),
-                    Request = (Send)send.GetCurrentValue(),
-                };
-            }
-            else
-            {
-                MessageBox.Show(
-                    (string)StringResourceDictionary.Instance["sendActivityCreateReplyErrorLabel"] ?? "Source 'Send' element not found!",
-                    (string)StringResourceDictionary.Instance["MessagingActivityTitle"] ?? "Send",
-                    MessageBoxButton.OK, MessageBoxImage.Error);
-            }
-            return reply;
-        }
-
-        void OnDefineButtonClicked(object sender, RoutedEventArgs args)
-        {
-            using (EditingScope scope = this.Context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(StringResourceDictionary.Instance.GetString("editSendContent"), true))
-            {
-                if (SendContentDialog.ShowDialog(this.ModelItem, this.Context, this))
-                {
-                    scope.Complete();
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyDesigner.xaml.cs
deleted file mode 100644 (file)
index 449ce20..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System;
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Runtime;
-    using System.Windows;
-    using System.Windows.Input;
-    using System.Activities;
-
-    partial class SendReplyDesigner
-    {
-        const string CorrelationsCategoryLabelKey = "correlationsCategoryLabel";
-        const string EndpointCategoryLabelKey = "endpointCategoryLabel";
-        const string MiscellaneousCategoryLabelKey = "miscellaneousCategoryLabel";
-        const string AdvancedCategoryLabelKey = "advancedCategoryLabel";
-        static string Message;
-        static string Action;
-        static string DeclaredMessageType;
-
-        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline,
-            Justification = "PropertyValueEditors association needs to be done in the static constructor.")]
-        static SendReplyDesigner()
-        {
-            AttributeTableBuilder builder = new AttributeTableBuilder();
-            Type sendType = typeof(SendReply);
-
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("CorrelationInitializers"), PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
-
-            var categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(CorrelationsCategoryLabelKey));
-
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("CorrelationInitializers"), categoryAttribute, BrowsableAttribute.Yes,
-                PropertyValueEditor.CreateEditorAttribute(typeof(CorrelationInitializerValueEditor)));
-
-            categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(MiscellaneousCategoryLabelKey));
-
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("DisplayName"), categoryAttribute);
-            var descriptionAttribute = new DescriptionAttribute(StringResourceDictionary.Instance.GetString("messagingValueHint", "<Value to bind>"));
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("Content"), categoryAttribute, descriptionAttribute, PropertyValueEditor.CreateEditorAttribute(typeof(SendContentPropertyEditor)));
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("Request"),
-                categoryAttribute,
-                PropertyValueEditor.CreateEditorAttribute(typeof(ActivityXRefPropertyEditor)));
-
-            var advancedAttribute = new EditorBrowsableAttribute(EditorBrowsableState.Advanced);
-            builder.AddCustomAttributes(sendType, sendType.GetProperty("Action"), categoryAttribute, advancedAttribute);
-
-            Action = sendType.GetProperty("Action").Name;
-
-            Type sendMessageContentType = typeof(SendMessageContent);
-            Message = sendMessageContentType.GetProperty("Message").Name;
-            DeclaredMessageType = sendMessageContentType.GetProperty("DeclaredMessageType").Name;
-
-            MetadataStore.AddAttributeTable(builder.CreateTable());
-
-            Func<Activity, IEnumerable<ArgumentAccessor>> argumentAccessorGenerator = (activity) => new ArgumentAccessor[]
-            {
-                new ArgumentAccessor
-                {
-                    Getter = (ownerActivity) =>
-                    {
-                        SendReply sendReply = (SendReply)ownerActivity;
-                        SendMessageContent content = sendReply.Content as SendMessageContent;
-                        return content != null ? content.Message : null;
-                    },
-                    Setter = (ownerActivity, arg) =>
-                    {
-                        SendReply sendReply = (SendReply)ownerActivity;
-                        SendMessageContent content = sendReply.Content as SendMessageContent;
-                        if (content != null)
-                        {
-                            content.Message = arg as InArgument;
-                        }
-                    },
-                },
-            };
-            ActivityArgumentHelper.RegisterAccessorsGenerator(sendType, argumentAccessorGenerator);
-        }
-
-        public SendReplyDesigner()
-        {
-            InitializeComponent();
-        }
-
-        protected override void OnModelItemChanged(object newItem)
-        {
-            base.OnModelItemChanged(newItem);
-            if (null != this.ModelItem)
-            {
-                this.ModelItem.PropertyChanged += OnModelItemPropertyChanged;
-            }
-        }
-
-        void OnModelItemPropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            if (string.Equals(e.PropertyName, Message))
-            {
-                SendMessageContent messageContent = ((SendReply)this.ModelItem.GetCurrentValue()).Content as SendMessageContent;
-                this.ModelItem.Properties[DeclaredMessageType].SetValue(null == messageContent ? null : messageContent.Message.ArgumentType);
-            }
-        }
-
-        void OnDefineButtonClicked(object sender, RoutedEventArgs args)
-        {
-            using (EditingScope scope = this.Context.Services.GetRequiredService<ModelTreeManager>().CreateEditingScope(StringResourceDictionary.Instance.GetString("editSendContent"), true))
-            {
-                if (SendContentDialog.ShowDialog(this.ModelItem, this.Context, this))
-                {
-                    scope.Complete();
-                }
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyValidationFeature.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/SendReplyValidationFeature.cs
deleted file mode 100644 (file)
index f217d68..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Runtime;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Validation;
-    using System.Activities.Validation;
-    using System.Collections.Generic;
-    using System.Activities;
-    using System.Activities.Statements;
-    using System.Globalization;
-
-    class SendReplyValidationFeature : DesignTimeValidationFeature
-    {
-        List<Constraint> constraints;
-
-        protected override Type ApplyTo
-        {
-            get { return typeof(SendReply); }
-        }
-
-        protected override IList<Constraint> DesignTimeConstraints
-        {
-            get
-            {
-                if (this.constraints == null)
-                {
-                    this.constraints = new List<Constraint> { UnrootedRequestRule() };
-                }
-                return this.constraints;
-            }
-        }
-
-        Constraint UnrootedRequestRule()
-        {
-            DelegateInArgument<SendReply> sendReply = new DelegateInArgument<SendReply>();
-            DelegateInArgument<ValidationContext> context = new DelegateInArgument<ValidationContext>();
-            DelegateInArgument<Activity> activityInTree = new DelegateInArgument<Activity>();
-            Variable<bool> requestInTree = new Variable<bool> { Default = false };
-
-            return new Constraint<SendReply>
-            {
-                Body = new ActivityAction<SendReply, ValidationContext>
-                {
-                    Argument1 = sendReply,
-                    Argument2 = context,
-                    Handler = new Sequence
-                    {
-                        Variables = { requestInTree },
-                        Activities =
-                        {
-                            new If
-                            {
-                                Condition = new InArgument<bool>(ctx => sendReply.Get(ctx).Request != null),
-                                Then = new Sequence
-                                {
-                                    Activities = 
-                                    {
-                                        new ForEach<Activity>
-                                        {
-                                            Values = new GetWorkflowTree
-                                            {
-                                                ValidationContext = context,
-                                            },
-                                            Body = new ActivityAction<Activity>
-                                            {
-                                                Argument = activityInTree,
-                                                Handler = new If
-                                                {
-                                                    Condition = new InArgument<bool>(ctx => activityInTree.Get(ctx) == sendReply.Get(ctx).Request),
-                                                    Then = new Assign<bool>
-                                                    {
-                                                        To = requestInTree,
-                                                        Value = true,
-                                                    }                                                    
-                                                }
-                                            }
-                                        },                            
-                                        new AssertValidation
-                                        {                                
-                                            Assertion = new InArgument<bool>(ctx => requestInTree.Get(ctx)),
-                                            IsWarning = false,
-                                            Message = new InArgument<string>(ctx => string.Format(CultureInfo.CurrentCulture, System.Activities.Core.Presentation.SR.UnrootedRequestInSendReply, sendReply.Get(ctx).DisplayName))
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            };
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ServiceContractImporter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/ServiceContractImporter.cs
deleted file mode 100644 (file)
index 97317b0..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-// <copyright>
-//   Copyright (c) Microsoft Corporation.  All rights reserved.
-// </copyright>
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Hosting;
-    using System.Activities.Presentation.Toolbox;
-    using System.Activities.Presentation.View;
-    using System.Activities.Presentation.Xaml;
-    using System.Activities.Statements;
-    using System.Collections.Generic;
-    using System.Globalization;
-    using System.IO;
-    using System.Linq;
-    using System.Reflection;
-    using System.ServiceModel.Description;
-    using System.Xaml;
-    using System.Xml;
-    using Microsoft.Activities.Presentation.Xaml;
-
-    /// <summary>
-    /// ServiceContractImporter is an activity template generator that generate Receive/ReceiveAndSendReply based on ContractDescription
-    /// </summary>
-    public static class ServiceContractImporter
-    {
-        /// <summary>
-        /// The key used to store the contract type view state.
-        /// </summary>
-        public const string ContractTypeViewStateKey = "contractType";
-
-        private const string ReceiveSuffix = "_Receive";
-        private const string SendReplySuffix = "_SendReply";
-        private const string SendFaultReply = "SendFaultReply";
-        private const string SendFaultReplySuffix = "_" + SendFaultReply;
-        private const string ReceiveAndSendReplySuffix = "_ReceiveAndSendReply";
-
-        /// <summary>
-        /// Gets the filter function for screening out non service contract types.
-        /// </summary>
-        internal static Func<Type, bool> FilterFunction
-        {
-            get
-            {
-                return t => t.IsDefined(typeof(ServiceContractAttribute), true) && !t.IsGenericType;
-            }
-        }
-
-        /// <summary>
-        /// Launch the user interface for developer to pick a contract type.
-        /// </summary>
-        /// <param name="localAssemblyName">The local assembly name.</param>
-        /// <param name="referencedAssemblies">The list of referenced assembly names.</param>
-        /// <param name="editingContext">The editing context.</param>
-        /// <returns>The contract type selected by user or null if user cancels.</returns>
-        public static Type SelectContractType(AssemblyName localAssemblyName, IList<AssemblyName> referencedAssemblies, EditingContext editingContext)
-        {
-            AssemblyContextControlItem assemblyContextControlItem = new AssemblyContextControlItem { LocalAssemblyName = localAssemblyName, ReferencedAssemblyNames = referencedAssemblies };
-            TypeBrowser typeBrowser = new TypeBrowser(assemblyContextControlItem, editingContext, FilterFunction);
-            bool? dialogResult = typeBrowser.ShowDialog(/* owner = */ null);
-            if (dialogResult.HasValue && dialogResult.Value)
-            {
-                return typeBrowser.ConcreteType;
-            }
-            else
-            {
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Generate activity templates based on contract
-        /// </summary>
-        /// <param name="contractType">The contract type</param>
-        /// <returns>The list of all activity templates, each represent an operation.</returns>
-        public static IEnumerable<ActivityTemplateFactoryBuilder> GenerateActivityTemplates(Type contractType)
-        {
-            if (contractType == null)
-            {
-                throw FxTrace.Exception.ArgumentNull("contractType");
-            }
-
-            ContractDescription contract = null;
-            try
-            {
-                contract = ContractDescription.GetContract(contractType);
-            }
-            catch (InvalidOperationException e)
-            {
-                if (e.InnerException != null)
-                {
-                    throw new InvalidOperationException(e.Message + Environment.NewLine + Environment.NewLine + e.InnerException.GetType().ToString() + Environment.NewLine + e.InnerException.Message, e);
-                }
-                else
-                {
-                    throw;
-                }
-            }
-            
-            // 
-            if (contract.Operations != null)
-            {
-                foreach (OperationDescription operation in contract.Operations)
-                {
-                    Activity generatedActivity = GenerateActivity(operation);
-
-                    WorkflowViewStateService.SetViewState(
-                        generatedActivity,
-                        new Dictionary<string, object>
-                        {
-                             { ContractTypeViewStateKey, contractType },
-                        });
-                    yield return new ActivityTemplateFactoryBuilder
-                    {
-                        Name = contractType.Name + "." + generatedActivity.DisplayName,
-                        TargetType = generatedActivity.GetType(),
-                        Implementation = generatedActivity,
-                    };
-                }
-            }
-        }
-
-        /// <summary>
-        /// Save the activity template into its XAML representation.
-        /// </summary>
-        /// <param name="activityTemplate">The activity template to be saved.</param>
-        /// <returns>The XAML representation of the activity template.</returns>
-        public static string SaveActivityTemplate(ActivityTemplateFactoryBuilder activityTemplate)
-        {
-            XamlSchemaContext xsc = new XamlSchemaContext();
-            using (XamlReader reader = new XamlObjectReader(activityTemplate, xsc))
-            {
-                using (StringWriter textWriter = new StringWriter(CultureInfo.InvariantCulture))
-                {
-                    using (XmlWriter xmlWriter = XmlWriter.Create(textWriter, new XmlWriterSettings { Indent = true }))
-                    {
-                        using (XamlWriter xamlWriter = new XamlXmlWriter(xmlWriter, xsc))
-                        {
-                            using (ActivityTemplateFactoryBuilderWriter builderWriter = new ActivityTemplateFactoryBuilderWriter(xamlWriter, xsc))
-                            {
-                                XamlServices.Transform(reader, builderWriter);
-                            }
-                        }
-                    }
-
-                    return textWriter.ToString();
-                }
-            }
-        }
-
-        internal static Activity GenerateActivity(OperationDescription operation)
-        {
-            if (operation == null)
-            {
-                throw FxTrace.Exception.ArgumentNull("operation");
-            }
-
-            Receive receive = Receive.FromOperationDescription(operation);
-            receive.DisplayName = receive.OperationName + ReceiveSuffix;
-            IEnumerable<SendReply> faultReplies;
-            SendReply reply = SendReply.FromOperationDescription(operation, out faultReplies);
-            if (reply != null)
-            {
-                reply.DisplayName = receive.OperationName + SendReplySuffix;
-                Variable<CorrelationHandle> handle = new Variable<CorrelationHandle> { Name = "__handle" };
-                receive.CorrelationInitializers.Add(new RequestReplyCorrelationInitializer { CorrelationHandle = new InArgument<CorrelationHandle>(handle) });
-                reply.Request = receive;
-
-                Activity replyActivity = reply;
-
-                Switch<string> replySelector = null;
-                foreach (SendReply faultReply in faultReplies)
-                {
-                    if (replySelector == null)
-                    {
-                        replySelector = new Switch<string>
-                        {
-                            Default = reply
-                        };
-                        replyActivity = replySelector;
-                    }
-
-                    faultReply.Request = receive;
-                    string faultName = faultReply.DisplayName.Substring(0, faultReply.DisplayName.Length - SendFaultReply.Length);
-                    faultReply.DisplayName = receive.OperationName + SendFaultReplySuffix;
-                    replySelector.Cases.Add(faultName, faultReply);
-                }
-
-                return new Sequence
-                {
-                    DisplayName = receive.OperationName + ReceiveAndSendReplySuffix,
-                    Variables = { handle },
-                    Activities = { receive, replyActivity },
-                };
-            }
-            else
-            {
-                return receive;
-            }
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TransactedReceiveScope.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TransactedReceiveScope.xaml.cs
deleted file mode 100644 (file)
index d6de081..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System.Activities.Presentation.Metadata;
-    using System.ComponentModel;
-    using System.ServiceModel.Activities;
-
-    partial class TransactedReceiveScopeDesigner
-    {
-        public TransactedReceiveScopeDesigner()
-        {
-            this.InitializeComponent();
-        }
-
-        public static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            Type type = typeof(TransactedReceiveScope);
-            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(TransactedReceiveScopeDesigner)));
-            builder.AddCustomAttributes(type, type.GetProperty("Body"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Request"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(type, type.GetProperty("Variables"), BrowsableAttribute.No);
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TypeToTreeConverter.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Activities/Presentation/TypeToTreeConverter.cs
deleted file mode 100644 (file)
index 6fb59ad..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-namespace System.ServiceModel.Activities.Presentation
-{
-    using System;
-    using System.Globalization;
-    using System.Linq;
-    using System.Reflection;
-    using System.Windows.Data;
-    using System.Activities.Presentation.Model;
-    using System.Collections;
-    using System.Activities.Core.Presentation;
-    using System.Xml;
-    using System.Runtime.Serialization;
-    using System.Xml.Serialization;
-
-    sealed class TypeToTreeConverter : IValueConverter
-    {
-        object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            Type type = null;
-            if (value is ModelItem)
-            {
-                value = ((ModelItem)value).GetCurrentValue();
-            }
-            if (value is Type)
-            {
-                type = (Type)value;
-            }
-            else if (value is PropertyInfo)
-            {
-                type = ((PropertyInfo)value).PropertyType;
-            }
-            else if (value is FieldInfo)
-            {
-                type = ((FieldInfo)value).FieldType;
-            }
-
-            //1) Dead-ends (not expand any more)
-            //  a. CLR built-in types 
-            //  b. Byte array, DateTime, TimeSpan, GUID, Uri, XmlQualifiedName, XmlElement and XmlNode array [This includes XElement and XNode array from .NET 3.5] 
-            //  c. Enums 
-            //  d. Arrays and Collection classes including List<T>, Dictionary<K,V> and Hashtable(Anything that implements IEnumerable or IDictionary or is an array is treated as a collection)
-            //  e. Types marked with [CollectionDataContract] attribute
-            //2) Show nothing (Xpath generator cannot generate XPath according to member info), but user should be able to manually input query string
-            //  a. Types that implement IXmlSerializable
-            //  b. Types that implement ISerializable.
-            //3) Show all fields  without [NonSerializable] regardless of visibility
-            //  a. Types marked with Serializable attribute
-            //4) Show all [DataMembers]
-            //  a. Types marked with DataContract attribute
-            //5) Show all public fields and properties without [IgnoreDataMember]
-            //  a. Types with none of the above attributes (POCO) but with a default constructor (can be non-public).
-            //
-            //
-            //Priority of those interfaces or attributes:
-            //IXmlSerializable -> ISerializable -> DataContract -> Serializable
-            //Type cannot be Iserializable/IXmlSerializable and have DataContractAttribute attribute.
-            IEnumerable result = null;
-            if ((null != type) && (!ContentCorrelationTypeExpander.IsPrimitiveTypeInXPath(type)))
-            {
-                if (type.GetInterface("IXmlSerializable", false) != null)
-                {
-                    result = null;
-                }
-                else if (type.GetInterface("ISerializable", false) != null)
-                {
-                    result = null;
-                }
-                else if (type.GetCustomAttributes(typeof(DataContractAttribute), false).Length > 0)
-                {
-                    result = type
-                        .GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
-                        .Where(member => member.GetCustomAttributes(typeof(DataMemberAttribute), false).Length > 0)
-                        .OrderBy(member => member.Name);
-                }
-                else if (type.GetCustomAttributes(typeof(SerializableAttribute), false).Length > 0)
-                {
-                    result = type
-                        .GetMembers(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
-                        .Where(member => member.MemberType == MemberTypes.Field && member.GetCustomAttributes(typeof(NonSerializedAttribute), false).Length == 0)
-                        .OrderBy(member => member.Name);
-                }
-                else if (type.GetConstructor(new Type[0] { }) != null)
-                {
-                    result = type
-                        .GetMembers(BindingFlags.Instance | BindingFlags.Public)
-                        .Where(member => (member.MemberType == MemberTypes.Field || member.MemberType == MemberTypes.Property) &&
-                        (member.GetCustomAttributes(typeof(IgnoreDataMemberAttribute), false).Length == 0))
-                        .OrderBy(member => member.Name);
-                }
-            }
-            return result;
-        }
-
-
-        object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
-        {
-            throw FxTrace.Exception.AsError(new NotSupportedException());
-        }
-    }
-}
diff --git a/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Presentation/ServiceDesigner.xaml.cs b/mcs/class/referencesource/System.Activities.Presentation/System.Activities.Core.Presentation/System/ServiceModel/Presentation/ServiceDesigner.xaml.cs
deleted file mode 100644 (file)
index fd39064..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-//----------------------------------------------------------------
-// Copyright (c) Microsoft Corporation.  All rights reserved.
-//----------------------------------------------------------------
-
-namespace System.ServiceModel.Presentation
-{
-    using System.Activities.Core.Presentation.Themes;
-    using System.Activities.Presentation;
-    using System.Activities.Presentation.Metadata;
-    using System.Activities.Presentation.Model;
-    using System.Activities.Presentation.PropertyEditing;
-    using System.ComponentModel;
-    using System.ServiceModel.Activities;
-    using System.ServiceModel.Activities.Presentation;
-
-    partial class ServiceDesigner : IExpandChild
-    {
-        const string MiscellaneousCategoryLabelKey = "miscellaneousCategoryLabel";
-
-        public ServiceDesigner()
-        {
-            InitializeComponent();
-        }
-
-        public ModelItem ExpandedChild
-        {
-            get 
-            {
-                ModelItem modelItemToSelect = null;
-                if (this.ModelItem != null)
-                {
-                    modelItemToSelect = this.ModelItem.Properties["Body"].Value;
-                }
-                return modelItemToSelect;
-            }
-        }
-
-        internal static void RegisterMetadata(AttributeTableBuilder builder)
-        {
-            var serviceType = typeof(WorkflowService);
-            var advancedAttribute = new EditorBrowsableAttribute(EditorBrowsableState.Advanced);
-            var categoryAttribute = new CategoryAttribute(EditorCategoryTemplateDictionary.Instance.GetCategoryTitle(MiscellaneousCategoryLabelKey));
-
-            builder.AddCustomAttributes(serviceType, new DesignerAttribute(typeof(ServiceDesigner)));
-            builder.AddCustomAttributes(serviceType, "Name", new TypeConverterAttribute(typeof(XNameConverter)));
-            builder.AddCustomAttributes(serviceType, serviceType.GetProperty("Endpoints"), BrowsableAttribute.No);
-            builder.AddCustomAttributes(
-                serviceType,
-                "ImplementedContracts", 
-                advancedAttribute, 
-                categoryAttribute, 
-                PropertyValueEditor.CreateEditorAttribute(typeof(TypeCollectionPropertyEditor)), 
-                new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.AllowDuplicate, Value = false },
-                new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.Filter, Value = ServiceContractImporter.FilterFunction },
-                new EditorOptionAttribute { Name = TypeCollectionPropertyEditor.DefaultType, Value = null });
-            builder.AddCustomAttributes(serviceType, serviceType.GetProperty("Body"), BrowsableAttribute.No);
-        }
-    }
-}
index c1c10b8bf640a30fd5916a0a5daf5dd91d653c17..d4ff80cfa99e9f2b59fc212eaa6c0eae9cd6322d 100644 (file)
@@ -10,7 +10,7 @@ namespace System.Activities.Presentation.Annotations
     using System.Activities.Presentation.Model;
     using System.Activities.Presentation.View;
 
-    // This is to workaround a 
+    // This is to workaround a bug that updating ModelItem from outside of ArgumentDesigner/VariableDesigner will not update it.
     internal class NotifyArgumentVariableAnnotationTextChanged : Change
     {
         public ArgumentDesigner ArgumentDesigner { get; set; }
index a8e8f20835c1baeae16dd1a638f955a5c9b9c9c8..cd5a3a4784a0954d48b574ef3b80659e9e5b434e 100644 (file)
@@ -582,7 +582,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing
 
             if (hasKeyboardFocus) 
             {
-                // We just gained keyboard focus.  Make sure we sync up the current property selection
+                // We just gained keyboard focus.  Make sure we [....] up the current property selection
                 // with the keyboard focus, so that navigation works.
                 SynchronizeSelectionFocus(StealFocusMode.OnlyIfCurrentSelectionDoesNotHaveFocusWithin);
             }
index 6a8084d44156f52c07aca0150586a34ed2d5754a..c77f41ffa397d89cd2e56824ef200914e74a18bc 100644 (file)
@@ -15,21 +15,21 @@ namespace System.Activities.Presentation.Internal.PropertyEditing
     using System.Activities.Presentation;
 
     // <summary>
-    // This is a fix for a 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    // This is a fix for a bug in EditModeSwitchButton which lives in System.Activities.Presentation and
+    // which has already been locked as an assembly.  EditModeSwitchButton only responds to MouseDown
+    // events to make sure that the opening of the popup extended editor works correctly.  However,
+    // that means that it will never respond to keyboard or automation events.  To fix it, this class
+    // offers up an attached DP that, when used, hooks into events offered by EditModeSwitchButton
+    // to correct this issue and still have the button do the right thing even if mouse is not involved
+    // in invoking the button.
+    //
+    // This class is associated with every instance of EditModeSwitchButton using a setter in the
+    // EditModeSwitchButton style:
+    //
+    //   &lt;Style TargetType="{x:Type PropertyEditing:EditModeSwitchButton}" BasedOn="{StaticResource {x:Type Button}}"&gt;
+    //     ...
+    //     &lt;Setter Property="Internal:EditModeSwitchButtonKeyboardFix.ApplyFix" Value="True" /&gt;
+    // </summary>
 
     class EditModeSwitchButtonKeyboardFix 
     {
index efa004b05d84fd07af30cc7810f137bc4d89abdd..a9e9e78a4c0046e58c1fd374a561663b5aac19ba 100644 (file)
@@ -24,15 +24,15 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.Editors
         // That information if both returned and cached for future reference.
         //
         // NOTE: This method does not handle structs correctly because it will return FALSE
-        // for struct types, which is incorrect.  However, this 
-
-
-
-
-
-
-
-
+        // for struct types, which is incorrect.  However, this bug has its counter-part in
+        // System.Activities.Presentation.dll where the default NewItemFactory only instantiates
+        // non-struct classes.  Both of these need to be fixed at the same time because
+        // they are used in conjunction.  However, MWD is currently locked.
+        //
+        // </summary>
+        // <param name="type">Type to verify</param>
+        // <returns>True if the specified type is concrete and has a default constructor,
+        // false otherwise.</returns>
         public static bool IsConcreteWithDefaultCtor(Type type) 
         {
 
index 7f7d788b4c131a054f83845cf82a500996493b74..002837b49a84ec0068e19fa674d959d213543fe9 100644 (file)
@@ -711,7 +711,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing
 
         // Hack to deal with {x:Static ...} extensions.  The Cider Markup code currently
         // replaces all StaticExtensions with internal versions of the same class.
-        // Once 
+        // Once bug 100647 is fixed this code can go away.
         private static bool IsStaticExtension(Type type) 
         {
             return type != null && (
index 4278b7356435e7563581d1236dacff5ba9848624..0b4cf1b4b8d28a040dd9a2d4e4081d89cdf700a9 100644 (file)
@@ -13,14 +13,14 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
 
     // <summary>
     // This class contains specific behavior for the Popup associated with PropertyContainer.
-    // Basically, it is a workaround for Windows OS 
-
-
-
-
-
-
-
+    // Basically, it is a workaround for Windows OS bug #1745919.  The "StaysOpen = false" setting
+    // on a Popup does not function as we expect when the Popup is created within another
+    // "StaysOpen = false" popup (or if anything has capture).  What happens is the Popup first
+    // checks if anything has capture, and only takes capture if nothing else has taken it.  But the
+    // StaysOpen behavior is implemented using the capture, so we lose that.  Also, related to that
+    // the Closed event will not be called, so to workaround both of those issues we essentially
+    // re-implement the popup capture grabbing code, except we take capture no matter what.
+    // </summary>
     internal class WorkaroundPopup : Popup
     {
         private bool releasingCapture = false;
index c6d3d6d2ac360d737c17e95a4e262dc25e87133c..efdb0b6da290e44bea7e58e8e9dc70d41e83d2f6 100644 (file)
@@ -54,11 +54,11 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
         // Data for managing expanded state based on a filter.
         private FilterState filterIsEmpty = FilterState.Unknown;
 
-        // garylins 11/15/2006 - This variable has been added to fix 
-
-
-
-
+        // garylins 11/15/2006 - This variable has been added to fix bug 29740.  The real fix is to find
+        // a way to update CategoryContainers expansion state when the Category changes.  The bug comes about
+        // because when UpdateFilter is called from the PI, it fires the FilterUpdated event.  At this time
+        // the CategoryContainer is not yet built out, so it hasn't hooked up to listen to the event and hence
+        // never gets it's filter state related variables updated.
         private bool haveCachedExpanded = false;
         private bool wasAdvancedPinnedBeforeFilter = false;
         private bool wasExpandedBeforeFilter = true;
@@ -375,7 +375,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
                 // ###################################################
 
                 // Bugfix: this condition used to reference editor.Category.AdvancedProperties.Count instead of
-                // editor.unconsumedAdvancedProperties, which is a 
+                // editor.unconsumedAdvancedProperties, which is a bug.
                 if ((editor.unconsumedAdvancedProperties.Count <= 0 && editor.advancedCategoryEditors.Count == 0) || !editor.AdvancedPropertyMatchesFilter)
 
                 // ###################################################
@@ -518,8 +518,8 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
         // CIDER-SPECIFIC CHANGE IN NEED OF PORTING - BEGIN
         // ###################################################
 
-        // This change is a result of 
-
+        // This change is a result of bug 88870.  Blend has this issue
+        // as well and will need to address it soon.
 
         // Original code:
 
index acb18836f3aea07876a1eb1d37e9ca14d1812dd8..f4591eff476921b9ccadc6edbb0c8156339b1a92 100644 (file)
@@ -21,7 +21,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
     internal class PropertyContainerPopup : WorkaroundPopup
     {
         // these events allow Acrylic to implement its workaround for Avalon/MFC interop
-        // focus issues (WinOS 
+        // focus issues (WinOS bug # 1713206)
         public static readonly RoutedCommand OnBeginExtendedEdit = new RoutedCommand("OnBeginExtendedEdit", typeof(PropertyContainerPopup));
         public static readonly RoutedCommand OnEndExtendedEdit = new RoutedCommand("OnEndExtendedEdit", typeof(PropertyContainerPopup));
 
@@ -52,10 +52,10 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
                 DependencyObject potentialDescendant = Mouse.Captured as DependencyObject;
                 if (potentialDescendant != null && owningPropertyContainer.IsAncestorOf(potentialDescendant))
                 {
-                    // v1 38479: This is a mitigation for Windows OS 
-
-
-
+                    // v1 38479: This is a mitigation for Windows OS Bug 1965872.
+                    // Here we force any control which has capture to lose it, though
+                    // this situation can occur in other cases (e.g. via extensibility) but this covers the most
+                    // common cases and is a safe fix.
                     Mouse.Capture(null);
                 }
 
index 9807223c01d7086665e4b3260d2b51e269705213..92992285fa8eaccfe06c6e3383723f1d7a6f5d44 100644 (file)
@@ -70,7 +70,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
 
         public static readonly DependencyProperty ComboBoxLoadingCursorProperty = DependencyProperty.Register("ComboBoxLoadingCursor", typeof(Cursor), typeof(ChoiceEditor), new PropertyMetadata(null));
 
-        // WORKAROUND this property is used in combination with a trigger to kick the combobox when it clears its bindings Avalon 
+        // WORKAROUND this property is used in combination with a trigger to kick the combobox when it clears its bindings Avalon bug: 1756023
         public static readonly DependencyProperty ForceBindingProperty = DependencyProperty.Register("ForceBinding", typeof(bool), typeof(ChoiceEditor), new FrameworkPropertyMetadata(false));
 
 
@@ -924,7 +924,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
         protected override void OnTemplateChanged(ControlTemplate oldTemplate, ControlTemplate newTemplate)
         {
             this.BeginNoCommitInternalValueChangeBlock();
-            // WORKAROUND Turn off bindings on the internal combo while the template is udpating. This works around Avalon 
+            // WORKAROUND Turn off bindings on the internal combo while the template is udpating. This works around Avalon bug: 1756023
             this.ForceBinding = false;
             base.OnTemplateChanged(oldTemplate, newTemplate);
         }
@@ -932,7 +932,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
         public override void OnApplyTemplate()
         {
             base.OnApplyTemplate();
-            // WORKAROUND Force the bindings on our internal combo (if there is one) to update. This works around Avalon 
+            // WORKAROUND Force the bindings on our internal combo (if there is one) to update. This works around Avalon bug: 1756023
             this.ForceBinding = true;
 
             this.EndNoCommitInternalValueChangeBlock();
@@ -992,7 +992,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
 
         private void ItemsSourceChanged()
         {
-            // The collection just changed, so we need to make sure that things are in sync
+            // The collection just changed, so we need to make sure that things are in [....]
 
             // ###################################################
             // CIDER-SPECIFIC CHANGE IN NEED OF PORTING - BEGIN
@@ -1131,7 +1131,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression
 
                             this.Value = newValue;
 
-                            // At this point it is possible that the value that we just set is out of sync with the internal value
+                            // At this point it is possible that the value that we just set is out of [....] with the internal value
                             if (newValue != this.InternalValue)
                             {
                                 this.UpdateInternalValuesFromValue();
index 4fc58c4b9b0fd55e1e98bd93e24c158869a6cecc..d0d06ddf4169018a7621b2550515414facd30d20 100644 (file)
@@ -22,7 +22,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing
     using Microsoft.Win32;
 
     // <summary>
-    // Helper class that is responsible for opening a Microsoft Form that hosts the WPF
+    // Helper class that is responsible for opening a [....] Form that hosts the WPF
     // PropertyValueDialogControl that ultimately hosts a DialogPropertyValueEditor.
     // Both PropertyInspector control as well as PropertyValueDialogControl use this class.
     // </summary>
@@ -71,7 +71,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing
 
         // <summary>
         // Called in response to OpenDialogWindow command firing. The method opens a
-        // Microsoft Form that contains an ElementHost that, in turn, contains
+        // [....] Form that contains an ElementHost that, in turn, contains
         // PropertyValueDialogControl.
         // </summary>
         // <param name="sender"></param>
index 3d7712e3b006d1ce2e9dd5c71ef8404b2ebd1ca0..a9d683bd51c0572dbee1fb932f2ace7629b8715e 100644 (file)
@@ -22,7 +22,7 @@ namespace System.Activities.Presentation.Internal.PropertyEditing
         private const int MaxSearchDepth = 5;
 
         // The maxium wpf visual tree depth
-        // this value should be kept in sync with WPF's limit
+        // this value should be kept in [....] with WPF's limit
         private const int MaxAllowedTreeDepth = 250;
 
         // <summary>
index e779c0c25173dd237a38fb49e1ba7feb4d5e8889..036e3cf883a488f51cf088c1c2669fd61f341627 100644 (file)
@@ -288,17 +288,17 @@ namespace System.Activities.Presentation.Metadata
                 Fx.Assert(objectType != null, "objectType parameter should not be null");
                 Type reflectType = TypeDescriptor.GetReflectionType(objectType);
 
-                // There is a 
-
-
-
-
-
-
-
-
-
-
+                // There is a bug in CLR reflection that does not respect the "inherit"
+                // flag for event or property infos.  Our custom metadata type does respect
+                // this flag and correctly does the right thing.  If the object type we
+                // are passed is not a metadata type, just use the default behavior of the
+                // parent member descriptor.  It will be right, and since we're not a metadata
+                // type that means we have no overrides anyway.
+                //
+                // The reason we have to call our type with inherit, instead of just using
+                // one code path is we need to support the interleaving of CLR and 
+                // metadata table attributes up the inheritance hierarchy.  MetadataType 
+                // does that for us.
 
                 if (parentDescriptor != null && !(reflectType is MetadataType))
                 {
index 14cc52fea635b47a851797d6f27ca9e357c279f9..68652bc26b459464b8b33e03890e72b42d8d9fc6 100644 (file)
@@ -61,7 +61,7 @@ namespace System.Activities.Presentation.PropertyEditing {
 
             EditModeSwitchButton theThis = (EditModeSwitchButton) obj;
 
-            // Sync to the owning PropertyContainer only if requested to do so
+            // [....] to the owning PropertyContainer only if requested to do so
             if (!theThis.SyncModeToOwningContainer)
                 return value;
 
index cffc805734f48983f9806689829759265284ff10..34aa3df23d89658d63cb0ce4868164c0b5945bfc 100644 (file)
@@ -21,7 +21,7 @@ namespace System.Activities.Presentation
         public override object ProvideValue(IServiceProvider serviceProvider)
         {
             ResourceDictionary resourceDictionary = null;
-            // disable caching till the wpf mergedictionaries in theme dictionary 
+            // disable caching till the wpf mergedictionaries in theme dictionary bug is fixed.
             if (!Cache.TryGetValue(this.Source, out resourceDictionary))
             {
                 resourceDictionary = new ResourceDictionary();
index 4a61043615b951a817ca6bd677b37cc1f0768c8b..a4b11aaf0f0223a0d13cc0d03d6440eba96797a1 100644 (file)
@@ -159,7 +159,7 @@ namespace System.Activities.Presentation.Hosting
                 {
                     this.hwndSource = HwndSource.FromHwnd(this.ParentWindowHwnd);
                 }
-                //if didn't succeed - (either handle is null or we are hosted in Microsoft app)
+                //if didn't succeed - (either handle is null or we are hosted in [....] app)
                 //try to create hwnd source out of designer's view 
                 if (null == this.hwndSource)
                 {
index 4b4ca979b9663b12d647b5ac46038f396eb04dcf..8be4b90438e9ecc7008d634784aae6d974e21f9e 100644 (file)
@@ -751,7 +751,7 @@ namespace System.Activities.Presentation.Model
 
                 if (updateInstance)
                 {
-                    //no need to sync if the ItemsCollection is not DictionaryItemsCollection wrapped by ModelItemCollectionImpl
+                    //no need to [....] if the ItemsCollection is not DictionaryItemsCollection wrapped by ModelItemCollectionImpl
                     ModelItemCollectionImpl itemsCollectionImpl = this.ItemsCollectionModelItemCollection as ModelItemCollectionImpl;
                     if (ItemsCollectionObject != null && itemsCollectionImpl != null)
                     {
@@ -810,7 +810,7 @@ namespace System.Activities.Presentation.Model
                 IList removed = this.modelItems.ToList<KeyValuePair<ModelItem, ModelItem>>();
                 if (updateInstance)
                 {
-                    //no need to sync if the ItemsCollection is not DictionaryItemsCollection wrapped by ModelItemCollectionImpl
+                    //no need to [....] if the ItemsCollection is not DictionaryItemsCollection wrapped by ModelItemCollectionImpl
                     ModelItemCollectionImpl itemsCollectionImpl = this.ItemsCollectionModelItemCollection as ModelItemCollectionImpl;
                     if (ItemsCollectionObject != null && itemsCollectionImpl != null)
                     {
index a2d7921da44ce6f61495891f62e6e3d5110654e2..d3237f8b05bfb024be00007fa7a2bd17f5f73d2f 100644 (file)
@@ -10,7 +10,7 @@ namespace System.Activities.Presentation.Model
 
     // This class provides the implementation for a model property.
     // this intercepts sets /gets to the property and works with modeltreemanager
-    // to keep the xaml in sync.
+    // to keep the xaml in [....].
 
     class ModelPropertyImpl : ModelProperty
     {
index 693ff4dd581c16ab284390273b819980720e91e1..9298aff978ae74937101561d1d073df67ac031eb 100644 (file)
@@ -556,7 +556,7 @@ namespace System.Activities.Presentation.View
             DataGridHelper.OnEditingControlUnloaded(sender, args);
         }
 
-        // This is to workaround a 
+        // This is to workaround a bug that updating ModelItem from outside of ArgumentDesigner will not update ArgumentDesigner.
         internal void NotifyAnnotationTextChanged()
         {
             foreach (object item in this.argumentsDataGrid.Items)
index 87a7e2377f444f1a9d3e968eea4712dd89d269cd..f2db4694ff9d1b15e98490f182c09b77a3984aaa 100644 (file)
@@ -185,7 +185,7 @@ namespace System.Activities.Presentation.View
             e.Handled = true;
         }
 
-        //Hook KeyDown event on DataGrid row to workaround DataGrid 
+        //Hook KeyDown event on DataGrid row to workaround DataGrid bug with customized NewItemPlaceHolder        
         void OnDataGridRowKeyDown(object sender, KeyEventArgs e)
         {
             if (e.Handled)
@@ -519,8 +519,8 @@ namespace System.Activities.Presentation.View
 
         void OnAddNewRowGotFocus(object sender, RoutedEventArgs e)
         {
-            //When tab over the last row, the last column won't get commit by default, which is a 
-
+            //When tab over the last row, the last column won't get commit by default, which is a bug of DataGrid with
+            //customized new place holder template. Call commit explicitly here to workaround this issue
             this.CommitDataGrid();
             this.dataGrid.SelectedItem = null;
         }
index 012a9c67abffe324536f5500c75689f6b80c9871..e6497e158d4c741c4f744da068319e4d8ea83579 100644 (file)
@@ -176,7 +176,7 @@ namespace System.Activities.Presentation.View
             set { SetValue(ExplicitCommitProperty, value); }
         }
 
-        //Microsoft 
+        //[....] 
         public IExpressionEditorService ExpressionEditorService
         {
             [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
index 75c8e441c1a3fd4dc4050c1771f5fad489f434cb..fb36c50cf3bff86331fc4debc3b34b29e6643c7a 100644 (file)
@@ -105,7 +105,7 @@ namespace System.Activities.Presentation.View
 
             if (isValid)
             {
-                //Work around TFS 
+                //Work around TFS bug #825815, in some cases, XamlMember.IsNameValid returns true but it's not valid Xml Name.
                 try
                 {
                     XmlConvert.VerifyName(name);
index 39209221c9b25711a8deb41745605fe934c22696..91dc3737a34199d122e4c417c8c606bb5056e14d 100644 (file)
@@ -566,7 +566,7 @@ namespace System.Activities.Presentation.View
             DataGridHelper.OnEditingControlUnloaded(sender, args);
         }
 
-        // This is to workaround a 
+        // This is to workaround a bug that updating ModelItem from outside of VariableDesigner will not update VariableDesigner.
         internal void NotifyAnnotationTextChanged()
         {
             foreach (object item in this.variableDataGrid.Items)
@@ -1232,7 +1232,7 @@ namespace System.Activities.Presentation.View
                                 {
                                     variable.Default = morphedExpression;
                                 }
-                                //Microsoft 
+                                //[....] 
 
                             }
                         }
index 2f6a69db290011b842dacd31660a25429fed0cf0..e76ba7c02cd5b0dd5b8119480f79567e0013cde9 100644 (file)
@@ -446,9 +446,9 @@ namespace System.Activities.Presentation
                 {
                     this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (Action)(() =>
                     {
-                        // check for Item == null, we found an interesting 
-
-
+                        // check for Item == null, we found an interesting bug, where the user 
+                        // could drop something in here, and undo the change before the code below
+                        // could execute
                         if (this.Item != null)
                         {
                             UIElement view = (UIElement)(this.Item.View);
@@ -817,9 +817,9 @@ namespace System.Activities.Presentation
 
         // NOTE: This wrapper method is exclusively called by TransitionDesigner, because
         // WIP of Transition.Action would handle the event if the dragged source comes from
-        // WIP of Transition.Trigger (see 
-
-
+        // WIP of Transition.Trigger (see Bug 201342).  However, Auto-Surround spacer is usually
+        // handled in DragEnter handler of WIP, and other ActivityDesigner should not need to 
+        // access this method directly.
         internal void ShowSpacerHelperOnDraggedItems(DragEventArgs arg)
         {
             this.spacerHelper.OnWfItemPresenterPreviewDragEnter(this, arg);
index e3c674e4d16b12527e787f001a151d5c54922a1e..19dd93267764a99cda675deb586878df6ba5896f 100644 (file)
@@ -195,7 +195,7 @@ namespace System.Activities.Presentation.Xaml
             this.lineNumber = lineNumber;
             this.linePosition = linePosition;
 
-            // But we also need to keep it in sync with the nodestream, for XOW errors
+            // But we also need to keep it in [....] with the nodestream, for XOW errors
             // XOW and XamlNodeQueue.Writer both implement IXamlLineInfoConsumer, so we can do a straight cast
             if (this.rootFragment.HasError)
             {
index 8e14dae3e3a763020c0663a79770ce5d80fb6bfa..7f024e602031029d3f8e52b6ae78bc5316458036 100644 (file)
@@ -82,7 +82,7 @@ namespace System.Activities.Presentation.Xaml
                     if (viewStateSrcLocation != null)
                     {
                         // In some cases duplicated key is possible, use indexer instead of Add() to avoid throw. 
-                        // See TFS 
+                        // See TFS bug 523908 for detailed information
                         viewStateSourceLocationToModelItemMapping[viewStateSrcLocation] = modelItem;
                     }
                 }
index 87412dd83758895688ad6a3367e78eef5d2f7a7f..36717244851978baec70fe20e8308e19ad8c165c 100644 (file)
@@ -681,7 +681,7 @@ namespace System.Activities.Debugger
             [SecurityCritical]
             void InitDynamicModule(string asmName)
             {
-                // See http://blogs.msdn.com/Microsoft/archive/2005/02/03/366429.aspx for a simple example
+                // See http://blogs.msdn.com/[....]/archive/2005/02/03/366429.aspx for a simple example
                 // of debuggable reflection-emit.
                 Fx.Assert(dynamicModule == null, "can only be initialized once");
 
index 417960427bfc30cc142d10ff973cd735255bf300..b9cf8fe7e52450ceff6d1c34154cba802c4c505e 100644 (file)
@@ -1921,7 +1921,7 @@ namespace System.Activities.Runtime
                 return Scheduler.Continue;
             }
 
-            // We only check this in the sync path because there are no ways of changing the keys collections from the work items that can
+            // We only check this in the [....] path because there are no ways of changing the keys collections from the work items that can
             // go async.  There's an assert to this effect in FinishWorkItem.
             if (this.bookmarkScopeManager != null && this.bookmarkScopeManager.HasKeysToUpdate)
             {
index c4983a022b0aa6ce40d5476cd746b40ad98c3cc7..7c4cae273d7c086b7eea3130c0505037cb15b778 100644 (file)
@@ -599,7 +599,7 @@ namespace System.Activities.Runtime
             }
 
             // We need to null this out once we've recreated the dictionary to avoid
-            // having out of sync data
+            // having out of [....] data
             this.rawDeserializedLists = null;
 
             // then walk our instance list, fixup parent references, and perform basic validation
index 432dd9efc81a06fed31ac487f991090f3689000c..3819a0e6429f744408aab08e01a97f8d4380a212 100644 (file)
@@ -114,12 +114,12 @@ namespace System.Activities.Statements
                 }
             }
 
-            return BeginMakeMethodCall(context, targetInstance, callback, state); // defer to concrete instance for sync/async variations
+            return BeginMakeMethodCall(context, targetInstance, callback, state); // defer to concrete instance for [....]/async variations
         }
 
         public void EndExecuteMethod(AsyncCodeActivityContext context, IAsyncResult result)
         {
-            EndMakeMethodCall(context, result); // defer to concrete instance for sync/async variations
+            EndMakeMethodCall(context, result); // defer to concrete instance for [....]/async variations
         }
 
         [SuppressMessage("Reliability", "Reliability108:IsFatalRule",
index 5181f4f2a655678665828bdd60ec9d020256bdcf..2a7b1084b33e7e0364d80e313f92efd446cdc7c0 100644 (file)
@@ -355,7 +355,7 @@ namespace System.Activities.Statements
                 {
                     return null;
                 }
-                else // For a regular sync method, ambiguity is distinct from no match and gets an explicit error message
+                else // For a regular [....] method, ambiguity is distinct from no match and gets an explicit error message
                 {
                     throw;
                 }
index b2b16a305dde9fd43c93587cdcd9ebb8c252ace2..2090063250746eae0b7a6eaec193aac86984b785 100644 (file)
@@ -367,7 +367,7 @@ namespace System.Activities
 
                 try
                 {
-                    // The "false" is to notify that we are not still sync
+                    // The "false" is to notify that we are not still [....]
                     done = data.NextCallback(result, thisPtr, false);
                 }
                 catch (Exception e)
@@ -1100,7 +1100,7 @@ namespace System.Activities
             TerminateAsyncResult.End(result);
         }
 
-        // called from the sync and async paths
+        // called from the [....] and async paths
         void CancelCore()
         {
             // We only actually do any work if we haven't completed and we aren't
@@ -3867,7 +3867,7 @@ namespace System.Activities
                 if (this.instance.HasPersistenceProvider && this.instance.persistenceManager.OwnerWasCreated &&
                     (this.operation == PersistenceOperation.Unload || this.operation == PersistenceOperation.Complete))
                 {
-                    // This call uses the ambient transaction directly if there was one, to mimic the sync case.
+                    // This call uses the ambient transaction directly if there was one, to mimic the [....] case.
                     // 
                     IAsyncResult deleteOwnerResult = null;
                     using (PrepareTransactionalCall(this.dependentTransaction))
index 78f8b612763764698a1e0a609c71a7ef0f938c80..d056669a4e9b3d6fbb9ed16d9268c577ba007dbf 100644 (file)
@@ -74,7 +74,7 @@ namespace System.Activities
         {
             // In the interest of allocating less objects we don't implement
             // the full async pattern here.  Instead, we've flattened it to
-            // do the sync part and then optionally delegate down to the inner
+            // do the [....] part and then optionally delegate down to the inner
             // BeginCommit.            
 
             if (this.contextOwnedTransaction != null)
index 6ca7f69ec200c039d404314b009f5effe9d42c88..9334dd3bdee76087f24f05d7ea50516de8c225f0 100644 (file)
@@ -158,7 +158,7 @@ namespace System.Activities.XamlIntegration
                     {
                         literalValue = (T)(object)text;
                     }
-                    else if (text == string.Empty) // workaround for System.Runtime.Xaml 
+                    else if (text == string.Empty) // workaround for System.Runtime.Xaml bug
                     {
                         literalValue = default(T);
                     }
index 7c6c97de6eac0166a40c00f1f292a4f24782d56f..fbee8ee31e7796478fc243dbff64a348801ab26a 100644 (file)
@@ -566,8 +566,8 @@ namespace System.Activities.XamlIntegration
             }
 
             // GetXamlNamespaces is a superset of PreferredXamlNamespace, it's not a must for the above code
-            // to check for preferredXamlNamespace, but since the old code uses .Contains(), which was a minor 
-
+            // to check for preferredXamlNamespace, but since the old code uses .Contains(), which was a minor bug,
+            // we decide to use StartsWith in new code and keep the old code for back compatible reason.
             IList<string> namespaces = xamlType.GetXamlNamespaces();
             foreach (string ns in namespaces)
             {
index 93e08a34957c6c29cc651e342660a96548d20edd..900d81509fc574c6687abed3bc0d89fcd3c53e18 100644 (file)
@@ -27,7 +27,7 @@ namespace System.Activities.XamlIntegration
             consumer.SetLineInfo(lineNumber, linePosition);
         }
         
-        // This method is a workaround for TFS 
+        // This method is a workaround for TFS bug #788190, since XamlReader.ReadSubtree() should (but doesn't) preserve IXamlLineInfo on the subreader
         public static void Transform(XamlReader reader, XamlWriter writer, IXamlLineInfo readerLineInfo, bool closeWriter)
         {
             IXamlLineInfoConsumer consumer = writer as IXamlLineInfoConsumer;
diff --git a/mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AppContextDefaultValues.Default.cs b/mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AppContextDefaultValues.Default.cs
new file mode 100644 (file)
index 0000000..118df8b
--- /dev/null
@@ -0,0 +1,35 @@
+// <copyright>
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+namespace System
+{
+    using System;
+    using System.ComponentModel.DataAnnotations;
+
+    internal static partial class AppContextDefaultValues
+    {
+        static partial void PopulateDefaultValuesPartial(string platformIdentifier, string profile, int version)
+        {
+            // When defining a new switch  you should add it to the last known version.             
+            // For instance, if you are adding a switch in .NET 4.6 (the release after 4.5.2) you should defined your switch             
+            // like this:             
+            //    if (version <= 40502) ...             
+            // This ensures that all previous versions of that platform (up-to 4.5.2) will get the old behavior by default             
+            // NOTE: When adding a default value for a switch please make sure that the default value is added to ALL of the existing platforms!             
+            // NOTE: When adding a new if statement for the version please ensure that ALL previous switches are enabled (ie. don't use else if) 
+            switch (platformIdentifier)
+            {
+                case ".NETCore":
+                case ".NETFramework":
+                    {
+                        if (version <= 40600)
+                        {
+                            LocalAppContextSwitches.SetDefaultsLessOrEqual_46();
+                        }
+
+                        break;
+                    }
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AppSettings.cs b/mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/AppSettings.cs
new file mode 100644 (file)
index 0000000..9ad899a
--- /dev/null
@@ -0,0 +1,48 @@
+//------------------------------------------------------------------------------
+// <copyright file="AppSettings.cs" company="Microsoft">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+//------------------------------------------------------------------------------
+
+// AppSettings.cs
+//
+
+using System;
+using System.Collections.Specialized;
+using System.Configuration;
+using System.Diagnostics.CodeAnalysis;
+
+namespace System.ComponentModel.DataAnnotations {
+    internal static class AppSettings {
+        private static volatile bool _settingsInitialized = false;
+        private static object _appSettingsLock = new object();
+        private static void EnsureSettingsLoaded() {
+            if (!_settingsInitialized) {
+                lock (_appSettingsLock) {
+                    if (!_settingsInitialized) {
+                        NameValueCollection settings = null;
+
+                        try {
+                            settings = ConfigurationManager.AppSettings;
+                        }
+                        catch (ConfigurationErrorsException) { }
+                        finally {
+                            if (settings == null || !Boolean.TryParse(settings["dataAnnotations:dataTypeAttribute:disableRegEx"], out _disableRegEx))
+                                _disableRegEx = false;
+
+                            _settingsInitialized = true;
+                        }
+                    }
+                }
+            }
+        }
+
+        private static bool _disableRegEx;
+        internal static bool DisableRegEx {
+            get {
+                EnsureSettingsLoaded();
+                return _disableRegEx;
+            }
+        }
+    }
+}
index 745a00398fbffb07c9425c0a8cc76cb5e462ddaf..1e809619dc8d0e227d946821e3895c1bad1c7b92 100644 (file)
@@ -8,7 +8,7 @@
 
         // This attribute provides server-side email validation equivalent to jquery validate,
         // and therefore shares the same regular expression.  See unit tests for examples.
-        private static Regex _regex = new Regex(@"^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
+        private static Regex _regex = CreateRegEx();
 
         public EmailAddressAttribute()
             : base(DataType.EmailAddress) {
             }
 
             string valueAsString = value as string;
-            return valueAsString != null && _regex.Match(valueAsString).Length > 0;
+
+            // Use RegEx implementation if it has been created, otherwise use a non RegEx version.
+            if (_regex != null) { 
+                return valueAsString != null && _regex.Match(valueAsString).Length > 0;
+            }
+            else {
+                int atCount = 0;
+                
+                foreach (char c in valueAsString) {
+                    if (c == '@') {
+                        atCount++;
+                    }
+                }
+
+                return (valueAsString != null
+                && atCount == 1
+                && valueAsString[0] != '@'
+                && valueAsString[valueAsString.Length - 1] != '@');
+            }
+        }
+
+        private static Regex CreateRegEx() {
+            // We only need to create the RegEx if this switch is enabled.
+            if (AppSettings.DisableRegEx) {
+                return null;
+            }
+
+            const string pattern = @"^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$";
+            const RegexOptions options = RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture;
+
+            // Set explicit regex match timeout, sufficient enough for email parsing
+            // Unless the global REGEX_DEFAULT_MATCH_TIMEOUT is already set
+            TimeSpan matchTimeout = TimeSpan.FromSeconds(2);
+
+            try {
+                if (AppDomain.CurrentDomain.GetData("REGEX_DEFAULT_MATCH_TIMEOUT") == null) {
+                    return new Regex(pattern, options, matchTimeout);
+                }
+            }
+            catch {
+                // Fallback on error
+            }
+
+            // Legacy fallback (without explicit match timeout)
+            return new Regex(pattern, options);
         }
     }
 }
diff --git a/mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/LocalAppContextSwitches.cs b/mcs/class/referencesource/System.ComponentModel.DataAnnotations/DataAnnotations/LocalAppContextSwitches.cs
new file mode 100644 (file)
index 0000000..20b80cf
--- /dev/null
@@ -0,0 +1,28 @@
+// <copyright>
+// Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+namespace System.ComponentModel.DataAnnotations {
+    using System;
+    using System.Runtime.CompilerServices;
+
+    // When adding a quirk, name it such that false is new behavior and true is old behavior.
+    // You are opting IN to old behavior. The new behavior is default.
+    // For example, we don't want to use legacy regex timeout for RegularExpressionAttribute in 4.6.1+.
+    // So we set UseLegacyRegExTimeout to true if running 4.6 or less.
+    internal static class LocalAppContextSwitches {
+        private const string UseLegacyRegExTimeoutString = "Switch.System.ComponentModel.DataAnnotations.RegularExpressionAttribute.UseLegacyRegExTimeout";
+        private static int useLegacyRegExTimeout;
+
+        public static bool UseLegacyRegExTimeout {
+            [MethodImpl(MethodImplOptions.AggressiveInlining)]
+            get {
+                return LocalAppContext.GetCachedSwitchValue(UseLegacyRegExTimeoutString, ref useLegacyRegExTimeout);
+            }
+        }
+
+        public static void SetDefaultsLessOrEqual_46() {
+            // Define the switches that should be true for 4.6 or less, false for 4.6.1+.
+            LocalAppContext.DefineSwitchDefault(UseLegacyRegExTimeoutString, true);
+        }
+    }
+}
index 95e7db7f2beed453ec8de1d810ab36f9d24d9278..eaeb3ba5edc2df2fd6fe4b67f3461c6f33234ab5 100644 (file)
@@ -26,9 +26,9 @@ namespace System.ComponentModel.DataAnnotations {
 
         public override bool IsReadOnly {
             get {
-                // Dev10 
-
-
+                // Dev10 Bug 594083
+                // It's not enough to call the wrapped _descriptor because it does not know anything about
+                // new attributes passed into the constructor of this class.
                 return _isReadOnly || _descriptor.IsReadOnly;
             }
         }
index bbd8c9759753bb43bccb1b6b94bac0568c70be3a..597862d7b22cf54151c1cb389def8091a72d0fb0 100644 (file)
@@ -6,7 +6,8 @@
     [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
     public sealed class PhoneAttribute : DataTypeAttribute {
         // see unit tests for examples
-        private static Regex _regex = new Regex(@"^(\+\s?)?((?<!\+.*)\(\+?\d+([\s\-\.]?\d+)?\)|\d+)([\s\-\.]?(\(\d+([\s\-\.]?\d+)?\)|\d+))*(\s?(x|ext\.?)\s?\d+)?$", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
+        private static Regex _regex = CreateRegEx();
+        private const string _additionalPhoneNumberCharacters = "-.()";
 
         public PhoneAttribute()
             : base(DataType.PhoneNumber) {
             }
 
             string valueAsString = value as string;
-            return valueAsString != null && _regex.Match(valueAsString).Length > 0;
+
+            // Use RegEx implementation if it has been created, otherwise use a non RegEx version.
+            if (_regex != null) { 
+                return valueAsString != null && _regex.Match(valueAsString).Length > 0;
+            }
+            else {
+                if (valueAsString == null) {
+                    return false;
+                }
+
+                valueAsString = valueAsString.Replace("+", string.Empty).TrimEnd();
+                valueAsString = RemoveExtension(valueAsString);
+
+                bool digitFound = false;
+                foreach (char c in valueAsString) {
+                    if (Char.IsDigit(c)) {
+                        digitFound = true;
+                        break;
+                    }
+                }
+
+                if (!digitFound) {
+                    return false;
+                }
+
+                foreach (char c in valueAsString)
+                {
+                    if (!(Char.IsDigit(c) 
+                        || Char.IsWhiteSpace(c)
+                        || _additionalPhoneNumberCharacters.IndexOf(c) != -1)) {
+                        return false;
+                    }
+                }
+                return true;
+            }
+        }
+
+        private static Regex CreateRegEx() {
+            // We only need to create the RegEx if this switch is enabled.
+            if (AppSettings.DisableRegEx) {
+                return null;
+            }
+
+            const string pattern = @"^(\+\s?)?((?<!\+.*)\(\+?\d+([\s\-\.]?\d+)?\)|\d+)([\s\-\.]?(\(\d+([\s\-\.]?\d+)?\)|\d+))*(\s?(x|ext\.?)\s?\d+)?$";
+            const RegexOptions options = RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture;
+            
+            // Set explicit regex match timeout, sufficient enough for phone parsing
+            // Unless the global REGEX_DEFAULT_MATCH_TIMEOUT is already set
+            TimeSpan matchTimeout = TimeSpan.FromSeconds(2);
+            
+            try {
+                if (AppDomain.CurrentDomain.GetData("REGEX_DEFAULT_MATCH_TIMEOUT") == null) {
+                    return new Regex(pattern, options, matchTimeout);
+                }
+            }
+            catch {
+                // Fallback on error
+            }
+            
+            // Legacy fallback (without explicit match timeout)
+            return new Regex(pattern, options);
+        }
+
+        private static string RemoveExtension(string potentialPhoneNumber) {
+            int lastIndexOfExtension = potentialPhoneNumber
+                .LastIndexOf("ext.", StringComparison.InvariantCultureIgnoreCase);
+            if (lastIndexOfExtension >= 0)  {
+                string extension = potentialPhoneNumber.Substring(lastIndexOfExtension + 4);
+                if (MatchesExtension(extension)) {
+                    return potentialPhoneNumber.Substring(0, lastIndexOfExtension);
+                }
+            }
+
+            lastIndexOfExtension = potentialPhoneNumber
+                .LastIndexOf("ext", StringComparison.InvariantCultureIgnoreCase);
+            if (lastIndexOfExtension >= 0) {
+                string extension = potentialPhoneNumber.Substring(lastIndexOfExtension + 3);
+                if (MatchesExtension(extension)) {
+                    return potentialPhoneNumber.Substring(0, lastIndexOfExtension);
+                }
+            }
+
+
+            lastIndexOfExtension = potentialPhoneNumber
+                .LastIndexOf("x", StringComparison.InvariantCultureIgnoreCase);
+            if (lastIndexOfExtension >= 0) {
+                string extension = potentialPhoneNumber.Substring(lastIndexOfExtension + 1);
+                if (MatchesExtension(extension)) {
+                    return potentialPhoneNumber.Substring(0, lastIndexOfExtension);
+                }
+            }
+
+            return potentialPhoneNumber;
+        }
+
+        private static bool MatchesExtension(string potentialExtension)  {
+            potentialExtension = potentialExtension.TrimStart();
+            if (potentialExtension.Length == 0) {
+                return false;
+            }
+
+            foreach (char c in potentialExtension) {
+                if (!Char.IsDigit(c)) {
+                    return false;
+                }
+            }
+
+            return true;
         }
     }
 }
index 482df855208c0be256b3e382a28da1f2d1262a3b..fc5c061b71d6cf328bf412ed8ccbb77bf3263e6e 100644 (file)
@@ -1,4 +1,4 @@
-using System.ComponentModel.DataAnnotations.Resources;
+using System.ComponentModel.DataAnnotations.Resources;
 using System.Diagnostics.CodeAnalysis;
 using System.Globalization;
 using System.Text.RegularExpressions;
@@ -15,6 +15,12 @@ namespace System.ComponentModel.DataAnnotations {
         /// </summary>
         public string Pattern { get; private set; }
 
+        /// <summary>
+        ///     Gets or sets the timeout to use when matching the regular expression pattern (in milliseconds)
+        ///     (-1 means never timeout).
+        /// </summary>
+        public int MatchTimeoutInMilliseconds { get; set; } = GetDefaultTimeout();
+
         private Regex Regex { get; set; }
 
         /// <summary>
@@ -77,13 +83,30 @@ namespace System.ComponentModel.DataAnnotations {
         /// </summary>
         /// <exception cref="ArgumentException"> is thrown if the current <see cref="Pattern"/> cannot be parsed</exception>
         /// <exception cref="InvalidOperationException"> is thrown if the current attribute is ill-formed.</exception>
+        /// <exception cref="ArgumentOutOfRangeException"> thrown if <see cref="MatchTimeoutInMilliseconds" /> is negative (except -1),
+        /// zero or greater than approximately 24 days </exception>
         private void SetupRegex() {
             if (this.Regex == null) {
                 if (string.IsNullOrEmpty(this.Pattern)) {
                     throw new InvalidOperationException(DataAnnotationsResources.RegularExpressionAttribute_Empty_Pattern);
                 }
-                this.Regex = new Regex(this.Pattern);
+                Regex = MatchTimeoutInMilliseconds == -1
+                    ? new Regex(Pattern)
+                    : Regex = new Regex(Pattern, default(RegexOptions), TimeSpan.FromMilliseconds((double)MatchTimeoutInMilliseconds));
+            }
+        }
+
+        /// <summary>
+        /// Returns the default MatchTimeout based on UseLegacyRegExTimeout switch.
+        /// </summary>
+        private static int GetDefaultTimeout() {
+            if (LocalAppContextSwitches.UseLegacyRegExTimeout) {
+                return -1;
             }
+            else {
+                return 2000;
+            }
+
         }
     }
 }
index b77395d107d94d36bd4898fc0b30031ef931dede..a6e061042872baaaddcf748cda026ce9a4a51b60 100644 (file)
@@ -8,7 +8,7 @@
 
         // This attribute provides server-side url validation equivalent to jquery validate,
         // and therefore shares the same regular expression.  See unit tests for examples.
-        private static Regex _regex = new Regex(@"^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
+        private static Regex _regex = CreateRegEx();
 
         public UrlAttribute()
             : base(DataType.Url) {
             }
 
             string valueAsString = value as string;
-            return valueAsString != null && _regex.Match(valueAsString).Length > 0;
+
+            // Use RegEx implementation if it has been created, otherwise use a non RegEx version.
+            if (_regex != null) { 
+                return valueAsString != null && _regex.Match(valueAsString).Length > 0;
+            }
+            else {
+                return valueAsString != null &&
+                (valueAsString.StartsWith("http://", StringComparison.InvariantCultureIgnoreCase)
+                 || valueAsString.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase)
+                 || valueAsString.StartsWith("ftp://", StringComparison.InvariantCultureIgnoreCase));
+            }
+        }
+
+        private static Regex CreateRegEx() {
+            // We only need to create the RegEx if this switch is enabled.
+            if (AppSettings.DisableRegEx) {
+                return null;
+            }
+
+            const string pattern = @"^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$";
+        
+            const RegexOptions options = RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture;
+        
+            // Set explicit regex match timeout, sufficient enough for url parsing
+            // Unless the global REGEX_DEFAULT_MATCH_TIMEOUT is already set
+            TimeSpan matchTimeout = TimeSpan.FromSeconds(2);
+        
+            try {
+                if (AppDomain.CurrentDomain.GetData("REGEX_DEFAULT_MATCH_TIMEOUT") == null) {
+                    return new Regex(pattern, options, matchTimeout);
+                }
+            }
+            catch {
+                // Fallback on error
+            }
+        
+            // Legacy fallback (without explicit match timeout)
+            return new Regex(pattern, options);
         }
     }
 }
diff --git a/mcs/class/referencesource/System.ComponentModel.DataAnnotations/InternalApis/Clr/inc/AppContextDefaultValues.cs b/mcs/class/referencesource/System.ComponentModel.DataAnnotations/InternalApis/Clr/inc/AppContextDefaultValues.cs
new file mode 100644 (file)
index 0000000..8a130a0
--- /dev/null
@@ -0,0 +1,169 @@
+// ==++==
+// 
+//   Copyright (c) Microsoft Corporation.  All rights reserved.
+// 
+// ==--==
+using System;
+using System.Collections.Generic;
+
+namespace System
+{
+    internal static partial class AppContextDefaultValues
+    {
+        public static void PopulateDefaultValues()
+        {
+            string platformIdentifier, profile;
+            int version;
+
+            ParseTargetFrameworkName(out platformIdentifier, out profile, out version);
+
+            // Call into each library to populate their default switches
+            PopulateDefaultValuesPartial(platformIdentifier, profile, version);
+        }
+
+        /// <summary>
+        /// We have this separate method for getting the parsed elements out of the TargetFrameworkName so we can
+        /// more easily support this on other platforms.
+        /// </summary>
+        private static void ParseTargetFrameworkName(out string identifier, out string profile, out int version)
+        {
+            string targetFrameworkMoniker = AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName;
+
+            // If we don't have a TFM then we should default to the 4.0 behavior where all quirks are turned on.
+            if (!TryParseFrameworkName(targetFrameworkMoniker, out identifier, out version, out profile))
+            {
+#if FEATURE_CORECLR
+                if (CompatibilitySwitches.UseLatestBehaviorWhenTFMNotSpecified)
+                {
+                    // If we want to use the latest behavior it is enough to set the value of the switch to string.Empty.
+                    // When the get to the caller of this method (PopulateDefaultValuesPartial) we are going to use the 
+                    // identifier we just set to decide which switches to turn on. By having an empty string as the 
+                    // identifier we are simply saying -- don't turn on any switches, and we are going to get the latest
+                    // behavior for all the switches
+                    identifier = string.Empty;
+                }
+                else
+#endif
+                {
+                    identifier = ".NETFramework";
+                    version = 40000;
+                    profile = string.Empty;
+                }
+            }
+        }
+
+        // This code was a constructor copied from the FrameworkName class, which is located in System.dll.
+        // Parses strings in the following format: "<identifier>, Version=[v|V]<version>, Profile=<profile>"
+        //  - The identifier and version is required, profile is optional
+        //  - Only three components are allowed.
+        //  - The version string must be in the System.Version format; an optional "v" or "V" prefix is allowed
+        private static bool TryParseFrameworkName(String frameworkName, out String identifier, out int version, out String profile)
+        {
+            // For parsing a target Framework moniker, from the FrameworkName class
+            const char c_componentSeparator = ',';
+            const char c_keyValueSeparator = '=';
+            const char c_versionValuePrefix = 'v';
+            const String c_versionKey = "Version";
+            const String c_profileKey = "Profile";
+
+            identifier = profile = string.Empty;
+            version = 0;
+
+            if (frameworkName == null || frameworkName.Length == 0)
+            {
+                return false;
+            }
+
+            String[] components = frameworkName.Split(c_componentSeparator);
+            version = 0;
+
+            // Identifer and Version are required, Profile is optional.
+            if (components.Length < 2 || components.Length > 3)
+            {
+                return false;
+            }
+
+            //
+            // 1) Parse the "Identifier", which must come first. Trim any whitespace
+            //
+            identifier = components[0].Trim();
+
+            if (identifier.Length == 0)
+            {
+                return false;
+            }
+
+            bool versionFound = false;
+            profile = null;
+
+            // 
+            // The required "Version" and optional "Profile" component can be in any order
+            //
+            for (int i = 1; i < components.Length; i++)
+            {
+                // Get the key/value pair separated by '='
+                string[] keyValuePair = components[i].Split(c_keyValueSeparator);
+
+                if (keyValuePair.Length != 2)
+                {
+                    return false;
+                }
+
+                // Get the key and value, trimming any whitespace
+                string key = keyValuePair[0].Trim();
+                string value = keyValuePair[1].Trim();
+
+                //
+                // 2) Parse the required "Version" key value
+                //
+                if (key.Equals(c_versionKey, StringComparison.OrdinalIgnoreCase))
+                {
+                    versionFound = true;
+
+                    // Allow the version to include a 'v' or 'V' prefix...
+                    if (value.Length > 0 && (value[0] == c_versionValuePrefix || value[0] == 'V'))
+                    {
+                        value = value.Substring(1);
+                    }
+                    Version realVersion = new Version(value);
+                    // The version class will represent some unset values as -1 internally (instead of 0).
+                    version = realVersion.Major * 10000;
+                    if (realVersion.Minor > 0)
+                        version += realVersion.Minor * 100;
+                    if (realVersion.Build > 0)
+                        version += realVersion.Build;
+                }
+                //
+                // 3) Parse the optional "Profile" key value
+                //
+                else if (key.Equals(c_profileKey, StringComparison.OrdinalIgnoreCase))
+                {
+                    if (!String.IsNullOrEmpty(value))
+                    {
+                        profile = value;
+                    }
+                }
+                else
+                {
+                    return false;
+                }
+            }
+
+            if (!versionFound)
+            {
+                return false;
+            }
+
+            return true;
+        }
+
+        // This is a partial method. Platforms (such as Desktop) can provide an implementation of it that will read override value
+        // from whatever mechanism is available on that platform. If no implementation is provided, the compiler is going to remove the calls
+        // to it from the code
+        static partial void TryGetSwitchOverridePartial(string switchName, ref bool overrideFound, ref bool overrideValue);
+
+        /// This is a partial method. This method is responsible for populating the default values based on a TFM.
+        /// It is partial because each library should define this method in their code to contain their defaults.
+        static partial void PopulateDefaultValuesPartial(string platformIdentifier, string profile, int version);
+    }
+}
diff --git a/mcs/class/referencesource/System.ComponentModel.DataAnnotations/InternalApis/Clr/inc/LocalAppContext.cs b/mcs/class/referencesource/System.ComponentModel.DataAnnotations/InternalApis/Clr/inc/LocalAppContext.cs
new file mode 100644 (file)
index 0000000..f05b599
--- /dev/null
@@ -0,0 +1,128 @@
+// ==++==
+// 
+//   Copyright (c) Microsoft Corporation.  All rights reserved.
+// 
+// ==--==
+
+// NOTE: This file should not be included in mscorlib. This should only be included in FX libraries that need to provide switches
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Threading;
+
+namespace System
+{
+    internal static partial class LocalAppContext
+    {
+        private delegate bool TryGetSwitchDelegate(string switchName, out bool value);
+
+        private static TryGetSwitchDelegate TryGetSwitchFromCentralAppContext;
+        private static bool s_canForwardCalls;
+
+        private static Dictionary<string, bool> s_switchMap = new Dictionary<string, bool>();
+        private static readonly object s_syncLock = new object();
+
+        private static bool DisableCaching { get; set; }
+
+        static LocalAppContext()
+        {
+            // Try to setup the callback into the central AppContext
+            s_canForwardCalls = SetupDelegate();
+
+            // Populate the default values of the local app context 
+            AppContextDefaultValues.PopulateDefaultValues();
+
+            // Cache the value of the switch that help with testing
+            DisableCaching = IsSwitchEnabled(@"TestSwitch.LocalAppContext.DisableCaching");
+        }
+
+        public static bool IsSwitchEnabled(string switchName)
+        {
+            if (s_canForwardCalls)
+            {
+                bool isEnabledCentrally;
+                if (TryGetSwitchFromCentralAppContext(switchName, out isEnabledCentrally))
+                {
+                    // we found the switch, so return whatever value it has
+                    return isEnabledCentrally;
+                }
+                // if we could not get the value from the central authority, try the local storage.
+            }
+
+            return IsSwitchEnabledLocal(switchName);
+        }
+
+        private static bool IsSwitchEnabledLocal(string switchName)
+        {
+            // read the value from the set of local defaults
+            bool isEnabled, isPresent;
+            lock (s_switchMap)
+            {
+                isPresent = s_switchMap.TryGetValue(switchName, out isEnabled);
+            }
+
+            // If the value is in the set of local switches, reutrn the value
+            if (isPresent)
+            {
+                return isEnabled;
+            }
+
+            // if we could not find the switch name, we should return 'false'
+            // This will preserve the concept of switches been 'off' unless explicitly set to 'on'
+            return false;
+        }
+
+        private static bool SetupDelegate()
+        {
+            Type appContextType = typeof(object).Assembly.GetType("System.AppContext");
+            if (appContextType == null)
+                return false;
+
+            MethodInfo method = appContextType.GetMethod(
+                                            "TryGetSwitch",  // the method name
+                                            BindingFlags.Static | BindingFlags.Public,  // binding flags
+                                            null, // use the default binder
+                                            new Type[] { typeof(string), typeof(bool).MakeByRefType() },
+                                            null); // parameterModifiers - this is ignored by the default binder 
+            if (method == null)
+                return false;
+
+            // Create delegate if we found the method.
+            TryGetSwitchFromCentralAppContext = (TryGetSwitchDelegate)Delegate.CreateDelegate(typeof(TryGetSwitchDelegate), method);
+
+            return true;
+        }
+
+        [MethodImpl(MethodImplOptions.AggressiveInlining)]
+        internal static bool GetCachedSwitchValue(string switchName, ref int switchValue)
+        {
+            if (switchValue < 0) return false;
+            if (switchValue > 0) return true;
+
+            return GetCachedSwitchValueInternal(switchName, ref switchValue);
+        }
+
+        private static bool GetCachedSwitchValueInternal(string switchName, ref int switchValue)
+        {
+            if (LocalAppContext.DisableCaching)
+            {
+                return LocalAppContext.IsSwitchEnabled(switchName);
+            }
+
+            bool isEnabled = LocalAppContext.IsSwitchEnabled(switchName);
+            switchValue = isEnabled ? 1 /*true*/ : -1 /*false*/;
+            return isEnabled;
+        }
+
+        /// <summary>
+        /// This method is going to be called from the AppContextDefaultValues class when setting up the 
+        /// default values for the switches. !!!! This method is called during the static constructor so it does not
+        /// take a lock !!!! If you are planning to use this outside of that, please ensure proper locking.
+        /// </summary>
+        internal static void DefineSwitchDefault(string switchName, bool initialValue)
+        {
+            s_switchMap[switchName] = initialValue;
+        }
+    }
+}
index b816d03ed51410b33d5c65eac7dd32795ad1fed0..c378f1d68b1844752e4d0e3355a78cd210a1c01c 100644 (file)
@@ -3143,17 +3143,17 @@ namespace System.Configuration {
                 locationSubPath = NormalizeLocationSubPath(locationSubPath, xmlUtil);
 
                 // VSWhidbey 535595
-                // See attached email in the 
-
-
-
-
-
-
-
-
-
-
+                // See attached email in the bug.  Basically, we decided to throw if we see one of these
+                // in machine.config or root web.config:
+                //  <location path="." inheritInChildApplications="false" >
+                //  <location inheritInChildApplications="false" >
+                //
+                // To detect whetherewe're machine.config or root web.config, the current fix is to use
+                // Host.IsDefinitionAllowed.  Instead of this we should invent a new method in
+                // IInternalConfigHost to return whether a configPath can be part of an app or not.
+                // But since it's Whidbey RC "Ask Mode" I chose not to do it due to bigger code churn.
+                //
+                // 
                 if (locationSubPath == null &&
                     !inheritInChildApp &&
                     Host.IsDefinitionAllowed(_configPath, ConfigurationAllowDefinition.MachineToWebRoot, ConfigurationAllowExeDefinition.MachineOnly)) {
index 128702ad54233ca698e1808e3896b6a8134bebae..962ac400dcd83e0378813a454abed3666c7f6ba9 100644 (file)
@@ -69,7 +69,7 @@ namespace System.Configuration.Internal {
         [SuppressMessage("Microsoft.Security", "CA2106:SecureAsserts", Justification = "The callers don't leak this information.")]
         static internal string StaticGetStreamNameForConfigSource(string streamName, string configSource) {
             //
-            // Note (Microsoft 7/08/05):
+            // Note ([....] 7/08/05):
             // RemoteWebConfigurationHost also redirects GetStreamNameForConfigSource to this
             // method, and that means streamName is referring to a path that's on the remote
             // machine.  The problem is that Path.GetFullPath will demand FileIOPermission on
index 2d50547362a5f6aa38a3132aa548ebc415c21c34..748bf3a8adf0821c975ec36c1ccbff9159155f05 100644 (file)
@@ -1212,8 +1212,8 @@ namespace System.Configuration {
                                 reader.Read();
                             }
 
-                            // Dev10 
-
+                            // Dev10 bug 687017 - Handle only UTF-16 explicitly, so that handling of other 
+                            // encodings are not affected.
                             if (reader.CurrentEncoding is UnicodeEncoding) {
                                 encoding = reader.CurrentEncoding;
                             }
@@ -1776,7 +1776,7 @@ namespace System.Configuration {
                                         // VSWhidbey 580658: When a section is to be removed, its corresponding file
                                         // input should be cleared as well so this section will be indicated as "moved"
                                         // next time something is added back to the section.  Without marking it as "moved",
-                                        // adding new content to a removed section fails as the 
+                                        // adding new content to a removed section fails as the bug describes.
                                         sectionRecord.RemoveFileInput();
                                     }
                                 }
index 44812b0871637c7c9a982b963a5803322c9330c8..33fd93ca894dad703ea623405c867552507da7dc 100644 (file)
@@ -164,7 +164,7 @@ namespace System.Configuration
                 CspParameters csp = new CspParameters();
                 csp.KeyContainerName = KeyContainerName;
                 csp.KeyNumber = 1;
-                csp.ProviderType = 1; // Dev10 
+                csp.ProviderType = 1; // Dev10 Bug #548719: Explicitly require "RSA Full (Signature and Key Exchange)"
 
                 if (CspProviderName != null && CspProviderName.Length > 0)
                     csp.ProviderName = CspProviderName;
index 2a1989b766c55608f1b46a25668dcef68455d3e1..ef5ba7de9f06d7cc88418a3d4f49c6f6363bc634 100644 (file)
@@ -127,10 +127,10 @@ namespace System.Linq.Expressions {
             Expression getType = Expression.Call(value, typeof(object).GetMethod("GetType"));
             
             // In remoting scenarios, obj.GetType() can return an interface.
-            // But there's a 
-
-
-
+            // But there's a bug in the JIT32's optimized "obj.GetType() ==
+            // typeof(ISomething)" codegen, causing it to always return false.
+            // We workaround the bug by generating different, less optimal IL
+            // if TypeOperand is an interface.
             if (_typeOperand.IsInterface) {
                 var temp = Expression.Parameter(typeof(Type));
                 getType = Expression.Block(new[] { temp }, Expression.Assign(temp, getType), temp);
index 17e79e1bce56f2da37c2aeb97e0d0375aad0fd50..b908bcfadbc3edf1698af04fbedffff60260f2a8 100644 (file)
@@ -110,9 +110,9 @@ namespace System.Linq.Expressions.Compiler {
             sb.Append("$");
             sb.Append(index);
 
-            // There is a 
-
-
+            // There is a bug in Reflection.Emit that leads to 
+            // Unhandled Exception: System.Runtime.InteropServices.COMException (0x80131130): Record not found on lookup.
+            // if there is any of the characters []*&+,\ in the type name and a method defined on the type is called.
             sb.Replace('+', '_').Replace('[', '_').Replace(']', '_').Replace('*', '_').Replace('&', '_').Replace(',', '_').Replace('\\', '_');
 
             name = sb.ToString();
index e7e9dc172542250e671c1dcb931cb339164a7f0d..cb8ef7da1664903aca8989163ec517cb451d6abc 100644 (file)
@@ -291,12 +291,12 @@ namespace System.Linq.Expressions.Compiler {
                 // if it is null, and then call the conversion.
                 //
                 // We cannot fix this in C# but there is no reason why we need to
-                // propagate this 
-
-
-
-
-
+                // propagate this bug into the expression tree API.  Unfortunately
+                // this means that when the C# compiler generates the lambda
+                // (int? i)=>(MyClass)i, we will get different results for converting
+                // that lambda to a delegate directly and converting that lambda to
+                // an expression tree and then compiling it.  We can live with this
+                // discrepancy however.
 
                 if (node.IsLifted && (!node.Type.IsValueType || !node.Operand.Type.IsValueType)) {
                     ParameterInfo[] pis = node.Method.GetParametersCached();
index 638e9ca81355c18ae6384eefbe2702fdc5574674..adcfe75a06027700965c4d477812026d23f3d769 100644 (file)
@@ -73,4 +73,22 @@ namespace Microsoft.Win32.SafeHandles {
             return success;
         }
     }
+
+    /// <summary>
+    ///     SafeHandle for a native BCRYPT_KEY_HANDLE.
+    /// </summary>
+    [SecuritySafeCritical]
+    internal sealed class SafeBCryptKeyHandle : SafeHandleZeroOrMinusOneIsInvalid {
+        internal SafeBCryptKeyHandle(): base(true){ }
+
+        [DllImport("bcrypt.dll")]
+        [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
+        [SuppressUnmanagedCodeSecurity]        
+        internal static extern BCryptNative.ErrorCode BCryptDestroyKey(IntPtr hKey);
+
+        [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
+        protected override bool ReleaseHandle() {
+            return BCryptDestroyKey(handle) == BCryptNative.ErrorCode.Success;
+        }
+    }
 }
index ab3a042e02e5605389fdc0dbc6c0957ad7acb0d9..9e09c9feb6e417b55f1ff2e4253c1375f97de313 100644 (file)
@@ -263,7 +263,7 @@ namespace Microsoft.Win32.SafeHandles {
             T duplicate = new T();
 
             // We need to do this operation in a CER in order to ensure that everybody's state stays consistent
-            // with the current view of the world.  If the state of the various handles gets out of sync, then
+            // with the current view of the world.  If the state of the various handles gets out of [....], then
             // we'll end up leaking since reference counts will not be set up properly.
             RuntimeHelpers.PrepareConstrainedRegions();
             try { }
index cfe9bd24a40c542dbe6220675ddae0758c17cd51..767fdd4cd85476ab1469c7a58f3073fcca8dc5dc 100644 (file)
@@ -28,7 +28,7 @@ namespace System.Diagnostics.Eventing
         [FieldOffset(8)]
         private long m_keywords;
 
-        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "opcode", Justification = "Microsoft: Shipped public in 3.5, breaking change to fix now.")]
+        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "opcode", Justification = "[....]: Shipped public in 3.5, breaking change to fix now.")]
         public EventDescriptor(
                 int id,
                 byte version,
@@ -98,7 +98,7 @@ namespace System.Diagnostics.Eventing
             }
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcode", Justification = "Microsoft: Shipped public in 3.5, breaking change to fix now.")]
+        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcode", Justification = "[....]: Shipped public in 3.5, breaking change to fix now.")]
         public byte Opcode
         {
             get
index 4ec838987c6d48bfd44b6478c38e6dc6bf0a70d9..fe72df7070262f819ba0fa653060aa7edde7c110 100644 (file)
@@ -753,7 +753,7 @@ namespace System.Diagnostics.Eventing{
                     {
                         // If relatedActivityId is Guid.Empty, this is not a real transfer: just call EventWrite().
                         // For pre-Win7 platforms we cannot set the activityId from CorrelationManager
-                        // because we cannot set relatedActivityId to null (Win7 
+                        // because we cannot set relatedActivityId to null (Win7 bug 116784)
                         status = UnsafeNativeMethods.EventWrite (m_regHandle, 
                                                                  ref eventDescriptor, 
                                                                  (uint)argCount, 
index 408bce798c0f76836c8ee4f3cae510ae367dfeae..6515e3d87aaecd6f1eb025957c917d026c50fc31 100644 (file)
@@ -52,7 +52,7 @@ namespace System.Diagnostics.Eventing.Reader {
         internal EventLogHandle renderContextHandleSystem = EventLogHandle.Zero;
         internal EventLogHandle renderContextHandleUser = EventLogHandle.Zero;
 
-        //the dummy sync object for the two contextes.
+        //the dummy [....] object for the two contextes.
         private object syncObject = null;
 
         private string server;
index ce3f4c8d049e1fc1865ccf73f8e6b48476130973..4aa1910d960e101e5477630d8e9c244368fe8882 100644 (file)
@@ -86,7 +86,7 @@ namespace System.Diagnostics.Eventing.Reader {
             }
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcode", Justification = "Microsoft: Shipped public in 3.5, breaking change to fix now.")]
+        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcode", Justification = "[....]: Shipped public in 3.5, breaking change to fix now.")]
         public EventOpcode Opcode {
             get {
                 return new EventOpcode(this.opcode, this.pmReference);
index f930037c34e584b119b851300e643c83775c407d..c597a47c22683842e07f3a15aaf218531c24ec8c 100644 (file)
@@ -20,7 +20,7 @@ using System.Diagnostics.CodeAnalysis;
 namespace System.Diagnostics.Eventing.Reader {
 
     [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
-    [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcode", Justification = "Microsoft: Shipped public in 3.5, breaking change to fix now.")]
+    [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcode", Justification = "[....]: Shipped public in 3.5, breaking change to fix now.")]
     public sealed class EventOpcode {
         private int value;
         private string name;
index c81eb96bfa0eaa4a94183ee8eb3158424f5b0c25..e50e1f0e4934fe8a8668225e4668b3aac58a4cc0 100644 (file)
@@ -30,7 +30,7 @@ namespace System.Diagnostics.Eventing.Reader {
         public abstract byte? Level { get; }
         public abstract int? Task { get; }
 
-        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcode", Justification = "Microsoft: Shipped public in 3.5, breaking change to fix now.")]
+        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcode", Justification = "[....]: Shipped public in 3.5, breaking change to fix now.")]
         public abstract short? Opcode { get; }
         public abstract long? Keywords { get; }
 
@@ -55,7 +55,7 @@ namespace System.Diagnostics.Eventing.Reader {
 
         public abstract string LevelDisplayName { get; }
 
-        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcode", Justification = "Microsoft: Shipped public in 3.5, breaking change to fix now.")]
+        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcode", Justification = "[....]: Shipped public in 3.5, breaking change to fix now.")]
         public abstract string OpcodeDisplayName { get; }
         public abstract string TaskDisplayName { get; }
         public abstract IEnumerable<string> KeywordsDisplayNames { get; }
index b1cf7fc07cb793b4fdaa0147bc96f393624ad0c4..fc82c70583624e7013a0c4970763c4eb0ea6b3ec 100644 (file)
@@ -440,7 +440,7 @@ namespace System.Diagnostics.Eventing.Reader {
             }
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcodes", Justification = "Microsoft: Shipped public in 3.5, breaking change to fix now.")]
+        [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "Opcodes", Justification = "[....]: Shipped public in 3.5, breaking change to fix now.")]
         public IList<EventOpcode> Opcodes {
             get {
                 List<EventOpcode> eo;
index ba1e49453bd1878b3f32951d9e22093f02c58f68..d958460110f82524a2b64e4677aed157d01e4167 100644 (file)
@@ -265,7 +265,7 @@ internal abstract class BufferedStream2 : Stream
             // (either synchronously or asynchronously) before the first one 
             // returns.  This would involve some sort of complex buffer locking
             // that we probably don't want to get into, at least not in V1.
-            // If we did a sync read to fill the buffer, we could avoid the
+            // If we did a [....] read to fill the buffer, we could avoid the
             // problem, and any async read less than 64K gets turned into a
             // synchronous read by NT anyways...       -- 
 
@@ -508,7 +508,7 @@ internal abstract class BufferedStream2 : Stream
 
     // Reading is done by blocks from the file, but someone could read
     // 1 byte from the buffer then write.  At that point, the OS's file
-    // pointer is out of sync with the stream's position.  All write 
+    // pointer is out of [....] with the stream's position.  All write 
     // functions should call this function to preserve the position in the file.
     [MethodImplAttribute(MethodImplOptions.Synchronized)]
     protected void FlushRead() {
index 37b0623d37d0ce3c06c00c48b52ed7550ca856f2..69179635a8e38964543a34c2a4654e3feb846163 100644 (file)
@@ -278,7 +278,7 @@ internal class LogStream : BufferedStream2
         }
 
         if (r == 0) {
-            // We should never silently swallow an error here without some
+            // We should never silently ---- an error here without some
             // extra work.  We must make sure that BeginWriteCore won't return an 
             // IAsyncResult that will cause EndWrite to block, since the OS won't
             // call AsyncFSCallback for us.  
index a88b941d0c718ff3dc3eb99d7b0dffa33b15a67e..98e30f009f58a65fb57b283f928a815ab2c8869f 100644 (file)
@@ -167,7 +167,7 @@ namespace System.IO.MemoryMappedFiles {
 
         }
 
-        // Flushes the changes such that they are in sync with the FileStream bits (ones obtained
+        // Flushes the changes such that they are in [....] with the FileStream bits (ones obtained
         // with the win32 ReadFile and WriteFile functions).  Need to call FileStream's Flush to 
         // flush to the disk.
         // NOTE: This will flush all bytes before and after the view up until an offset that is a multiple
index c79b81dfe1a633999f78cef7987862035e022b19..3df123c5509a26f65453aa6203b6f25607d0c9b9 100644 (file)
@@ -76,7 +76,7 @@ namespace System.IO.MemoryMappedFiles {
             }
         }
 
-        // Flushes the changes such that they are in sync with the FileStream bits (ones obtained
+        // Flushes the changes such that they are in [....] with the FileStream bits (ones obtained
         // with the win32 ReadFile and WriteFile functions).  Need to call FileStream's Flush to 
         // flush to the disk.
         // NOTE: This will flush all bytes before and after the view up until an offset that is a
index c531a45d5ca38cc3804cf80e27287ab465db2a59..283048b069c9c06ceac07bff0294b708235198b6 100644 (file)
@@ -78,7 +78,7 @@ namespace System.IO.MemoryMappedFiles {
             }
         }
 
-        // Flushes the changes such that they are in sync with the FileStream bits (ones obtained
+        // Flushes the changes such that they are in [....] with the FileStream bits (ones obtained
         // with the win32 ReadFile and WriteFile functions).  Need to call FileStream's Flush to 
         // flush to the disk.
         // NOTE: This will flush all bytes before and after the view up until an offset that is a 
index 02018024c39e9e468af71c29dca94df516b1b1e2..d3b913c00ac539a53e21fc76d4af040979d4a18d 100644 (file)
@@ -256,7 +256,7 @@ namespace System.IO.Pipes {
             CheckReadOperations();
 
             if (!m_isAsync) {
-                // special case when this is called for sync broken pipes because otherwise Stream's
+                // special case when this is called for [....] broken pipes because otherwise Stream's
                 // Begin/EndRead hang. Reads return 0 bytes in this case so we can call the user's
                 // callback immediately
                 if (m_state == PipeState.Broken) {
@@ -645,7 +645,7 @@ namespace System.IO.Pipes {
             }
 
             if (r == 0) {
-                // We should never silently swallow an error here without some
+                // We should never silently ---- an error here without some
                 // extra work.  We must make sure that BeginReadCore won't return an 
                 // IAsyncResult that will cause EndRead to block, since the OS won't
                 // call AsyncPSCallback for us.  
@@ -695,7 +695,7 @@ namespace System.IO.Pipes {
             }
 
             if (r == 0) {
-                // We should never silently swallow an error here without some
+                // We should never silently ---- an error here without some
                 // extra work.  We must make sure that BeginWriteCore won't return an 
                 // IAsyncResult that will cause EndWrite to block, since the OS won't
                 // call AsyncPSCallback for us.  
index 66e864ef023e55283c5a5e8012cf81011403b98a..f062ca5e6394c3e981aa5bf8417cf029954e40a0 100644 (file)
@@ -2128,7 +2128,7 @@ namespace System.Linq
 
         internal int InternalGetHashCode(TKey key)
         {
-            //Microsoft DevDivBugs 171937. work around comparer implementations that throw when passed null
+            //[....] DevDivBugs 171937. work around comparer implementations that throw when passed null
             return (key == null) ? 0 : comparer.GetHashCode(key) & 0x7FFFFFFF;
         }
 
@@ -2346,7 +2346,7 @@ namespace System.Linq
 
         internal int InternalGetHashCode(TElement value)
         {
-            //Microsoft DevDivBugs 171937. work around comparer implementations that throw when passed null
+            //[....] DevDivBugs 171937. work around comparer implementations that throw when passed null
             return (value == null) ? 0 : comparer.GetHashCode(value) & 0x7FFFFFFF;
         }
 
index 0024bf3c90cca89a9b43826574573632c9732dfd..d249e8749f3ccae28e83ec93ecbb786b4aef607b 100644 (file)
@@ -7,7 +7,7 @@
 //
 // AsynchronousOneToOneChannel.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 79cdc7a9b01e3b0c4212f7c24199d4f0eb6d9c4f..ac27781a039191045382c9c7db8fac4ade25ba2d 100644 (file)
@@ -7,7 +7,7 @@
 //
 // SynchronousChannel.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 3d560db8ca993cbe697dfb6f541eae150c52dfe0..af69de8aa37ee534cad7c76d1fa78667eaa1e54d 100644 (file)
@@ -7,7 +7,7 @@
 //
 // AggregationMinMaxHelpers.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 0d3335d7d3e516d5e23b6eab1e047d5e45877cb9..56c3c621c83e43e25f54af96e0d0f4ccc964e33d 100644 (file)
@@ -7,7 +7,7 @@
 //
 // EmptyEnumerable.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 6d7ec46c7131c53673e5742b0bba425cb4ee009c..95dbb1e0e65a35f9987d1b5ae7d618477afe0dd2 100644 (file)
@@ -7,7 +7,7 @@
 //
 // EnumerableWrapperWeakToStrong.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 70167618e2d853158522a3b06833312e8db21827..07e4c2a1f5a21e8ea41eb21bc4375b4984a9c6c2 100644 (file)
@@ -7,7 +7,7 @@
 //
 // OrderedParallelQuery.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 31d072f3b071abf8a82c98833e6647b11160e028..8c5fb1912a8bc9cec58c2e1dc3919c0e3fbdcc0e 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ParallelEnumerableWrapper.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index b9a9477a706c926f8f88595144283188fce12eeb..9503c3043f0f0b94ed74e19d53aceaa0b292cd32 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ParallelQuery.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // ParallelQuery is an abstract class that represents a PLINQ query.
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
index 8c58084461349ad3295f6578dd1b4f491627c1ff..1bb58a81f1fb8755ca1229aad91ed230fbf7ea67 100644 (file)
@@ -7,7 +7,7 @@
 //
 // RangeEnumerable.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 6951c939b73df99610613fc923113207134eae0f..1998eabb085c79e2d37b6c090364a3ba1058f07c 100644 (file)
@@ -7,7 +7,7 @@
 //
 // RepeatEnumerable.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index feebc57bf3f53654a5b6579e6f2a90f3664472e2..97559c5fd41317c57f8fae17d11300fa4bc095e7 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ArrayMergeHelper.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
index b76d1e427058dee9b07aa0c9a82e9f9a58ebc102..599f13ae481575cea1c200e504d45fb75a09a789 100644 (file)
@@ -7,7 +7,7 @@
 //
 // AsynchronousChannelMergeEnumerator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index b288fffec1664afe1cf40495c9e763de5cb3ded5..d1115094aa8f6b5d220930483755ecea101f9f5a 100644 (file)
@@ -7,7 +7,7 @@
 //
 // DefaultMergeHelper.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
@@ -32,7 +32,7 @@ namespace System.Linq.Parallel
         private QueryTaskGroupState m_taskGroupState; // State shared among tasks.
         private PartitionedStream<TInputOutput, TIgnoreKey> m_partitions; // Source partitions.
         private AsynchronousChannel<TInputOutput>[] m_asyncChannels; // Destination channels (async).
-        private SynchronousChannel<TInputOutput>[] m_syncChannels; // Destination channels (sync).
+        private SynchronousChannel<TInputOutput>[] m_syncChannels; // Destination channels ([....]).
         private IEnumerator<TInputOutput> m_channelEnumerator; // Output enumerator.
         private TaskScheduler m_taskScheduler; // The task manager to execute the query.
         private bool m_ignoreOutput; // Whether we're enumerating "for effect".
index da0298ce180bccc3600f72da2aafe5d25a055e54..8fac0d62c9ef8236fa900146ce824683dc42d7bd 100644 (file)
@@ -7,7 +7,7 @@
 //
 // MergeEnumerator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 2e0d8d90167141ea09480d8b6a5e890f41763be7..f3136f12e33342b0bc82a6f441799ae74d08542c 100644 (file)
@@ -7,7 +7,7 @@
 //
 // MergeExecutor.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index b7015a48d73edd9f84f33ff3493aee8e27975fc8..d456534525d0e74dc986ee2ee0c82ae1ab575441 100644 (file)
@@ -7,7 +7,7 @@
 //
 // OrderPreservingMergeHelper.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 5da2671db26ecddaba4048dd28ccf8975fbc613a..f9fc2bc490757a41e0cf47d0ff4886d36a8de466 100644 (file)
@@ -7,7 +7,7 @@
 //
 // OrderPreservingPipeliningMergeHelper.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 0bdc6ea7c4c6a7e38c7e45c1d460d64a00ddc639..ba302d4169686cdf8b0a97461eee793f6e487503 100644 (file)
@@ -7,7 +7,7 @@
 //
 // SynchronousChannelMergeEnumerator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 001eb1b3153eb74254b86dac5156824ea179e957..5f8cd482ee83c6bd808b6ecefc541349377294ce 100644 (file)
@@ -7,7 +7,7 @@
 //
 // HashRepartitionEnumerator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 949e4f419749d1377665cd9f4826a4e8e752f949..96aaf2d4ceecb9669667049e6e619b630284f9e7 100644 (file)
@@ -7,7 +7,7 @@
 //
 // HashPartitionedStream.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 35865feb93635dff2ec3f7f8690040e3132c4aeb..39ca3fb03205e155d1518f70dc0b063659dfd104 100644 (file)
@@ -7,7 +7,7 @@
 //
 // OrderedHashRepartitionEnumerator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index dfd79fd68913e9f7e9d6e2103d82230d09bb2663..f12862e8fe8a828bb3a4fc34e1ed56b9f8ded720 100644 (file)
@@ -7,7 +7,7 @@
 //
 // OrderedHashRepartitionStream.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 2f661a9e36f790d5effb0c33770d56c8e34a6d5e..e9f639c79d2993a55173f069f878a271e76c591f 100644 (file)
@@ -7,7 +7,7 @@
 //
 // PartitionedDataSource.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index fc7477fe3b33e5a80750b68f2a2a594f9aff5246..dd6c687fea9384ca67e75004668948e932a193e8 100644 (file)
@@ -7,7 +7,7 @@
 //
 // PartitionedStream.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 7edc4d07da8ae715f0757c54c2cc378a24b58222..b8d1e6be92355329c10f4872f86c89a6b9386475 100644 (file)
@@ -7,7 +7,7 @@
 //
 // UnorderedHashRepartitionStream.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index add046683adf7bac2952ef219e17d7414c313853..6df8e3e6c0833093e06635160fb5d509389a4ec9 100644 (file)
@@ -7,7 +7,7 @@
 //
 // AssociativeAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index c8a8d2206abbc3b9e601af622caa77ed0071b3fc..d84be6b56c20e95e0da73b6f8c05987cd9657152 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ExceptQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 60b6befd6a5add75b81c4e76b53f4f588020a109..a56fe2f6710831b9746a78fa2ab37b9c48adcdb7 100644 (file)
@@ -7,7 +7,7 @@
 //
 // GroupJoinQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index e09d4d92b33702025cc03dfa1784a38d29783d77..88196b526507bcc20892721d3dfdf624fd8f9ea0 100644 (file)
@@ -7,7 +7,7 @@
 //
 // HashJoinQueryOperatorEnumerator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 3ce35c451c420522f242e12db84ef7ec8bdfab66..869795154485e2737906828759ce497bb59a0490 100644 (file)
@@ -7,7 +7,7 @@
 //
 // IntersectQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 9dbd672ec47e7171c71ad77a38363d10d338f12d..a80990550f2f638bc34bf7c470cfc5a0f7ec3d1c 100644 (file)
@@ -7,7 +7,7 @@
 //
 // JoinQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 8251ef549466a7744bdc1a244f215d99f3c569cc..c2d07020d5896115448953dc25dcf7c133519f18 100644 (file)
@@ -7,7 +7,7 @@
 //
 // UnionQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 3465f80d43dfa823e6c758a156b3e64443e98d6b..3b2d74cfdcba3f82532489c412f256d86fce0b7a 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ZipQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 3beed03e1ec4c1c4cc39e12349843414d00968e2..f159f1c257538008092e8c3f2ce854517e174f11 100644 (file)
@@ -7,7 +7,7 @@
 //
 // BinaryQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 95b660b22f5bb9d20575b71798737eae179c2a0b..84ae158c3c818d99d6e3b1f049405de6a8646a6e 100644 (file)
@@ -7,7 +7,7 @@
 //
 // CountAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index d321018d7c05b2135380b069af254e85ef71612b..f7e86aaa2fe478449f07a523d27332356c051bf4 100644 (file)
@@ -7,7 +7,7 @@
 //
 // DecimalAverageAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index eaa22795ffde0f5889def393bbf3b7591fb27c17..55e2f78e88597aec65bf130a009553b693c088f6 100644 (file)
@@ -7,7 +7,7 @@
 //
 // DecimalMinMaxAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 30560fecc3acf056e451d134f1abcf816f12ded6..17d0658b9cd5ffa6451b7f6a90bc63b30619d512 100644 (file)
@@ -7,7 +7,7 @@
 //
 // DecimalSumAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index dba1e1021318f42ffb23a84de7ef75da0e6d7c06..5d6aa8e41a88cc5dbe15bd9f7dd53c91d9bce143 100644 (file)
@@ -7,7 +7,7 @@
 //
 // DoubleAverageAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index a7cd5df658031c6b084af7cbe7c4b2613c6624b7..85c2e84cc2398fd5da03e9e44118ee76f485586b 100644 (file)
@@ -7,7 +7,7 @@
 //
 // DoubleMinMaxAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index b2477cfd7d0dffe1800780dfff799f1f59061425..c464be0957f873b7eb3d2cef2ab988945e9aee39 100644 (file)
@@ -7,7 +7,7 @@
 //
 // DoubleSumAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index d2d294f1f0b05e416b385a47f4e296051e3f2f21..8d310b488b42fd87be919dce982835a5b663023c 100644 (file)
@@ -7,7 +7,7 @@
 //
 // FloatAverageAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 10be7b55eff8caaca8ca7b2a60060d1e42cdfeaf..1cc5d0d25b93be8e222ebf6b02ecb03de0b18dc2 100644 (file)
@@ -7,7 +7,7 @@
 //
 // FloatMinMaxAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index ecf0656a9d27a05d4f39732f172050d7d849a740..03949d7aa0e7fed50eaade8390ef1a51a2d51283 100644 (file)
@@ -7,7 +7,7 @@
 //
 // FloatSumAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 865ccaac7bd941a0fb860c3d253e664a2e57f4d4..31ba533d8cc314d07f70fd4a7473b7b8ca938fa8 100644 (file)
@@ -7,7 +7,7 @@
 //
 // InlinedAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index b53d200df55d6289103fb386f4f9c48f7835e7cf..416844cfbec47356921ec17d73ca979b015e37e5 100644 (file)
@@ -7,7 +7,7 @@
 //
 // InlinedAggregationOperatorEnumerator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 88a779aeb6c89182c862433063ff5da675f8bf13..9733071e8c3b61cc758147289cf4c6a98d011842 100644 (file)
@@ -7,7 +7,7 @@
 //
 // IntAverageAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 469a9034603eaec6e0f176bbeba378368cd4a2e5..5bd686ab5d1a0d4ca22c18d14a64cd1fcbd72eb1 100644 (file)
@@ -7,7 +7,7 @@
 //
 // IntMinMaxAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 28b5048b0c3b4637718f09842b5fa133b4d915b9..f57f4ec529c8cc244aa2e494b756931dfc32b545 100644 (file)
@@ -7,7 +7,7 @@
 //
 // IntSumAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 3de0feed309b27290daabaafcd418515346a9169..61478be33bc4343c85b0623c1e0e2f94ca830973 100644 (file)
@@ -7,7 +7,7 @@
 //
 // LongAverageAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 1c1ecc3a3ad0db680f57bc26e6e1bb03c982827d..4332cee83756b4a2af3cc1972ab941290cbfd7b8 100644 (file)
@@ -7,7 +7,7 @@
 //
 // CountAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index bb45b5b837d1c4130915235c0213f0428f881309..0c7bdfbd8612f49c033b8d91b3e8a28130678301 100644 (file)
@@ -7,7 +7,7 @@
 //
 // LongMinMaxAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index bc29d47ba629cf91bffe1e09247ee52ef2bc5a10..df856cc34bfefafc034c99e15e96fb82549a25cf 100644 (file)
@@ -7,7 +7,7 @@
 //
 // LongSumAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index cdaf0301e9670cb47665693a2334532f9e0be35f..246aa40dcd3072f973d6fa318da16a933cdbe71d 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableDecimalAverageAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index abbacb4e2fc56741fe8894f0b6f0aec8190fd3f7..8d78b129de1ce2d91e8115a88feb2cbfdb2266e4 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableDecimalMinMaxAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 5c32e0cc871d85bc505c2567728901160fb704f5..2602c9eb2eb96ce48cd17e72f36e378bf7d65daa 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableDecimalSumAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 44eb13ad65153098920311f19d84381ab0cc42f3..69b52aaa3737074698b024cb6614945417900667 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableDoubleAverageAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index a2a7fcb3e4a2f1c214622a0e59faf91235cd1690..7b44277649e495824ea176e3262b639696bc2831 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableDoubleMinMaxAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index f1ced299faac117c8fb128eb4718500d294624fe..9f92f75d1ea115b065c06e03752c7daa8d2ab328 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableDoubleSumAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index b33baf58aa3005f8579bec4757e8b24ca1f833eb..2b7c0d4524ab7ad81bd5f57e43518bc957f912a9 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableFloatAverageAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 8180ef53427ab95a27deb9b37c3bc5390a24de68..b1b8064e067ad3ae743a30c2c903f6ea3220ddde 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableFloatMinMaxAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index d4aa289c0f70da4af6cafc5ed68ad4d1b25abce7..d2ea8a423d3d4393a57f310f24a213c8814bb56f 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableFloatSumAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index ea9bcd10da32aa685929c4c4bd0354933cc08f7d..4604a595f5b3f7178679d917d2052013754b333a 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableIntAverageAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 6ff77bd7ed9b9836d7fa56421431365f7a717cb7..5c57d26b0b08dce2c256b8c79fdaec0a17e6d6de 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableIntMinMaxAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 14389d8fc1b7d07dd6582ab254f4305706e39010..c00fdb01d696fa7283eabdf7e9b65fe3727052c6 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableIntSumAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index bacb98750b6695a81fa3c68a7d43bc4e3257e6f7..ddf75c89feeda839f502b35087094e159df7b331 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableLongAverageAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 824bb98a49e386cba77953029f359407607673b5..7d4e369d90c705aa0fa4b90e5637d924dd56e924 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableLongMinMaxAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 313e7c18255a6be166115c60a1b3a25e9269740d..97e53a64eaa091309d3b8146fe02e3df7764d8a2 100644 (file)
@@ -7,7 +7,7 @@
 //
 // NullableLongSumAggregationOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index e55d313c01ddd746206e81501b36f4ff054de784..55069c3b3cfabd82b0d37a218d693a40e39a655f 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ListQueryResults.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 27f7bf886b4c8fe0db754ab48ff82d4302732d87..33baf3f8056e37c2b090c14ede08fa5fb4759382 100644 (file)
@@ -7,7 +7,7 @@
 //
 // OrderingQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 8ddc796458a2d55135eecdf97abb221db8f002e1..1bef24bedac83b7b2b200739d1deece801fab682 100644 (file)
@@ -7,7 +7,7 @@
 //
 // QueryExecutionOption.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 77682f6954e5ba36372362e033a80de10fca5980..282c6cd90c2f7fddbd944babdfe6127d2de32be4 100644 (file)
@@ -7,7 +7,7 @@
 //
 // PartitionedStreamMerger.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 62ed43dba2ccae3d0ea0cff60f66cc77b39d4555..c239cb7e4f4c20411589f21a435cc6675952ca32 100644 (file)
@@ -7,7 +7,7 @@
 //
 // PartitionerQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index c268cf512f8e4a1798f3f631c9ff3597ecdc2fed..570b9e4ab0550ed60d25f1f099fab1858e089e67 100644 (file)
@@ -7,7 +7,7 @@
 //
 // QueryOpeningEnumerator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
@@ -110,7 +110,7 @@ namespace System.Linq.Parallel
             {
                 // To keep the MoveNext method body small, the code that executes first time only is in a separate method.
                 // It appears that if the method becomes too large, we observe a performance regression. This may have
-                // to do with method inlining. See 
+                // to do with method inlining. See bug 706485.
                 OpenQuery();
             }
 
index 60d656c1e029e72bc4d9148afd2047ccee9a35e3..c83015bb314ad556316933008831cd62de9a7c33 100644 (file)
@@ -7,7 +7,7 @@
 //
 // QueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 6f78b8177a515dd87cc9803ecf2c1194abfe08bf..db776f878781648789c8a08ade9bc9d6f1c6cf3a 100644 (file)
@@ -7,7 +7,7 @@
 //
 // QueryOperatorEnumerator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index d062a698ec38f55473c0207ca0617930ac1340a0..cee66591f77fd4dd261a25186d226b19b4e7da3c 100644 (file)
@@ -7,7 +7,7 @@
 //
 // QueryResults.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 8782d8fd0e0967395aed75187ca6900c9d2ca6af..08f410f98218ee3c4b7a99831386325f76715200 100644 (file)
@@ -7,7 +7,7 @@
 //
 // QuerySettings.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
@@ -149,8 +149,8 @@ namespace System.Linq.Parallel
             //Initialize a new QuerySettings structure and copy in the current settings.
             //Note: this has the very important effect of newing a fresh CancellationSettings, 
             //      and _not_ copying in the current internalCancellationSource or topLevelDisposedFlag which should not be 
-            //      propogated to internal query executions. (This affects SelectMany execution and specifically fixes 
-
+            //      propogated to internal query executions. (This affects SelectMany execution and specifically fixes bug:535510)
+            //      The fresh toplevel parameters are used instead.
             QuerySettings settings = new QuerySettings(TaskScheduler, DegreeOfParallelism, CancellationState.ExternalCancellationToken, ExecutionMode, MergeOptions);
 
             Contract.Assert(topLevelCancellationTokenSource != null, "There should always be a top-level cancellation signal specified.");
index 1310302c20824bb34b71f03ee37f5683222dcebc..e70b13e18a94665736d77c81feaf28b9324a530d 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ScanQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 2dc5b284f3c51a0ad338f01c7b0ac3a65601b39a..fd4b201e7c5288bc38e63f4c0aaebf1dbbcf60f0 100644 (file)
@@ -7,7 +7,7 @@
 //
 // AnyAllSearchOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 4f07a9f2ebca1cde716fa8982fc69febbd83e4f3..d55436affb55dc0108c0df5b39eb618478784ce4 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ConcatQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index b417480520bf5d8f3a97ecd003c636dbfccbd2a2..78de1005198b1c97dab25a460e0e41717f2dffcc 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ContainsSearchOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 6611cc28063828095cc38626a5563108a09c8b80..9a03469950e39e057af9bf4a34a489cda3e1bd67 100644 (file)
@@ -7,7 +7,7 @@
 //
 // DefaultIfEmptyQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index fc5ecd5f7ebafb78d8da9bc9b8b031629d85143b..4de47cea4e9c5f7b003b88d7e4a603a3eb69a50e 100644 (file)
@@ -7,7 +7,7 @@
 //
 // DistinctQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 70660e9fc8fa2524dc714e25ecb4f85694fd8dca..0560b753f523c4c4c032017b3e51be82b9861d7f 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ElementAtQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 8181237ca9f2a124dba2b70d4ee8e751654b1b82..38c143c5f13d671922c4d09c18e52628f03866f7 100644 (file)
@@ -7,7 +7,7 @@
 //
 // FirstQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 825d755f494b1ef1a7c72fdf0bf5de075958c7bd..8676104025726bc3f3a23fe56a148559bbec1c76 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ForAllQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index ab4d272540d53113b37283cf03d47382acc32983..ed3b2f440661cfac16e82b0b65f966521e00932d 100644 (file)
@@ -7,7 +7,7 @@
 //
 // GroupByQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 1a304e4598b1f64e8e6e4f7c448a050c0a0f4bc2..f1d0e5ef3e563b186baac460b267fa5c5889cc97 100644 (file)
@@ -7,7 +7,7 @@
 //
 // IndexedSelectQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index fddb99260208ea6abb7d59747cf4eb145ddce86b..a4d65f3cfb6cf8a67f9028f0562a738f942f7556 100644 (file)
@@ -7,7 +7,7 @@
 //
 // IndexedWhereQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index f4a74d0c71af65f5444da8a0803589350eb104f9..8b354de110a09d7571ede3dce7e79e72e08badea 100644 (file)
@@ -7,7 +7,7 @@
 //
 // LastQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 9f4a4eece69bc24d4c6d68555e3e22067920b4d7..d66add1195fffaadbb0e70608d2458070b020060 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ReverseQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 8a4c0f3e7d15261744093f17a5eff07174b52e64..741bb24cd8608c83e83a4424b1dfb20c17be5902 100644 (file)
@@ -7,7 +7,7 @@
 //
 // SelectManyQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 7eaa46765f1532a576c6b5a14fdba24a32f1db53..2301c1d06465226b58809912e6171a384816282b 100644 (file)
@@ -7,7 +7,7 @@
 //
 // SelectQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index c2cb9d451fa96b28bd70e519f8e4ba92ab218c89..d5539ceaf8d3d323b24e92995c8caf846d045f8b 100644 (file)
@@ -7,7 +7,7 @@
 //
 // SingleQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index af64f227ae775e5fe851d7a4b62d2f1d7f8e5835..b73b8bd0829bd908ac8dfd0b5f6d3d59345d1804 100644 (file)
@@ -7,7 +7,7 @@
 //
 // SortQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 67a70ce8f18a54ac154c1079b6a263062de322b4..c0c708a7c388b5c7c0da2cd078bed8e10d9a56ee 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TakeOrSkipQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 64f089adc0186ba5a5a328696e8a0b6d4ddb68f5..a04bf2bfb9c3a95ffd7846e111eeb7c26029cfd9 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TakeOrSkipWhileQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index d447915d871dd348af5d6b10fe11eb0d1c31ca48..3ec343a9f0f8ae08051fa6613340d62cdaa5ce3c 100644 (file)
@@ -7,7 +7,7 @@
 //
 // WhereQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 0baa5ad628d2b8c0fd15fe505037cbe42e61956d..b66aa49f7213377d64a18714dbbd15cd38d7e638 100644 (file)
@@ -7,7 +7,7 @@
 //
 // UnaryQueryOperator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index e84bced8117e78d848e8a1c4ea24ba3cd59f4d3a..c084abb4b7385e3930d37c8e13044b314aaba964 100644 (file)
@@ -7,7 +7,7 @@
 //
 // CancellationState.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A bag of cancellation-related items that are passed around as a group.
 //
index a402e317e92570b00d533332d31854a11c449b85..f1e99baedb4ce522c751ad8098306333091d47c1 100644 (file)
@@ -7,7 +7,7 @@
 //
 // OrderPreservingPipeliningSpoolingTask.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 20c75157119cf153a4e91157ec824423a52f734b..478533db208e36cc0d125ffdcdedf4dbf7465c40 100644 (file)
@@ -7,7 +7,7 @@
 //
 // OrderPreservingSpoolingTask.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 3f0e70731b51d29179c64818b7c3eabad27c3420..92ead1bfb7ffb3fab1f05e724f59eabc5100ebfb 100644 (file)
@@ -7,7 +7,7 @@
 //
 // QueryLifecycle.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A convenient place to put things associated with entire queries and their lifecycle events.
 //
index 7ca188a354f1bec4df01ed9263530ce87d86fb9e..97dc14d53cc4d52cbf7d9a5921cd9d3ca476f1ec 100644 (file)
@@ -7,7 +7,7 @@
 //
 // QueryTask.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
@@ -88,7 +88,7 @@ namespace System.Linq.Parallel
         }
 
         //-----------------------------------------------------------------------------------
-        // Common function called regardless of sync or async execution.  Just wraps some
+        // Common function called regardless of [....] or async execution.  Just wraps some
         // amount of tracing around the call to the real work API.
         //
 
index 9dbc359a725c3ed0fd9217e00841ae9ba8b8564d..f3666afb0683f6fc6da6286ac3c0849815c7dfd9 100644 (file)
@@ -7,7 +7,7 @@
 //
 // QueryTaskGroupState.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
@@ -98,9 +98,9 @@ namespace System.Linq.Parallel
                 // There are four cases:
                 // Case #1: Wait produced an exception that is not OCE(ct), or an AggregateException which is not full of OCE(ct) ==>  We rethrow.
                 // Case #2: External cancellation has been requested ==> we'll manually throw OCE(externalToken).
-                // Case #3a: We are servicing a call to Dispose() (and possibly also external cancellation has been requested).. simply return. See 
-
-
+                // Case #3a: We are servicing a call to Dispose() (and possibly also external cancellation has been requested).. simply return. See bug 695173
+                // Case #3b: The enumerator has already been disposed (and possibly also external cancellation was requested).  Throw an ODE.
+                // Case #4: No exceptions or explicit call to Dispose() by this caller ==> we just return.
 
                 // See also "InlinedAggregationOperator" which duplicates some of this logic for the aggregators.
                 // See also "QueryOpeningEnumerator" which duplicates some of this logic.
@@ -153,7 +153,7 @@ namespace System.Linq.Parallel
                     //   2. tokenCancellationRequested is backed by a volatile field, hence the reads below
                     //   won't get reordered about the read of token.IsCancellationRequested.
 
-                    // If the query has already been disposed, we don't want to throw an OCE (this is a fix for 
+                    // If the query has already been disposed, we don't want to throw an OCE (this is a fix for bug 695173.)
                     if (!m_cancellationState.TopLevelDisposedFlag.Value)
                     {
                         CancellationState.ThrowWithStandardMessageIfCanceled(m_cancellationState.ExternalCancellationToken); // Case #2
index 306b5411b33c943a72caf0addab20797d081046b..f43d3fdd52f168336733a5f6595e43f1a812c2fe 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Scheduling.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Infrastructure for setting up concurrent work, marshaling exceptions, determining
 // the recommended degree-of-parallelism, and so forth.
index a80160150889c9dd8008ebcd1a2b283193743486..ab614a04733e8fb64396a0ed3264bf1b54e9cfd5 100644 (file)
@@ -7,7 +7,7 @@
 //
 // SpoolingTask.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 26d878fe0bcde7ef783c17adb1e6d4ff52f620a5..fdbe37adf1e43efeecd9bab710768c1bd705eebf 100644 (file)
@@ -7,7 +7,7 @@
 //
 // SpoolingTaskBase.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 8eb45c4ba217c9bf084c1743a8a09feec7277473..fc3855ea7beb0695ed704f10cb54c17eeacad1a8 100644 (file)
@@ -7,7 +7,7 @@
 //
 // CancellableEnumerable.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 1a9b354fea25c0d34e7e4d4d30542126c277513e..7423b7edab9f6ce93553b5e69750d8a8100c2fe9 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ExceptionAggregator.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index c52cec2fabf908a09a53f5f85c526ab9d0bb3edf..7df87b5a4cfca78502b087489d18c837c809f7bb 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ExchangeUtilities.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 43547483f5b5958a1943ac8417a30cd1ea4860d9..74f4f6fb636f5a5a571b36c96490b0878da82f7b 100644 (file)
@@ -7,7 +7,7 @@
 //
 // FixedMaxHeap.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index ccb3d1f97a28f1b3f3bea341c8a299d9cb084ecc..7e431a8d215153b1793ed56bd452632de5bb8400 100644 (file)
@@ -7,7 +7,7 @@
 //
 // GrowingArray.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 8251e6c6beafee7dbcf4aee4fe897b603d9b4448..5cbd0bb5e604e98a92f1e2cd5047d5ea6d2d0dee 100644 (file)
@@ -7,7 +7,7 @@
 //
 // HashLookup.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 8ae361044982462fa20c753ea7cca8bfabb60690..2b0b099c6d910703ee06d7c375da8eea211b2736 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ListChunk.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 4b7a65c5cff470e319c0391f36aecd8e21f958da..e3b1561f6165b680fa3d67786ee108e845263248 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Lookup.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index bbfec3cd6e780ec3b428ba8f3e91d3ec833837cb..294a86d542bcb8c6c3ee53b2e611d598d3d04577 100644 (file)
@@ -7,7 +7,7 @@
 //
 // PlinqEtwProvider.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // EventSource for PLINQ.
 //
index 0c8ed3672e0cb5fe00a14f40191aa1a61d5b0216..57ed99389bd8492274e6c787efe85c3883b288c2 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Pair.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index ea0cc96ad1312285e795a111c64ab2a750d3801d..99cf8fd1d65a63e5ad35fab1b9199ef018544f5e 100644 (file)
@@ -7,7 +7,7 @@
 //
 // PairComparer.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index e8e81bd325ad2086c18db85b3ae76e5776cf884a..b9ad3cced19eb2470b3f048d947147891f83781d 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ReverseComparer.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 28da58a616db1dec1455712502f16840e8c6be66..ebe1953110bcfc9a0aa15e42f632956c7cff4b96 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Shared.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index dba1de364e8cd5405a06da297946ee58ac14021c..fb355997295e4dd81c1b737c9e92cfe08bf2e2a2 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Sorting.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Support for sorting.
 //
index 00202eb30bc65962a7ceec91a688ffc891ffa240..5c1ad9f452d850b263adde2d3c6fbb8e0eaa159b 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TraceHelpers.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Common routines used to trace information about execution, the state of things, etc.
 //
index 7ccdf8f5e4a11d8bfded239c0aacef0adba0cd7a..b877250e9b40b1958853d6135398cdbc30f9d850 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Util.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
@@ -33,12 +33,12 @@ namespace System.Linq.Parallel
         }
 
         //-----------------------------------------------------------------------------------
-        // This is a temporary workaround for a VSWhidbey 
-
-
-
-
-
+        // This is a temporary workaround for a VSWhidbey bug 601998 in the X64 JIT compiler.
+        // Unlike the X86 JIT, null checks on value types aren't optimized away in Whidbey.
+        // That means using the GenericComparer<K> infrastructure results in boxing value
+        // types. This kills performance all over the place. This bug has been fixed in
+        // Orcas (2.0 SP1), so once we're on the SP1 runtime, this can be removed.
+        //
 
         internal static Comparer<TKey> GetDefaultComparer<TKey>()
         {
index 4878dedf2b7305116516cf99d0403feff33c731f..c96085b02b3e9fe56fe18044f91baead7565e687 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Wrapper.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index 38fa75ba4bc970ec437505e2a227abbbd99b505b..c2cb403cec4857739e598b9fa179206b5cff7a40 100644 (file)
@@ -7,7 +7,7 @@
 //
 // WrapperEqualityComparer.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
index daa567abe08301e198cbb798412b77cadeb311ff..89dd8d7697b862e21ea5710c23ad7c2d0eb29482 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ParallelEnumerable.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // The standard IEnumerable-based LINQ-to-Objects query provider. This class basically
 // mirrors the System.Linq.Enumerable class, but (1) takes as input a special "parallel
index ebcd614d33243d8f024df8ff65461883e33c5da4..c26925aae8d8822feed0d0973f7da72d685d745d 100644 (file)
@@ -96,7 +96,7 @@ namespace System.Linq {
         // critical (which was the original annotation when porting to silverlight) would violate
         // fxcop security rules if the interface isn't also critical. However, transparent code
         // can't access this anyway for Mix since we're not exposing AsQueryable().
-        // Microsoft: the above assertion no longer holds. Now making AsQueryable() public again
+        // [....]: the above assertion no longer holds. Now making AsQueryable() public again
         // the security fallout of which will need to be re-examined.
         object IQueryProvider.Execute(Expression expression){
             if (expression == null)
index b4cc86876f3af641deec1b91b78795fafb44514a..48a8467961fc1469cf2dc4f686f29c934b992b07 100644 (file)
@@ -13,6 +13,7 @@ using System.Runtime.InteropServices;
 using System.Diagnostics.Contracts;
 using Microsoft.Win32;
 using Microsoft.Win32.SafeHandles;
+using System.Security.Cryptography.X509Certificates;
 
 namespace System.Security.Cryptography {
 
@@ -146,6 +147,9 @@ namespace System.Security.Cryptography {
             public const string Tls = "TLS_PRF";                // BCRYPT_KDF_TLS_PRF
         }
 
+        internal const string BCRYPT_ECCPUBLIC_BLOB = "ECCPUBLICBLOB";
+        internal const string BCRYPT_ECCPRIVATE_BLOB = "ECCPRIVATEBLOB";
+
         /// <summary>
         ///     Well known BCrypt provider names
         /// </summary>
@@ -236,6 +240,22 @@ namespace System.Security.Cryptography {
                                                                          string pszAlgId,             // BCryptAlgorithm
                                                                          string pszImplementation,    // ProviderNames
                                                                          int dwFlags);
+
+            [DllImport("bcrypt.dll", SetLastError = true)]
+            internal static extern ErrorCode BCryptExportKey([In]SafeBCryptKeyHandle hKey,
+                                                             [In]IntPtr hExportKey,
+                                                             [In][MarshalAs(UnmanagedType.LPWStr)] string pszBlobType,
+                                                             [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pbOutput,
+                                                             [In]int cbOutput,
+                                                             [In]ref int pcbResult,
+                                                             [In] int dwFlags);
+
+            [DllImport("Crypt32.dll", SetLastError = true)]
+            internal static extern int CryptImportPublicKeyInfoEx2([In] uint dwCertEncodingType,
+                                                   [In] ref X509Native.CERT_PUBLIC_KEY_INFO pInfo,
+                                                   [In] int dwFlags,
+                                                   [In] IntPtr pvAuxInfo,
+                                                   [Out] out SafeBCryptKeyHandle phKey);
         }
 
         //
@@ -399,5 +419,40 @@ namespace System.Security.Cryptography {
 
             return algorithmHandle;
         }
+
+        [SecuritySafeCritical]
+        internal static SafeBCryptKeyHandle ImportAsymmetricPublicKey(X509Native.CERT_PUBLIC_KEY_INFO certPublicKeyInfo, int dwFlag) {
+            SafeBCryptKeyHandle keyHandle = null;            
+            int error = UnsafeNativeMethods.CryptImportPublicKeyInfoEx2(
+                                                        X509Native.X509_ASN_ENCODING,
+                                                        ref certPublicKeyInfo,
+                                                        dwFlag,
+                                                        IntPtr.Zero,
+                                                        out keyHandle);
+            if (error == 0) {
+                throw new CryptographicException(Marshal.GetLastWin32Error());
+            }
+            return keyHandle;
+        }
+
+        [SecuritySafeCritical]
+        internal static byte[] ExportBCryptKey(SafeBCryptKeyHandle hKey, string blobType) {
+            byte[] keyBlob = null;
+            int length = 0;
+
+            ErrorCode error = UnsafeNativeMethods.BCryptExportKey(hKey, IntPtr.Zero, blobType, null, 0, ref length, 0);
+
+            if (error != ErrorCode.BufferToSmall && error != ErrorCode.Success)
+            {
+                throw new CryptographicException(Marshal.GetLastWin32Error());
+            }
+
+            keyBlob = new byte[length];
+            error = UnsafeNativeMethods.BCryptExportKey(hKey, IntPtr.Zero, blobType, keyBlob, length, ref length, 0);
+            if (error != ErrorCode.Success) {
+                throw new CryptographicException(Marshal.GetLastWin32Error());
+            }
+            return keyBlob;
+        }
     }
 }
index a161a6a186f59fda7436f49a8ff6520281006fac..22fb8b505282c8c34974ef47c336b90df0c1e7ba 100644 (file)
@@ -5,6 +5,7 @@
 // ==--==
 
 using System;
+using System.IO;
 
 namespace System.Security.Cryptography {
     /// <summary>
@@ -44,7 +45,97 @@ namespace System.Security.Cryptography {
         // Signature operations
         //
 
+        // ECDsa does not encode the algorithm identifier into the signature blob, therefore SignHash and VerifyHash
+        // do not need the HashAlgorithmName value, only SignData and VerifyData do.
         public abstract byte[] SignHash(byte[] hash);
         public abstract bool VerifyHash(byte[] hash, byte[] signature);
+
+        protected virtual byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm) {
+            throw DerivedClassMustOverride();
+        }
+
+        protected virtual byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm) {
+            throw DerivedClassMustOverride();
+        }
+
+        public virtual byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm) {
+            if (data == null) {
+                throw new ArgumentNullException("data");
+            }
+            return SignData(data, 0, data.Length, hashAlgorithm);
+        }
+
+        public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm) {
+            if (data == null) { throw new ArgumentNullException("data"); }
+            if (offset < 0 || offset > data.Length) { throw new ArgumentOutOfRangeException("offset"); }
+            if (count < 0 || count > data.Length - offset) { throw new ArgumentOutOfRangeException("count"); }
+            if (String.IsNullOrEmpty(hashAlgorithm.Name)) { throw HashAlgorithmNameNullOrEmpty(); }
+
+            byte[] hash = HashData(data, offset, count, hashAlgorithm);
+            return SignHash(hash);
+        }
+
+        public virtual byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm) {
+            if (data == null) {
+                throw new ArgumentNullException("data");
+            }
+            if (String.IsNullOrEmpty(hashAlgorithm.Name)) {
+                throw HashAlgorithmNameNullOrEmpty();
+            }
+
+            byte[] hash = HashData(data, hashAlgorithm);
+            return SignHash(hash);
+        }
+
+        public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm) {
+            if (data == null) {
+                throw new ArgumentNullException("data");
+            }
+            return VerifyData(data, 0, data.Length, signature, hashAlgorithm);
+        }
+
+        public virtual bool VerifyData(byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm) {
+            if (data == null) {
+                throw new ArgumentNullException("data");
+            }
+            if (offset < 0 || offset > data.Length) {
+                throw new ArgumentOutOfRangeException("offset");
+            }
+            if (count < 0 || count > data.Length - offset) {
+                throw new ArgumentOutOfRangeException("count");
+            }
+            if (signature == null) {
+                throw new ArgumentNullException("signature");
+            }
+            if (String.IsNullOrEmpty(hashAlgorithm.Name)) {
+                throw HashAlgorithmNameNullOrEmpty();
+            }
+
+            byte[] hash = HashData(data, offset, count, hashAlgorithm);
+            return VerifyHash(hash, signature);
+        }
+
+        public bool VerifyData(Stream data, byte[] signature, HashAlgorithmName hashAlgorithm) {
+            if (data == null) {
+                throw new ArgumentNullException("data");
+            }
+            if (signature == null) {
+                throw new ArgumentNullException("signature");
+            }
+            if (String.IsNullOrEmpty(hashAlgorithm.Name)) {
+                throw HashAlgorithmNameNullOrEmpty();
+            }
+
+            byte[] hash = HashData(data, hashAlgorithm);
+            return VerifyHash(hash, signature);
+        }
+
+        private static Exception DerivedClassMustOverride() {
+            return new NotImplementedException(SR.GetString(SR.NotSupported_SubclassOverride));
+        }
+
+        internal static Exception HashAlgorithmNameNullOrEmpty() {
+            return new ArgumentException(SR.GetString(SR.Cryptography_HashAlgorithmNameNullOrEmpty), "hashAlgorithm");
+        }
     }
 }
index e152be8dba794eda9eec2010f4c93896e693dddc..40505e30ddbe9c6773aa447b759e3854ea195df4 100644 (file)
@@ -375,5 +375,37 @@ namespace System.Security.Cryptography {
                 return NCryptNative.VerifySignature(keyHandle, hash, signature);
             }
         }
+
+        /// <summary>
+        ///     Helper property to get the NCrypt key handle
+        /// </summary>
+        private SafeNCryptKeyHandle KeyHandle {
+            [SecuritySafeCritical]
+            get { return Key.Handle; }
+        }
+
+        protected override byte[] HashData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm) {
+            // we're sealed and the base should have checked this before calling us
+            Debug.Assert(data != null);
+            Debug.Assert(offset >= 0 && offset <= data.Length);
+            Debug.Assert(count >= 0 && count <= data.Length - offset);
+            Debug.Assert(!String.IsNullOrEmpty(hashAlgorithm.Name));
+
+            using (BCryptHashAlgorithm hasher = new BCryptHashAlgorithm(new CngAlgorithm(hashAlgorithm.Name), BCryptNative.ProviderName.MicrosoftPrimitiveProvider)) {
+                hasher.HashCore(data, offset, count);
+                return hasher.HashFinal();
+            }
+        }
+
+        protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm) {
+            // we're sealed and the base should have checked this before calling us
+            Debug.Assert(data != null);
+            Debug.Assert(!String.IsNullOrEmpty(hashAlgorithm.Name));
+
+            using (BCryptHashAlgorithm hasher = new BCryptHashAlgorithm(new CngAlgorithm(hashAlgorithm.Name), BCryptNative.ProviderName.MicrosoftPrimitiveProvider)) {
+                hasher.HashStream(data);
+                return hasher.HashFinal();
+            }
+        }
     }
 }
index 162e0bb883e8b63c6aad0f04b96394becfedc583..cf56209111a9c171735eacd0a6f0e074366cdfb8 100644 (file)
@@ -561,6 +561,11 @@ namespace System.Security.Cryptography {
             if (error != ErrorCode.Success) {
                 throw new CryptographicException((int)error);
             }
+
+            // Sometimes decryptedSize can be less than the allocated buffer size
+            // So resize the array to the actual returned plaintext 
+            Array.Resize(ref decrypted, decryptedSize);
+
             return decrypted;
         }
 
diff --git a/mcs/class/referencesource/System.Core/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs b/mcs/class/referencesource/System.Core/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs
new file mode 100644 (file)
index 0000000..7ef6364
--- /dev/null
@@ -0,0 +1,129 @@
+using System.Runtime.InteropServices;
+using Microsoft.Win32.SafeHandles;
+
+namespace System.Security.Cryptography.X509Certificates
+{
+    /// <summary>
+    /// Provides extension methods for retrieving <see cref="ECDsa" /> implementations for the
+    /// public and private keys of a <see cref="X509Certificate2" />.
+    /// </summary>
+    public static class ECDsaCertificateExtensions
+    {
+
+        /// <summary>
+        /// Gets the <see cref="ECDsa" /> private key from the certificate or null if 
+        /// the certificate does not have an ECDsa private key.
+        /// </summary>
+        [SecuritySafeCritical]
+        public static ECDsa GetECDsaPrivateKey(this X509Certificate2 certificate)
+        {
+            if (certificate == null) { throw new ArgumentNullException("certificate"); }
+            //Check cert for private key and confirm it is ECDSA cert
+            if (!certificate.HasPrivateKey || !IsECDsa(certificate)) { return null; }
+
+            using (SafeCertContextHandle certificateContext = X509Native.GetCertificateContext(certificate))
+            using (SafeNCryptKeyHandle privateKeyHandle = X509Native.TryAcquireCngPrivateKey(certificateContext))
+            {           
+                CngKey key = CngKey.Open(privateKeyHandle, CngKeyHandleOpenOptions.None);
+                return new ECDsaCng(key);
+            }
+        }
+
+        /// <summary>
+        /// Gets the <see cref="ECDsa" /> public key from the certificate or null if the certificate does not have an ECDsa public key.
+        /// </summary>
+        [SecuritySafeCritical]
+        public static ECDsa GetECDsaPublicKey(this X509Certificate2 certificate)
+        {
+            if (certificate == null) { throw new ArgumentNullException("certificate"); }
+            if (!IsECDsa(certificate)) { return null; }
+
+            SafeCertContextHandle safeCertContext = X509Native.GetCertificateContext(certificate);
+            IntPtr certHandle = safeCertContext.DangerousGetHandle();
+            //Read the public key blob from the certificate 
+            X509Native.CERT_CONTEXT pCertContext = (X509Native.CERT_CONTEXT)Marshal.PtrToStructure(certHandle, typeof(X509Native.CERT_CONTEXT));
+
+            IntPtr pSubjectPublicKeyInfo = new IntPtr((long)pCertContext.pCertInfo +
+                                           (long)Marshal.OffsetOf(typeof(X509Native.CERT_INFO), "SubjectPublicKeyInfo"));
+
+            X509Native.CERT_PUBLIC_KEY_INFO certPublicKeyInfo = (X509Native.CERT_PUBLIC_KEY_INFO)Marshal.PtrToStructure(pSubjectPublicKeyInfo,
+                                                            typeof(X509Native.CERT_PUBLIC_KEY_INFO));
+            CngKey key;
+            //Import the public key blob to BCRYPT_KEY_HANDLE
+            using (SafeBCryptKeyHandle bcryptKeyHandle = BCryptNative.ImportAsymmetricPublicKey(certPublicKeyInfo, 0))
+            {
+                if (bcryptKeyHandle.IsInvalid)
+                {
+                    throw new CryptographicException("SR.GetString(SR.Cryptography_OpenInvalidHandle)");
+                }
+                key = BCryptHandleToNCryptHandle(bcryptKeyHandle);
+            }
+            GC.KeepAlive(safeCertContext);
+            return new ECDsaCng(key);
+        }
+
+        /// <summary>
+        /// Method take BCrypt handle as input and returns the CNGKey
+        /// </summary>
+        /// <param name="bcryptKeyHandle">Accepts BCrypt Handle</param>
+        /// <returns>Returns CNG key with NCrypt Handle</returns>
+        private static CngKey BCryptHandleToNCryptHandle(SafeBCryptKeyHandle bcryptKeyHandle)
+        {            
+            byte[] keyBlob = BCryptNative.ExportBCryptKey(bcryptKeyHandle, BCryptNative.BCRYPT_ECCPUBLIC_BLOB);
+            //Now Import the key blob as NCRYPT_KEY_HANDLE            
+            CngKey Key = CngKey.Import(keyBlob, CngKeyBlobFormat.EccPublicBlob);
+            return Key;
+        }
+
+        /// <summary>
+        /// Check if the certificate contains ECDsa key or ECDH / ECMQV key.
+        /// </summary>
+        /// <param name="certificate">Certificate object</param>
+        /// <returns>true if ECDsa key. False otherwise</returns>
+        private static bool IsECDsa(X509Certificate2 certificate)
+        {
+            string algName = certificate.PublicKey.Oid.FriendlyName;
+            string value = certificate.PublicKey.Oid.Value;
+            //At this point check OID. If it matches for ECC certs
+            //then go to extensions and find out difference between ECDSA and ECDH certs
+            if (value != X509Native.szOID_ECC_PUBLIC_KEY) { return false; }
+            else
+            {
+                //Following section is built based on RFC 
+                //http://www.ietf.org/rfc/rfc5280.txt and
+                //http://www.rfc-archive.org/getrfc.php?rfc=5480. This RFC, section 3 describes when 
+                // key can be ECDSA or ECDH or ECMQV.
+                foreach (X509Extension extension in certificate.Extensions)
+                {
+                    //Check Key Usage OID value
+                    if (extension.Oid.Value == "2.5.29.15")
+                    {
+                        X509KeyUsageExtension ext = (X509KeyUsageExtension)extension;
+
+                        if (!(ext.KeyUsages.HasFlag(X509KeyUsageFlags.KeyAgreement)))
+                        {
+                            //If this does not have KeyAgreement flag present, it cannot be ECDH or ECMQV key as KeyAgreement 
+                            // is mandatory flag for ECDH or ECMQV. In that case, at this point, it is safe to assume it is ECDSA
+                            return true;
+                        }
+                        //If key has any of the following flag then it cannot be ECDH or ECMQV. Assume 
+                        //it is ECDSA.
+                        if (ext.KeyUsages.HasFlag(X509KeyUsageFlags.DigitalSignature) ||
+                            ext.KeyUsages.HasFlag(X509KeyUsageFlags.NonRepudiation) ||
+                            ext.KeyUsages.HasFlag(X509KeyUsageFlags.KeyCertSign) ||
+                            ext.KeyUsages.HasFlag(X509KeyUsageFlags.CrlSign))
+                        {
+                            return true;
+                        }
+                        else
+                        {
+                            return false;
+                        }
+                    }
+                }
+            }
+            //If key usage extension is not present in the certificate assume ECDSA 
+            return true;
+        }
+    }
+}
index c6379b50e1cdffd6d9d6125bf8a0dde1eef5c490..e4ef01d3e6444fb6a8b667c41b4c344cf832e44a 100644 (file)
@@ -66,7 +66,7 @@ namespace System.Security.Cryptography.X509Certificates
                 return null;
             }
 
-            using (SafeCertContextHandle certificateContext = GetCertificateContext(certificate))
+            using (SafeCertContextHandle certificateContext = X509Native.GetCertificateContext(certificate))
             using (SafeNCryptKeyHandle privateKeyHandle = X509Native.TryAcquireCngPrivateKey(certificateContext))
             {
                 if (privateKeyHandle == null)
@@ -101,23 +101,6 @@ namespace System.Security.Cryptography.X509Certificates
                 CapiNative.CRYPT_OID_INFO oidInfo = CapiNative.CryptFindOIDInfo(CapiNative.CRYPT_OID_INFO_OID_KEY, oidHandle, 0);
                 return oidInfo.Algid;
             }
-        }
-
-        // Gets a SafeHandle for the X509 certificate. The caller
-        // owns the returned handle and should dispose of it. It 
-        // can be used independently of the lifetime of the original 
-        // X509Certificate.
-        [SecuritySafeCritical]
-        private static SafeCertContextHandle GetCertificateContext(X509Certificate certificate)
-        {
-            SafeCertContextHandle certificateContext = X509Native.DuplicateCertContext(certificate.Handle);
-
-            // Make sure to keep the X509Certificate object alive until after its certificate context is
-            // duplicated, otherwise it could end up being closed out from underneath us before we get a
-            // chance to duplicate the handle.
-            GC.KeepAlive(certificate);
-
-            return certificateContext;
-        }
+        }     
     }
 }
index 13af6e370f8f9699de0537e1fc5a127fadc35fb7..94aacfd6ea072e24fe6d0d818fcab50da3ef17bc 100644 (file)
@@ -142,6 +142,18 @@ namespace System.Security.Cryptography.X509Certificates {
 
             return UnsafeNativeMethods.CertDuplicateCertificateContext(context);
         }
+
+        // Gets a SafeHandle for the X509 certificate. The caller owns the returned handle and should dispose of it. It
+        // can be used independently of the lifetime of the original X509Certificate.
+        [SecuritySafeCritical]
+        internal static SafeCertContextHandle GetCertificateContext(X509Certificate certificate) {
+            SafeCertContextHandle certificateContext = DuplicateCertContext(certificate.Handle);
+            // Make sure to keep the X509Certificate object alive until after its certificate context is
+            // duplicated, otherwise it could end up being closed out from underneath us before we get a
+            // chance to duplicate the handle.
+            GC.KeepAlive(certificate);
+            return certificateContext;
+        }
     }
     /// <summary>
     ///     Native interop layer for X509 certificate and Authenticode functions. Native definitions can be
@@ -162,6 +174,60 @@ namespace System.Security.Cryptography.X509Certificates {
             TrustMicrosoftRootOnly      = 0x00000020    // AXL_TRUST_MICROSOFT_ROOT_ONLY
         }
 
+        internal const uint X509_ASN_ENCODING = 0x00000001;
+        internal const string szOID_ECC_PUBLIC_KEY = "1.2.840.10045.2.1";   //Copied from Windows header file
+
+        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+        internal struct CERT_CONTEXT {
+            internal uint dwCertEncodingType;
+            internal IntPtr pbCertEncoded;
+            internal uint cbCertEncoded;
+            internal IntPtr pCertInfo;
+            internal IntPtr hCertStore;
+        }
+
+        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+        internal struct CERT_PUBLIC_KEY_INFO {
+            internal CRYPT_ALGORITHM_IDENTIFIER Algorithm;
+            internal CRYPT_BIT_BLOB PublicKey;
+        }
+
+        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+        internal struct CERT_INFO {
+            internal uint dwVersion;
+            internal CRYPTOAPI_BLOB SerialNumber;
+            internal CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
+            internal CRYPTOAPI_BLOB Issuer;
+            internal FILETIME NotBefore;
+            internal FILETIME NotAfter;
+            internal CRYPTOAPI_BLOB Subject;
+            internal CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
+            internal CRYPT_BIT_BLOB IssuerUniqueId;
+            internal CRYPT_BIT_BLOB SubjectUniqueId;
+            internal uint cExtension;
+            internal IntPtr rgExtension; // PCERT_EXTENSION
+        }
+
+        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+        internal struct CRYPT_ALGORITHM_IDENTIFIER {
+            [MarshalAs(UnmanagedType.LPStr)]
+            internal string pszObjId;
+            internal CRYPTOAPI_BLOB Parameters;
+        }
+
+        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+        internal struct CRYPT_BIT_BLOB {
+            internal uint cbData;
+            internal IntPtr pbData;
+            internal uint cUnusedBits;
+        }
+
+        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+        internal struct CRYPTOAPI_BLOB {
+            internal uint cbData;
+            internal IntPtr pbData;
+        }
+
         /// <summary>
         ///     Flags for the CryptAcquireCertificatePrivateKey API
         /// </summary>
index 11c673bf58763601dac15322465f54b5d6bc6fa4..2853b837a17d8ce1f7d9abd122f9246ea7e3e195 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskExtensions.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Extensions to Task/Task<TResult> classes
 //
index 20ee67a6372b878c0950439ad4e3a2874d3e2af1..83d84faa2d6883430e8295b39366f01482a0b456 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DataRowComparer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">spather</owner>
 //------------------------------------------------------------------------------
 using System;
index c1321fd25fa26a5f698ffd7b600b198dfc88edf5..172aaa055743dadc77a9f9970fb1571aa93b37bc 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DataRowExtenstions.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">spather</owner>
 //------------------------------------------------------------------------------
 using System;
index cbb567e0b0d869f1e36e744aaf41b505683dc97d..16c100fd31afeb54fa598e0127a93175c74f6024 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataSetUtil.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 9c02c11dfdc439f7a244a74704de0140dcf3b9d5..f9d681be62646c4d6cd58dbdc5c87a25efb014d4 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataTableExtenstions.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 2aa098fd133ebffd73a09862f72a7bb46f8d8ba6..6ef1b93e86bedc7860b9ac8bce3c2eb791902472 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="GenericEnumRowCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index cc1ff7a80325006d7cc99b60fededd234ba4840e..d4b54919cdaab4225970c7f00772da72cb472221 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="EnumRowCollectionExtensions.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 13f891636e0f384961828fffc9219946a9a7aad0..5b563588867c94bdc5b10c8985dab8d68b43fc3e 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="LinqDataView.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index a09a082e895e407252185a4748259a3ea303afb5..3deed3f8bf762d784646fa3ec96f705284e119b4 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OrderedEnumerableRowCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index e7f2aca7a3ff301cc51a5cda79de0eecd6bd694f..da6192b17a92a88dd1192218ee604473e634c549 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="EnumerableDataTable.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 4a4a0ee70a86aca2b8d3d73703ff4ca6312e2ae4..2d8289f89557317c58b995f562bbf1d478b15cfa 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TypedTableBase.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">spather</owner>
 //------------------------------------------------------------------------------
 
index 5d6b9e6d9e3e8606dee9acaf33269721224e73c3..4b9b7e51e4e318659c0ac388c337d596db3012c7 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="EnumRowCollectionExtensions.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 338e6d617b84ede2e4843b4cae627f2a19c64219..3111c8566d0f76715312105b4c76947b3af235d3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Diagnostics;
index 1a4745d4882a3b2fe3a283eac63f8ddb538c9a84..09e66a21b8b36cc6f54c249d5a94fc443754ad3a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 3abf99539a0c9fab3f88e30bce88dea222c12505..8223ed93996a395569ce2b593c4cf10579d56654 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 018bbedf89570657627aa47f10a217713502b37b..2c51a286690a03fc33cc7d45457fc0559eeff7df 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 0cc456310955347b0982613b017302e6a5c3ff42..f79a5ba3ae29da8841568f395dcffd81d05f758f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 4a3cf74b90de1b58bd301cd713eef692dd5c0041..ce09de026ac8276f607f0aec4ebab017d56de33e 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="EDesignUtil.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.Entity.Design.Common {
index 7fb8a1be677965ac791b46051fcc7b667d5889eb..f285bbca538e9163142b6a17e66956078049da34 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Data.Common;
index 9f11c4c7872da6f3d7b27b7295c49853c1f93fea..2039e6a1dd56bd789930c348534cb65e2969a3c0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index d99f440cbd2bb9d62405ff1c3f989709b2c2d2eb..fac123e432291d790d9d0d71857253f90db85396 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Data.Common;
@@ -100,21 +100,21 @@ namespace System.Data.Entity.Design.Common
                 // this seems counter intuitive at first, but makes sense when you think all the way through it
                 //
                 // CascadeDelete Behavior (we can assume the runtime will always delete cascade 
-                //                         to the link table from the outside tables (it actually doesn't, but that is a 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+                //                         to the link table from the outside tables (it actually doesn't, but that is a bug))
+                //  Store               Effective
+                //  A -> AToB <- B      None
+                //  A <- AToB <- B      <-
+                //  A -> AToB -> B      ->
+                //  A <- AToB -> B      None
+                //  A <- AToB    B      <-
+                //  A    AToB -> B      ->
+                //  A -> AToB    B      None
+                //  A    AToB <- B      None
+                //  
+                //  Other CascadeDelete rules
+                //  1. Can't have a delete from a Many multiplicity end
+                //  2. Can't have a delete on both ends
+                //
 
                 associationSetEnd = GetAssociationSetEnd(definingSet, true);
                 AssociationSetEnd multiplicityAssociationSetEnd = GetAssociationSetEnd(multiplicitySet, false);
index eeb5403117c804af257abf473e446b8469c3ac29..2ceeb737cba20090d29158ccefeb1fe0b4b923d9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index db62698c5f38dfdeedcb5ac162d615d382c0cbef..2f8d3a152f2efc127f71415324669e8f8af8c00a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 //#define ENABLE_TEMPLATE_DEBUGGING
 
index e0d234d5330f60e88dfb622b58ca48a858a4d941..3d8b9c43828e9e18e0783805825f479978a1870d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.IO;
index 6fd70791f700725df34a854502d100400ba35d99..587e68dbcc8ed2fdb10ccee075ca5a0db60b74e9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 827b1a256322fffe22417d59a704b4703a22fb22..537a769ccc7e8866855156f97efae3cf71904c68 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Diagnostics;
index b086b3fbc0b7bd080e81d1cda791557e342ab1d7..ed03f56754a2bd9fc5eb1ade568f71f65ebe5872 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 4b1c9d0469da707b67b3e2a9d53dec6989242165..57f59c4422bbf7bce92dc92b6665c330f72f5399 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Diagnostics;
index 78d87ade51713aafa3dd550746045b4c2b69510a..e059181a3451a496f122555cefab0db30468f96a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Diagnostics;
 namespace System.Data.Entity.Design
index 2b1460a25facd58e93ae8185a4967b738b55a151..6a360dbcb7ddca0249591ed50f404bb865625170 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Data.Entity.Design.Common;
 using System.Collections.Generic;
index fbb3711e95dfd3603c6133f23c2341f45c96ffbc..69f9e7f3dfe26f54ebe95509d3b8bd2c463ee05f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index c1f7c6c722d6082b3316891f13c00ed75a421514..8102ba338589228a0939f837d4afbfe4ae119a7f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
@@ -345,7 +345,7 @@ namespace System.Data.Entity.Design
 
             foreach (var storageEntityContainerMapping in mappingCollection.GetItems<StorageEntityContainerMapping>())
             {
-                //Throw warning when containerMapping contains query view for 
+                //Throw warning when containerMapping contains query view for bug 547285.
                 if (HasQueryView(storageEntityContainerMapping))
                 {
                     schemaErrors.Add(new EdmSchemaError(
index 3c0325be07a5259063bbc7de3036b5842bdb4458..05fadc535b2d64a29073c21fa5da6bb0740fa744 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner      willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Entity.Design
index a0bd90d32cc90a5db01740813f8d83ae126f5ebc..4f496c57f39e87102c8f41a50a5594d10613a1a1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Entity.Design
index f40b624560d6d50dfeaf403d2cb85bf9d3563d56..1085686e0fb560a2e5c0e78c2509fd9ad690bb2c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 2ca6171af2a369ab214d9f6277bcf0d476a56e80..a0885995af5bd5ff6a8a9f91178c1451dac6d523 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 547983643f47820855a9f635e601f616df6e8ebb..ccd70127bbe1f28c4a9b0298b4da4dec3cdb551b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 59a95d917e1222d6e23af131babe252c6315f61e..5002205ed4b3b38d52b7c9aa951425dafed84a28 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 697013be7977a415c23cf4b93321eb504379c5ee..49d484d13c3a309fcf1e39922b6c0f1550cc435e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Globalization;
index 6b0c5c767b7d4fe7c7787ebcd3d2e5f5c5fb29bb..95a9c2eb1fcc7d70a8b014f45cc23f1f3f72725c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 9b8f93b6f7db72ecf66927ab9dcad9ef49e4d536..8f13e94ac13908d417bd933644c31b3587008f81 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Xml;
index 892fa572d8c72910c96a6bd036de03f7067e720b..4d202670c6b47bafeb7de7758eab4bfffd19a65b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Xml;
index b79aee2c9a756899cf3206d185de138e5f64a155..5eca9413a1d6551a5bdd7ef755f6ba45cb0ab993 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Xml;
index ad95e0103f8078267b93a943134dc02ec6238d25..cd3ca3660de29f8e97b73a5aa2a4a33dd7305c39 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Xml;
index 2a5277fad1634bd5ce9b0bb626e7e9fc6d6c6ef4..c45935e9a874a6bdc5edd2365b9d09fdaa854f47 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 5b87e6fdcbeb87c06ff6cc1fc0d1003fe89d507b..ae05595adf14cb91fdcdf6cd85469888dd7659e1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index f52b61f183492740982533c2881286b0ee625d0a..45124ca359bdc03605b1bcce5540d6e1e1702dbc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.CodeDom;
index 2c4663dfab4e29f77694a12d5e25758a6a0ba98f..d4ec4cf42fd7d71e80173e35c16956d6327887de 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index d2942485f8196de0c87682a0fd1fa8d9acec5183..d898e70127b457097bb578a630a70ab37d6ed801 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 3785fefafc73c4184d90eaa2f012758e37a8f808..7f369223020ad59a4424a0cd13c13cd67201cf8c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 28f5daf85343d49b9aba4d82691f0dce5d4594a5..aad4ff051ff345a0cde7af5fa10ea14e3c78fb22 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 928d13c2e4144e42f943dd206ff3b707384fb1e8..2aebd4d83ab878b3ab551c452e8459aec5884da4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index d842bb38f6eccf3b417f6e93318ae2a31c8148ea..f4cf839d8e480a3230cef8a2feeaecfc082c9ab8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index c6fd702e21f667665ccff7baf568e59153b531f7..2058e54f8a8e3184c5f49eff435a81b9e48d6ada 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index d32878775ee9f3ac8271e6d5cf303b37f734661a..86a73f3ae56d2ca81dabac014f027dd9bd097eb9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index bbb721431b0574e2565507f12d7c90207ea67e47..aaf1e80cef2c5a4f7a821ad5d878f90c33bd5f92 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------using System;
 using System.Collections.Generic;
 using System.Text;
index 171726227af3da981d6b5912bcfa5233b2bf0d11..e200f5d2aad9feba09c149c754dda6edbc683f0f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index ef0104ca7a2acaaa08e6556eb2b209fa7b89ed37..121868eb65c7bd3494fba5c610dc8bcda1d0f005 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 78c8d78e59ee4c826bbd6ae784fdac94ed17e6b9..bbcb468e272de993119e92a85e3a3ef7b6f58779 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.CodeDom;
index 04a9326d5dfb61fdf5fd1410e9a285868a3ede17..aab6dc7315ae5a6a282515301caf375d96dd495b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 348ddae3b9057806e1c19f6a960f1bbd8bd8b66f..e74471f3f29808ce4720039ee4f299e258e021ae 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 3af30235c2eff40a83d6c4f91876befd14a20967..2689c5b99fea32c1b4d0d1deb58f89aa7bb3ae20 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections;
index 9336dbf7bf370ff0cd6c9bbde356c0d8b6cc5d1e..9381d82cfc3205756b11caad3583d64d89a8f532 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index e35e67cbb96a2e9fa9d678a3d3afa5b5512ed0a9..a85445adb77dfcb41db289beb372b117d8c46fb6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 6f530f56b993b9e6b92138467f41dae53d15d971..cd27ddb97294a47aa6b906d72f984ce4da46da5e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index a6f6f05895a054a5dd69979615d04c92325bf75b..70e90b89bc1861c45783c1c5b84f86cd22424aa6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 5bbb41588c96474cba4da3e856bb0fd227d72026..d80bd5d64330d22b83a1d1eebebb25cb7185af31 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Data;
index 63e42956a977bfb80a97d53585a2d2e7de78a50d..d4133aadc4701074460bdf1546e2277cee29b8cc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Data;
index 7b5d7192be68c5edcbdb84804f751ad1493e0c65..32f66a9344bb1a06802ab88da7b4413105ca9f9c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 13a5cb17c2040442a74d10d014ce95cfdfb3d1a1..4be1672ebc43352490d3f35c3abc6dcb66bc08bb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b2c449026d709f46cda182730b59267ff847ae7e..065b1f15dbb163aeb7106447ce0d713e6f7f7b9e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 524792543b861d81b62df4a3e8ad056664e697de..62816a815221d20e7f5a6c5cbec7f0195b461eb3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees
index 86b6ed9527c998a469e1cda5617982b98d9be7ca..ffbe27823cd9db57e0426c956a5a8911b9c82d4b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees
index 22ccf2dafb20a957ac18443cab9ed95b88cbb727..bd2a0cd47b8ba4efe507b7ccecaced0dae9ea1a0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft, Microsoft
-// @backupOwner Microsoft
+// @owner  [....], [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 3fe00156b2e922b9c8bbd439bd5691aff3341017..819515f3c8ec10b085f47593628704fa08bae7fd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 0fde73b97b9a3fea06ec3e246926d338aeab903d..add22219762c92a6d11905a4e78f2ddf7a487113 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 219ab1ae7289a0cfeb1ed40620d4fa19cf919942..cb0d6513de01566298dbe7868649f4641caab18b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 10dbfbaf87b9d7b63b3bf54c8c8682d2e32a9e4c..4d3d41e5c13b8abdb37d6452a199dfac606dd944 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft, Microsoft
-// @backupOwner Microsoft
+// @owner  [....], [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 0a15743828f4a680039dd4467396d42733740541..db7105b543ab13996eab171a6a225b6c3edf81c4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 71eecb4b2e31b48dc1b20b5d8ff7ccbdd2e22b8d..c9ea82ce3e5c632a47afc5e13b2ba9cbd7a2824c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b129bb2efe035aac35d93f9bdb746a74ffced150..67f0bc2ea914420873c0cb01c8917d67d4b8e852 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft, Microsoft
-// @backupOwner Microsoft
+// @owner  [....], [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 56039e69fa01c02625aa8a5b743abc8f5537885e..0816cae13365a8d02d01ac8b798069014cd9bf61 100644 (file)
@@ -4,8 +4,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 82794eccdcfd166294c960ed9849b8f233e02151..4b97556f1cb9f8b195b92461756608d65f38fb5f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 4e486f0be9c8a6fdef4e864a64e8de79b6c692c5..65e72e88ded3d7c2b5c8f8fd3c426a4fae400fe6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft, Microsoft
-// @backupOwner Microsoft
+// @owner  [....], [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 520d5dcd0620567b5298bd1c00b6c297418ee685..3eaea9451a67ebefa8c6c922bccf8d57c09f6a25 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees
index 7c39a76a79e48b74249818556e7caff6eef23f36..6b24b054e974c8b4cfa0b023b29b40a58e08de39 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 6db0404e3d4e2bf315a104e4b3b1c2f34fe5f457..018822d2543b4f4203990b783596318b13f64e32 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees.ExpressionBuilder
index 026dac119519c170b57e273a04fb6aaf1f99608b..564193b7f1466f255ba44bd30d0afa2c40ead93a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees.ExpressionBuilder
index 02c45b4710344c00ccaee908750fc7db80fc38ff..c0e80490b005f38261d0290141f66a988ea76f23 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees.ExpressionBuilder.Internal
index 9010a31ed64d8f21ecc9a4b3706e9533678ce225..77c9bbb42892caa9e6e25307e67eb93ba0973297 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees.ExpressionBuilder.Internal
index 17f4e26153ef04c432a9d3d075600be7c7516233..6b2e6f37290d72d0b7018b3141d4515b7ba13624 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 70a627702be7741f8bce014af32a0c9293771cc3..10c2e874893c28df6fd955f31f70b349235a42c4 100644 (file)
@@ -5,7 +5,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees.ExpressionBuilder.Spatial
index 5227cd0671a0b120926c9ce7fb72ac9d98ee7705..92fb84d99b0750d2bc119687bef094ca603357e4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index 764d80a4dd0fbeb27276291538f51632c0a08beb..72b7005982605ddb8366f79d4e8c66a7536f48a3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees.Internal
index 3f57a0ac57405c0762d2401bdf141a112c2864df..020ea578ff5fd120ba871c206d7285c329374fea 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 3e9e050e2f408c6eaaeb31633dc8f63a40388942..d769ea83514955baed343f27d83c668f0fa29247 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 // @backupOwner venkatja
 //---------------------------------------------------------------------
 
index 15d0c154a339b5e415564078419e4c818a0b888f..b7c12c7df8d5da89bc6f66a5367710b943809f8b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 11f70731f265320b698fc75ce19986a5407503f7..17c708d70a7083ef329ddca21d763d2bb95b5622 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees.Internal
index 29005dc52851cec6563591cfcb9d84a812b95562..89396b7b63180d8a32bcab41fa1d819581fd743d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 66e3a0286e2cbb84c240e2076c2b9a1ccd03622c..33f8a8a7fec1eb74d575737d5278f9b2463ee62d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index 182e58592054af3e7131484cb262f4c7df88a2d6..75ddb26261836b352166235f279e60873aa1b37b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees.Internal
index 3a65b24a55011d5d907d0cc081c915f46c68cdda..485339fce6937209221055b26779627d6b1fcaeb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft, Microsoft
-// @backupOwner Microsoft
+// @owner [....], [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index c50dad6b3ccc9789670370cecab21302b8f9207a..e5ed294bc08d6aaf0e61bae348de77a8eebd368d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 45e384904198fb32eae72b251259c8008506cf1e..d3bfc50dcfb7641d080c7e3f0ff96cb73fccdf84 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index a6e626c2f741abd2da35d4bf164ac63d6620d700..05f52debacd9d930b2cb3a94a280b92536c352bf 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 7546835ecf8836da402df66ab94f433ced9c42a6..7d9bef3d974644c68520709fb9cb82321acaa060 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.CommandTrees
index b2d286185fcf5124ab094e98778926fc9cdae0a8..22945e86e3b7ebf7e4ff998309a92678cb8027ac 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataRecord.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Objects
@@ -426,7 +426,7 @@ namespace System.Data.Objects
         }
 
         #region ICustomTypeDescriptor implementation
-        //[Microsoft] Reference: http://msdn.microsoft.com/msdnmag/issues/05/04/NETMatters/
+        //[[....]] Reference: http://msdn.microsoft.com/msdnmag/issues/05/04/NETMatters/
         //Holds all of the PropertyDescriptors for the PrimitiveType objects in _values
         private PropertyDescriptorCollection _propertyDescriptors = null;
         private FilterCache _filterCache;
index 9e892e98d2ca15983c4b910cb3f2560ae797c2bc..b5fcf313e14782ee8a99bb8675fec24a66467270 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataRecordInfo.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common
index ed4b28e278fb2753ef394e71a1fd0617d22207e0..af5490530a03f19dbfecced9336e124c18a8bf6f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index b043bb4024c31e5270c095864219b184a89754ff..4258cb147ac3ec15541764a6ef50b3343c508b2f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common
index e12c1c8cdcd88b0a18b4c2428e178a8e05d36ecd..6647b41a6157870c08858debccbe225550e6a51a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.SqlClient;
index 456a6d5cefa0cacfac7147d348aa88536a3c1049..b06d9eb2f2f2da1b2b64256983b6917087ea0e8c 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common
index d98de0bc84494e46a02a7352a2ffbaf9daa25362..fac34b50bbfd1ebac86f3b8a92b87988d568aa4f 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="EntityRecordInfo.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 102e5da53816e66e82fff5250af7b97ea1076f65..df9f6e839e8f5ebc94bf4af1a560b0e9cd67cc73 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index f0532e26f9d55da19813298a4f4417c1e522f40c..e9d15458b5aa914ff5f420ebc9ea0a99f93a78ba 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 66f3ca72ce606280053b8352196b461f3ad7ac70..fde232bf33944174c8c3b1d73aa91f21e5e408c8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index b04a766240735a9be1ba5042e4dca5fb83dc4404..e1cae1bea62cb2cf7f83cf0cc97a3b3f4a45988c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index a984def3d331cf69302755fc433d925000341326..905d1de7c58fd20260bfbff3e7dec5a73f2e6351 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 8f4e103e7f7de71b1a26501dcfa8b6e0f072cd9c..e347d8e49de56f405e7b76ea69480039116f4dbc 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 365783ede1229f0385799ea3538b03452222d705..0757273be8272bfefdc7d8e1abee16662f83bb84 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 1d5b129ea4e8771a43800b71168a29ef50d777d9..cdd820cf252804ae9d580150e2aed4211cbe8186 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index c42aebb76999e3e7616c95062ae974a1d39f3c8d..3331eacd646300684b68457fd60b9bc8cb4876cf 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 2288453136e2f9663b8963f12a7432ab71378fec..2806c7f4322ae2ddf2b7b0d4998039cddecfeb43 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 892604a96381aa74dc63f821ee1df36976ded733..128f9605e5740fc9c42a741e796ff51f190de8b9 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index bf7ea32b8dccbe083c5468f1daa73706b034652b..027fecca6526e56dbe063b17bcd551af03a1862c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index b29f3a6ea6c9001fb2d56ac217f0688418339f73..5616b92626abb09f6a07b616e35c062e17b784e3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index b95887f0a82c7add71f2adb46203f1d6ce17ff33..dd49950d7859baf37b1dd1876f6bc7a6719f655e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index d6ad4143209ae91ac1487933e3a00afd2373afff..bfc5b74067fadcfc62f99b320ca8cab415c54ba7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index b9ece452630c96170b75d4dc6997f25dfdf523f9..e57134ce2be513793870657a4cfb35459ab9c6b7 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 724fe2fef2bb660042bbd1119eb013e7e00b676f..f7e6751028cb2d619cf78511091fc518e4032f3f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index ab258763caab03115c2bd79f683690f65058f07c..2929b1ac28879e2b7e8c57c5a9d9ebe6a2053456 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 0913e91f95d59695c67f58e7da6c382d08f50ca8..42000a87285f7df331cdddf75683e691d076b458 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 4567c4fdebcb89a8bfbb28ae08ebe7b04c39f147..d417b7cd2be0d7a1e02d62c6c3d862034fac0bac 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 9a3478111da37c5f1fcb22c13f5ff765e7d8fd4c..ecb09bd2b9d76cb835f7744e4a3a1bb8e612f57e 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index c7bf3a98bbd0a439296528120bb47a638486537c..bb6f19e8185d0764224df63261caef63de6bba6d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql.AST
index 0e53206e9c086e71d31842d78a490c3e79b2f96d..681bf9fe7539e6e7050ec5de3bd43f9606be2057 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index 8d8c09279c1713d12fd4fc1163bad020781a4042..ddb98d334b2813924d0248e306ebe63be475f266 100644 (file)
@@ -15,8 +15,8 @@ namespace System.Data.Common.EntitySql
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //----------------------------------------------------------------------------*/
 using System;
 using System.Globalization;
index 4778076236345fdd8a27a08670ee26d055de415f..23dcbc379d3864358654a2b3ba5b866b47eb96b1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index d6ba939fb4bb46d97028336193229fda05703f9a..1049adebd589a66e1bba43ebe4d3c5cd19038179 100644 (file)
@@ -27,8 +27,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------------*/
 
 using System;
index 9dcc68e183411b3cbac2b0dee24dc4054831e826..901fbd4ec14b7a139279b397f2d864e92c417ea0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index 8c8fbe0d752b9fb58cb923f8388124c2bc263812..e6891500876de17a6b1edb56c58cc7c8cb5ba7eb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index a6f018832cc8181a127d16d41ebdf663b684123f..17b62f5bb6bdb625f364c5747bd70558b9ad96b7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index 0207198e6504b306f95a718969bade8c27ab9d0e..fe00e0c485c69530174166df53af9f50d69fd3c4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index 77fa73c4548412568c61a65f6f91f91fc17b1274..fdbf4be14a10794822e69984d01f1213986c743e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index bf61750a919dfc7b3ffacd8e9569e78838c2cc95..cdfc03cda089e24da0e60182fc8f1d2630a065bd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index 51130912b7563d13a1a6987bbfd1b8e318b400cd..43bd38b5fb176271a777f61796cd7efbe0bcd9ce 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index 9009be6405f0c2d7158c462d11eeb8309898be2a..ddc2fe1ede264a2dc7f456f6e585bef3da39b717 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index 1000b4d4dffdb18dc7eb36605d1cdde9c170c795..810e2dde4a41cb3de3134b166edbaa0275370fcc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index 99d2fcb2f2d0878999cc70e31e27fb476179870c..53052c6f947d414563480ddda09a8d34a6cf5840 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.EntitySql
index 63d51ab7ecb0dc3d5c9871e3eb5f7844590b6d2d..273ba8bf547c66f468a0c35fc1e39d01a7acbd0c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="EntityUtil.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -2071,8 +2071,8 @@ namespace System.Data {
         /// <summary>
         /// This method uses the .net Fx target framework moniker (introduced in .net 4.0 Multitargeting feature)
         /// to provide a 'quirks' mode that serves as a compatibility flag for features that can be considered
-        /// breaking changes from 4.0 to 4.5 which is a in-place upgrade to 4.0.  For details see DevDiv2 
-
+        /// breaking changes from 4.0 to 4.5 which is a in-place upgrade to 4.0.  For details see DevDiv2 bug#488375.
+        /// </summary>
         static bool? useFx40CompatMode;
         static public bool UseFx40CompatMode
         {
index f9c967c809fb774c51265fbcabaf3d8b7229649e..5ed39f1716cfc0ad91689aff318a180e134db2c6 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="FieldMetadata.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 8d7177d5dde4c7187d294a2e30b6e6c61d1e68e5..e65c7390d7e07b05c1d2bb67e8d7186537adf67d 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="FieldNameLookup.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index 7a85d27b4f7d0f35ea7de39cb3e31afa933a7225..65ab8650c8cc57c51b2a968e8ade1d9f2f58046e 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Text;
index af3717ef8aaf7555d1efa623577a8987150dcc6b..19041a0c3c1758d3c432c91b171a208e634177fe 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="ColumnMapKeyBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 3b48e5f40e10bfd87496ac783b944736fbf4f6ad..8526686cd3bc2cbfa6053aaadf7c7ab51617de0a 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="CompensatingCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common.Internal.Materialization
index 93a4e6c9006d09a3ba7ffd8508a8fcaf317b5f3f..23be3839d6e4685eb51d6e88c0366faa4f7ed55a 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="Coordinator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index b6807fa204ba3478f4f42ecd68ffc7de8aeb5811..0ec0331c82c4efa01713364eedc8750ffcfd0e58 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="CoordinatorFactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 96323de312c4cac3d666ab656551d5294a7f2f01..d2f81f02f8f0e74773236f7b60d8170e88d55fe5 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="CoordinatorScratchpad.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index b2c725f987257646662d3e3c1a57a2217d68493c..096fd66153bdc4f5759209ff2511d697326715a5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="RecordState.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 0df64e380437f98a5b1c2d8a7c05126b75c47447..69904d04f8184de95fbfae19d5ccd00952ce0998 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="recordstatefactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 796548170c06fc655ce98c8b32e3e9d75f280881..7a5f65e0d440f072f40c715d357b833715cf700f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="RecordStateScratchpad.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index db09b27ac82253ffdcbfef0e43f2e1ca397e0f9b..659e0e1c4d52b47141365161939c5fa0ffd1ae82 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="Shaper.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common.Internal.Materialization
index 3fd39f9d2b4a53438c292b930a665617de67dc0a..0a4c89a46ce9be91ae300cafc736a742f385bc36 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="ShaperFactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Data.Common.QueryCache;
index ae93d8088a95759f319e81980cf081ef75e172d3..065d41fc19580d3063cdc6b3810c1c3bb12061c5 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="Translator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common.Internal.Materialization
@@ -2199,7 +2199,7 @@ namespace System.Data.Common.Internal.Materialization
                     }
                     else if (typeof(Object) == type)
                     {
-                        // We assume that Object means we want DBNull rather than null. I believe this is a 
+                        // We assume that Object means we want DBNull rather than null. I believe this is a bug.
                         result = DbDataReader_GetValue;
                     }
                     else
index a968ae5ff2518a8d75cee72fe0c822c3c419b1e2..fd7cac415ba121542bdf452e7d1622d150bd10d1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Util.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index b4f9fb47850f38da78e55b2697c621f197e6ddc3..53cef9b2883518b095acbd644ef544914bc7638c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Diagnostics;
index d127840310ea0ebcba46ce8281f51e565d8ab938..64adc859ecef6f8cf90f28953f54166ab9134217 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common.QueryCache
index bd601d72ae16f0c7380db1618e3a8e5ca01b8d33..2654fe187be2cf8bc714fd271d449bb9bc05d9ab 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common.QueryCache
index f779d4bc6c53dbf815d3deb328b5bee93afea4e1..e1558153425742b0207febe8fa61ed124ed813e5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common.QueryCache
index c768adabf19aa9f515383acca898f143499c1826..e522b27cb61dcec5c6ad8d24bd40aaf70ef2a07a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common.QueryCache
index eda5cfd72ae48fe3398f3f064b5cb4d119df5283..48e751b3acc4a686bbb5544983331f64478dfe6a 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 // @backupOwner venkatja
 //------------------------------------------------------------------------------
 
index b24ea21c6f84ee3c6ce6ccae03147051de127bfe..095192735bef6f5bdc28d8c35173d8fc8c63e4b6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common.QueryCache
index 28884ac06de854df94c171592dc0f507b974acd4..4619758aede1fbf940a160e97a3c8f0265ee1174 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common.QueryCache
index 7bbc1a392044340b5cb9d5c51aa5d6ca063d8900..1b0ccd787d282eec740a7ef5628024b13e759eca 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common.QueryCache
index dd3826daef8c270d19136c9a5b65602c05831ff9..4b47edc6e0ab73c9cb2a7ecad32df3c88a5f55d1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index 5417635a7e78805f1be4ee3c4c228f2ef10caa73..670f5e62d2783b0df8da391e15568df1a3a39fcc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 4ddc93a1577e7d07d5b689671e767e24e6155592..c06db3a12ae46b899cd32da14b9b29f7abb92141 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index f06cf05f8a35596bdc171ee63dc47e196294c3ed..510cf51b4931bf46cd0914141083fa116b0622cd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 944a59a9a6ed479bb5fd5782d537b7cda91fffa6..ba6cb2b8359a2778b0ded1202e0378104a6428b2 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 893ab5a697f64c87660987941b934d1d153686a0..c5bf383114b1a026d2132cf2cf1b42a0eada4fb7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 0b69ae686472b5501af31debf7ee51388c896ee2..aa8d12e3cf8652eccb6e21837970ca0e977c026c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index bfe37791df36e949919e34db41422c7b17dcad50..36d5bd11865bcc45796b22277b195ba8a2373134 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 1fc9e9fd91801adf66eca082627778cca5b4eaad..cb9d5569cd0bf85cd03708aa214c73007066839c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 90f18519cfaa9d5d20c70ec37f2532116fcd9d8e..372a0cfa3ad5daf655fd0a6d1553d18c116010bc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 0123003f25617d9650b6ad19fe7de89cde20751e..4a86fee78f846bb6043d6e9f360a7980340a2663 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 92c7f9bee5499b0cfc5640f9aa43ed41594810e9..2b6716c3e685feefc019d1cbfc588eca0b5d9ed6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b591a6645e2a0972b97780cc3a01abe44a823d8c..2bad66e26163d6c4543d056de016f7b2705aa4b0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 8d0f77d7292d46bb1ca574636b235743e840ddf8..d9769c5f3d4a4ae3bcbd4910fa30e1dd17a21237 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
@@ -315,7 +315,7 @@ namespace System.Data.Common.Utils.Boolean
             {
                 if (x.IsSink())
                 {
-                    // sync nodes '1' and '0' each have one static instance; use reference
+                    // [....] nodes '1' and '0' each have one static instance; use reference
                     return x.Equals(y);
                 }
 
@@ -338,7 +338,7 @@ namespace System.Data.Common.Utils.Boolean
 
             public int GetHashCode(Vertex vertex)
             {
-                // sync nodes '1' and '0' each have one static instance; use reference
+                // [....] nodes '1' and '0' each have one static instance; use reference
                 if (vertex.IsSink())
                 {
                     return vertex.GetHashCode();
index 38b8b5f8756a377cf44625aef84f65b84a0a6b5d..6806a73b2933799c7ae3c5608216b127640beaf6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b02fa5d12a22c343c0f95f96e0fb55e60996f5ce..d4f25a816e4545b78d25afe35a7fe2382b8a83cd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 0be82c0865fd9c138b69fc82d1b36349819a016c..4cd2051c0748db748f499d3560c3b3d8f4923bec 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 1163bf8f89187c6b907c10af4bcc32a52dab99b4..39952ce672e2172e8b1869d6deb7f8c16c348793 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common.Utils
index 73f8b6299b3d22c2ff98398e45ebfd7f7493a1df..2096b08873229b1528c159e533a224b9e3f8a7a2 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DisposableCollectionWrapper.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Linq;
index 232648f3e2273948d5a2bf49d34ed72b8c02f445..98a32e33eb760a74a857749442d0434f400d7abc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index a35fdc2da4c72a3e2b6c9908c1a9910e7f18f088..44fe649dcb8b1c3721a03cf683ed25746c00a2b6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 12a2a1333f3d1a982764225a6a62184bb4acfb84..aaa2b0df35d7466307621efbe6724f4aee3426c2 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 84395cf4cd78d9785bcf26696418a56bd46163d0..f9f9d1d34d61a9cef988d0d2e28c017c12d4fd78 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft, Microsoft
+// @owner       [....], [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 6015d34a16ac9b13d1b2d116ef43a379af46ae28..1ab0fb9122e258c0ea7f8db5bd0515974b3690d3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 17f7d6b5619c7086ce62310eae1ee8c92b02bf6f..06db634abe45b3d233a69cbbee76e7d13974dde6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 4e671634668ca2a8972b142bb3492f96cfee8607..78e1362f76e9d14af1b1d02f73a7bc96c2378548 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 4eead566ce4bbc23ec9998846a151717c2e39d75..4b9b0fac334a5528e5f013d4c1b7c32b58268135 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 9d5282ada31b169ecd86a82bd2e5109db17d0c67..cb7a53fc97c9f92ef9b4acf5237bbc5fc95e86ea 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 79e347e384316329443046959ff1be1ab73a0f2e..bdd52eaa5dc01c38acd6f5754087be0dac938b88 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 1a26a4a102b92f4ed08f8ecb72420d9a97759b29..e867acd6f4cb6f3e1f47c2a31c89f52941d59ac5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 261894900c9e89ea8a18af5b09972ae2b9649397..87929e26b72a42a4742089e8f01f2e0d3608de37 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index dd2a101c588fe813eaf8104c9612f91f1d86314e..fd2ab6566ee509dbb6cca3cb1860295c2fc454c3 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 using System;
index 4e0339f8842e4a03bec060859a2853e282290e51..1a2aaea185e2a6838ed3432f6c1042f6333fbbeb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner  Microsoft
+// @owner  [....]
+// @backupOwner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityClient
index a23005d3f2b6c9e9b490cf2b8950ceffdcfea967..4a9dc1f4858fec99cfcf30ff88146515f5fd2679 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityClient
index 6d34f8a1a4b5fc4410bb9c5bd7ddd34b7acdc956..c56ef6076c67c5b234fd1d8c0498b3cc18b87ec6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 3881760b3110e556f8788fa05f48aa0c734fb2b8..5a175d33d382a95753eeab3e71401154aeac5291 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.EntityClient
 {
index ea6a1d391723a466bbd27543c1916779eaaade14..84e2df32c936045ca8950db9f0dd6f05585662a3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityClient
index c0f9ea4308e745615c13fa89d4d059a30915747e..0f00c170eee38192be4d1746c1912d6afa8b7433 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.EntityClient {
index 7ef5b69b4b700801396c0c4d1b5d6b2638ed0373..38de95d81a8557bad7d57875a3133b05e19e207b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
@@ -790,14 +790,14 @@ namespace System.Data.EntityClient
         protected override void Dispose(bool disposing)
         {
             // It is possible for the EntityConnection to be finalized even if the object was not actually
-            // created due to a "won't fix" 
-
-
-
-
-
-
-
+            // created due to a "won't fix" bug in the x86 JITer--see Dev10 bug 892884.
+            // Even without this bug, a stack overflow trying to allocate space to run the constructor can
+            // result in effectively the same situation.  This means we can end up finalizing objects that
+            // have not even been fully initialized.  In order for this to work we have to be very careful
+            // what we do in Dispose and we need to stick rigidly to the "only dispose unmanaged resources
+            // if disposing is false" rule.  We don't actually have any unmanaged resources--these are
+            // handled by the base class or other managed classes that we have references to.  These classes
+            // will dispose of their unmanaged resources on finalize, so we shouldn't try to do it here.
             if (disposing)
             {
                 ClearTransactions();
index f6061e4879d08abb92b5bcaf377fe491fd876f60..22ba703d396328b46925cc677748f200353dcf81 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityClient
index 14b88c927f2ed5a43daf93b25338cbb95d3fd24c..f79b0546cf73270b3add7b46c7e8c80a6d870108 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityClient
index 33fd948217e8a30714640d263d20f568a21b96ad..17c7aa10513c928007f1e26a66d7908577f10a3c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.EntityClient
 {
index 72b8c1bc9f2eb1465c4506e2f09c7f54775d7288..8303a91724686a8d9393dcbf2503ed9f15aa5a79 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections;
 using System.Collections.Generic;
index 5687ab06d489ddd98d54642307f747817ffec84d..f633d9b29d9d082e813a760a2aed81fe8ab87bfa 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
index 579cf6ba8bfd474b86fea9374d5845923d9b4a2f..aa7b9d3a396fd9753b30b28bc92a5f0da94d9185 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.EntityClient {
index ffaeda4db372d5dd7bbb665cb43b6b48f95ba094..69c5466918ea8d64475a0748f568e17a9f2655e9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Text;
index 3d548d1059bf4e3286956663a97aeb0ca346ae38..19ec74327d7ad13adb91b3204f5874b0ace4021a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 
-// @owner  Microsoft
-// @backupOwner  Microsoft
+// @owner  [....]
+// @backupOwner  [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.EntityClient
index 0975cf1d46b4af8006824e2d93650cefd7188c63..6f88b77002458caa6b7ace793ca6a6c6cbbe7ab8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data {
index db9a7c62e0274a5122b0eeeb34aae6bfd1c2839f..b464bf4d1d81c10a17a1a74c05a164f8dbff24aa 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data {
index 84fd61e5c543d4771afadcc8a484d664a9c993d2..4060610bb932e55b66266d7648423afe749a8faf 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data
index 84c60eb7e870df2a79fb61016896a9fe5a48d46a..249249a77c89cf31cc7c8eef3d44f1182038b0fe 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections;
index f48665f8b5af01ce3c427a3f81753e38c5cb3b95..99ee5aa72894d25ebb67611c5c7c9ac450bb4bf5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index f9a3f58dc7b8cad62dd1a26d046b02f33fa649df..8beec13112bfef8e3771f2778dc4d3853a17fb10 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index e59c739447dde38212cbc09f8df6abeeca43f649..987631ed9e9c59baec4f266b3f4edb0f3f89d7cf 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 6edbe3939c23c0357ea8bf421dfd3e1fe8057cf9..855c7b9ab32a0b6f9fb4dcc56c652ffa00f4df02 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 1fd96226030a606e8fc8a777dfa62f90f9b9262d..89d93ac8f8503fc3245f82c2b37bae81ffe7e3eb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 1123c77d6531d183374f6f79b353116ec168a3a3..d3bf53f969f4f4134484e1149db566926f7011b6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 94a82e4a5030a48fa99fb184cb47eba95354f1e5..9c1aa9ee3c86c8e84521b732e55a7fce6d00cfac 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 058927b46f982483bad590ae06205fd4bde8bc50..84f1077ffea05ed432f5354cd3876fac4e3bddf5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index a8e156eb9d448c58a6454d646f75800e1e57a38d..e28c9e245306d0d1d5dae3b3ccde6fc524c168dd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index ffd2c2f21c40d76ba0afcad6ed29ac36c87bad7d..1a97aa2eb366ec92733baa06c90ba769b49ee8f7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
@@ -131,21 +131,21 @@ namespace System.Data.EntityModel.SchemaObjectModel
 
             // Enabling Association between subtypes in case of Referential Constraints, since 
             // CSD is blocked on this. We need to make a long term call about whether we should
-            // really allow this. 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+            // really allow this. Bug #520216
+            //foreach (ReferentialConstraint constraint in Relationship.Constraints)
+            //{
+            //    IRelationshipEnd dependentEnd = constraint.DependentRole.End;
+            //    EntityContainerRelationshipSetEnd setEnd = GetEnd(dependentEnd.Name);
+            //    Debug.Assert(setEnd != null);
+            //    //Make sure that the EntityType of the dependant role in a referential constraint
+            //    //covers the whole EntitySet( i.e. not  a subtype of the EntitySet's type).
+            //    if (!setEnd.EntitySet.EntityType.IsOfType(constraint.DependentRole.End.Type))
+            //    {
+            //        AddError(ErrorCode.InvalidDependentRoleType, EdmSchemaErrorSeverity.Error,
+            //            System.Data.Entity.Strings.InvalidDependentRoleType(dependentEnd.Type.FQName, dependentEnd.Name, 
+            //                                dependentEnd.Parent.FQName, setEnd.EntitySet.Name, setEnd.ParentElement.Name));
+            //    }
+            //}
 
             // Validate Number of ends is correct
             //    What we know:
index 05d03efff65e3d10198999df7ddfbcecfc74394e..1d1ece88367a59af8f722402c637aad24d203391 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 2126b2a9cc7c025b26cb2019aa3c826cc3567dd6..07445c9513280eb25e928169a1bc4d993a288c6c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index eb40d3dc23ca5485b126abca06f2dfcd12db8f6b..49f2b7a865f7156833b17396571a3386dab768db 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index bb05b4a3e0b32afa5536a7839609f25fca39245d..fc032324166366627142b1b59e0a71fda3e56c2a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 3e5c9917d77aebe9457bde34f1785721a7f3794a..1f831a311b617ba140f09fcbcbb6d9f813d90a34 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index a037456cdcb99e31c1fcbd46b5a5c3b753905013..30a10dceeb17365695146df49e24a26726f8dc0b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index de1322b8ec175eabfc95c2f5bf5392df7e5ad860..2ce12d5387d1d9a84decfd9dfff1adef3483868c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index a1847012ca843a87e84108a7c7a8136147ea2153..9839bdd1fc1bfabd8046a907f7e5d1f71d39e738 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner       willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.EntityModel.SchemaObjectModel
 {
index 1e2c8644b097019ef388e1184f7b1039e9a48364..8e5edae4bc9304586fb70d6080a5982a695a1c2b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 47d691af50e0d26d04ad585df99cd449e1f1d2e8..3a5149eef5268aba93b80ee9c1159b0e624579ad 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 7f79e87748400c1e218c057997baf995d0c9ca86..bc0940010fb28feda648e95d3ba8012f2f587f6a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 1b62350a0c2e94baaeebb8e067c574856d87282b..a44097e954b96f31cd7960c34ea583deb60a03e8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 89348cb93744a454867bf7076271876b88f77fe5..97449e9f05ad25c9eea36ac3d3f198f6df19e45f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 796497f28517f72e22189ccbe99368d7117cd20f..3909de58609b78deb0bdb75b5a4221cc188270d7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index b1dbc31b21c44a750a89711e3c5cfc41ed867042..53f19784b37cb3526035e1a56d4f57337d3fc72d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index b290e9a740287090b62964c4e95d4a9557f345a1..87bb5caf5f7d225615eff9c10b7242fdefff1714 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index bda27b31ebaa615a92d589a957573eee7c49fcd5..6a7c4c121028a7eed1ccf4981fbde1c46deee42a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.EntityModel.SchemaObjectModel
 {
index 54e400806520306a8ff46bbf9bded1f269f5b4a5..20550a805f4704ac31a32a686b00611211d18f0f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 5965358fd4f2ac52dba141abefec0366f818097f..d55c26c74d8abd3cdaa15c0b1b4de9069b99ad5d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 40e555cfcdf54d916b51c19f2eaa457c7f69c308..38d5da73bf7ad90300ea5915c8062428b3f7d4bc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.EntityModel.SchemaObjectModel
 {
index 66d00ca22a499d4768dcbe2405bd7f65a2492510..64ac3051caa9107bd1cc4ae13bf3ed25cbaef46e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index f6ed7efc20a8e4caef9b4eabb62d26e9a89c9dc5..d3634f435d695bfa3bd4c3d481b60b7600c47e2e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 5091d573a397c5a11f8cd4869ff465200e113734..b8c9f47ad8933679758fe792e63dd78b5b31ea47 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index e1806d8a65785437760a35188fa4c8806b1c9b33..fb1f5f1cf9738ae2f0a49cc7c7c6547212daba71 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 15314c5f4344dbd4024825808bffd1580de2bfce..e9ec6b5660e03dcca29699ddf4d939a34c2bdf01 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index fd81011ad40105ec3319343f3ee6dd208c9887bf..0a04f994fffba2c863516ed9b6c88669a09ae45d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 07c82622a4bc5df8863bfe0a354607c192452320..7ac9a584e3511d9a94fabdf36e697675da3ed2e5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b7742c2769918c053f10604e46865e20886fc843..99783ac47fb81a1b24ef22cf78ab6446a334c264 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index cdbd4108a22128001bf49a2c95330107004e2923..e17b0b9f0e660bb33ce173ff9a5bd227a2523956 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 16d543e005b469873c5082ae163c3c54b37b092d..7e2f1be538373f7d2959508fbda8e5e39d102bdb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index d0a9e7794e7d1cbbb0dbaede7048b8bb0820382a..a0388683aac19fa6d9eba4bd1693583133cebe0f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
@@ -540,13 +540,13 @@ namespace System.Data.EntityModel.SchemaObjectModel
             }
         }
 
-        // ISSUE: jthunter-03/14/05 - The Sync "schemas" don't follow the ".Store" assembly 
+        // ISSUE: jthunter-03/14/05 - The [....] "schemas" don't follow the ".Store" assembly 
         // naming convention but need to have the right StoreNamespace reported.
         //
         private static readonly string[] ClientNamespaceOfSchemasMissingStoreSuffix =
         {
-            "System.Storage.Sync.Utility",
-            "System.Storage.Sync.Services"
+            "System.Storage.[....].Utility",
+            "System.Storage.[....].Services"
         };
 
         /// <summary>
index 2a768a1cb4eb22ae1a8507dbeff1e8a87fce2d1c..1c4aa5f7a372880bb29113d033cd66bf360b94c0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 79be13fdd4ff42e914865cf90fb6b737b13da0f5..eed8906e8fdb5c5b6a61a23b3442dc25cdbfe109 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 25bb4f749bab556c3a9f906b1a33717a1628c11d..044bb35f30bc35cda4ce7d1cdd62a40d5558c5be 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index fdcacf10ddae583b6363ae87eef7f3f9fe93c4ab..428a071ab5b837bd8a882ea398ab2f9c9f16fa78 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index ad6c82d1e56509a83c8e9a8b79bd4003000f4ea0..6e680d0b7ed6e6e6563000df10698b1b5c199a10 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index 073088e111f6162259673d9bde79c70bb0be8198..9c3b3153bf43b8f25d1260a58118aa7546660db7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index e6ea1117a1c8e274bd2c95d905b6a953209c4725..3b550b8e67c5b8782bc247bc48aafb50fa4a3008 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 1afb48b5dc66c289a84b3562ed198c941258eece..fbb7a3ae91f86934f4e3f07a4e74808f8e453216 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections;
index f20a2965197dfc5b1e132ed02fc082fd1998e7db..5e830ffb92f97676e1e5d405f75aadb2fab96c27 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections;
index 09196b79ed80710f75ca941b32618f7a10612003..23f186522b92ab5cc6f33bb06dbb27c2bc60ec14 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 20c9da2701c2bad44aa383a254589f2aee8ec28a..fb95425bf7a1c20a592093e3e87559496fa22d76 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 887d82668913515c2cc19054d4cea6c7a1ed538a..c95e93da89e29be31ec08aaf61e5e2550bdfedbc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 914cb26e5a65116295678093a96a7888479a258d..87637e605996bce996639d0df563872af6b32888 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index d0f548aef8bde471a2bd775077f1fb222fa93677..36d8b5c773bd7629f2c8bfd8c51cf3282d0502db 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.EntityModel.SchemaObjectModel
 {
index 29ca6faa0287821a4c65c6c18d65246c96b8d741..12e7e50dd5a245cf882db78a681d0d598c3ef025 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index 62786cbaa9d2a6b677c4545835bfab8c78accccb..6db83bb2cfd5fc07df5afde86590d525c12f8db0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index dd3425434480c00ca52b4bc9043ff639d494f087..61003c00172c1ac387b0e0074ca561ffc6a7fcd7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.EntityModel.SchemaObjectModel
index a9ea0c731406451027531b2fc3a94aac4f2c3947..1095504e147f7a50748466bce41c7bccdd8df63a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 151fed0e61769edf376d16837481273641d2b418..eb3f3763f0c3c26c65985bcd4573ad5ef1a24f59 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Diagnostics;
 using System.Data.Mapping;
index 006f095191c8d9da0de1a722f08ce28eb651519d..d9a0c3b246986efdea8652565669d09df3d089f9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data
index 22f12f72ea90e7030c0d66bc3e3a87cbeebd3261..0626e41a033cdbfe83c34a939cd35efa1d767197 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index c078834631a97823a59b7a7a70f9e07634054555..42e6cf01a1c0e59fcfa6d2aa026a95d4cebe13b5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data
index 52c82e3c7027239ffb170f37db0b311ae08f0b4b..44b985c6c3c2d92f72838706bac5679f04e7298b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index e57eacff796ce19b98278b40847a1cf1a34128a7..cc0286ea6642e29f05187ef0dd233dcac30f031e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping {
index 5d4e87e276e7ca59d768f5b1bdd283132b2d5a41..080a4486d7de99f63c24254886dfe89a7ac1cda4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 5e6c8a3f8defbc7856a3ba7a61bb2ee6f9cc1044..d6caaa76c355328f2be047f078cd3a08088b0da1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 18bffc41dc02ebab4fb00ec31c75e5ef50e719b2..1b9cf0e5d676b3d4d0161a9c141ccefe3fa44172 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 6c3a297b64a2ad2d7c9dd1d54a5eda81917a964c..610975820e83b60f0001d347b8f9107896088afd 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner willa
 //---------------------------------------------------------------------
 
index 7e278377ff9e0037eab08da35552e439c1f66f4d..f0507d2946f86f2483de0fe43d0008d2340e93da 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner willa
 //---------------------------------------------------------------------
 
index a2c85076ab9a1ab02f749b5dca96408f7082e9d5..88677a82ae67a96ba337865114e34e0fded58940 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner willa
 //---------------------------------------------------------------------
 
index b6d419b7b5221584130cf575677d4666c6a9caf2..17f4c59dce074c665044f1b67827775861dfd8cf 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index aa74a7c7e7b1d7ef4d410baba963c7474205b240..c03c1cd57f28f3c368e78b7f0cea7ad36b4847d1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping
index 6a9f710c2ae78d8cac2c0d5cc23c1c018720cad7..d6f03a94a15277ed48c48257a27b75cf7edf664b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index bd42445d12ba9b0cd4d29d7d9392a35c9973ce34..864c5b5084d3e8ef4311b1d7093c31511da038b8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 694846f49871775255710a02923607c5abadc6e7..1500adf78f39a36292e9db4545e981eaaf5c9f39 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 
 //---------------------------------------------------------------------
 
index a2f034b38de72c58cc3ba11260cbb90792ada596..fd72adf2af81c5f250a20fdb4da9d8a62fc6df30 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 02bb198649e7ce991f715ce91aa9dca76f879ebb..c6e1ac2154263e996923218b54709369f1765e27 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 09b9789d7de0758421b8ce494886325182bd5217..f77723f4c9ca53f1fe65bfa73285c75d2059d6e3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 61ff5df9971eabb0ea42c6fcab7f42b71aac835c..c0a9472f99584e4eccbc8343cd8a1c86c14a02ce 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index c0f7e7e40e76e76d1968c073d287e0513a2d519d..ebe68f678d3e46e666b2842a2d0af555aef39b9b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping {
index f2a4f7f28c7a68a0a0f02afeb3a6f70b7be34d16..577d30411bfd948deea9329d7c07d826a27207dc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 8ef29bd37f344d5fce866a8c2d697ffc22a92558..391865cf6ac0dd7b0375172e32457d068e8f2eea 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft, Microsoft
+// @owner  [....], [....]
 //---------------------------------------------------------------------
 
 using System;
index afa203d18200d8025979e319bc7a74c5dde56ab3..bcc504de838a947a607386ac653868d51116ff36 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index cefcdbf047a634465e18b208c8c760b3df38c2e3..a8fe6a6109ddb19ebd893e4d5eb1260fe78f381f 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft, Microsoft
+// @owner  [....], [....]
 //---------------------------------------------------------------------
 
 using System;
index 5bdf08056e563f2cffbfb29977c6036bc046d4e8..d0ee0d38d05e5b79947a74628af22ce1e6793eaa 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b9e1f19bca00f4c9b712423e1b016432d2e325fd..a9481990ec9c16faa3876414163a371539012412 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 79082acd44263eace8ea3691706d26f693eb2585..65b8286e3c6c70ecd32c450568845adbfcda525b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index c96d6f796f90bf87718544ab4c16907805e1be1f..59d2e3812c38e38379c9184ebbbd82f240689403 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 6ed006dca51199e7ef920a033e1373490c4330f5..41575121e4e3408a77776ea7089a4ac99bb35cf8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 6c5a11d38b99cc2ed57c49faca7fabfc3e41d33d..faa501be935cdee91ab9c67ba024dcaa855c363c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index dcdbffffe3389e9b60a3beacf0fa43520526d556..c7a1eb015d3bbeb5558ed0fdbcfbc38cadfa50da 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 5dc0385243b402f704981e6d6de125cd0883b3d5..3bb5addcabe442f3c636fd99acdaecbad5de482c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Concurrent;
index 2c808ecf2f71c9a68ec631607471eda2aec591f0..e065c9ab9935d6acb010635fd203646bdf05b2e2 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections;
index 32eb36cb785dd7915db715cd6f7669da4cdc3b54..50e659c6bfa52409fff96482ba8a4413c8fdf448 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index b428ed32e4e51171b7f1801c7f356ae9fc5fbda0..455de50204d73006c72e934c25cb075604c4040a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 16b34ed9a5bb98a96306341f3f2c11d7d491800d..84ed3c3e31620cff85872b925005d816e37f5d41 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 4da03bddad03440d29d741bc00bf806d3f4ee581..d281639e8163098ea905d9badd6adff6e3ae667c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b5f07a835d5bf8929a634578dba931a57b491dd6..8d379b4985117c8ea05926d5e94b2a9cbabfb6f4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 5037b183ad40a0801dd5f6a3b865df1f9ee83d8a..a3936e775ad8cc253cc1b0b61458de8b6105a955 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index 1eabff48fc861279a0359c9e2fcd303458c3f98e..0008c3ea0d6481a67076ad9c1e2304bb19887b01 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index b44dafdadae9e49af9f337ef00cc28b1d18fd581..bb2195d49e9b88347a84d58acc13e6c9a061b3c6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.Utils;
index 3e46e43dd30a1ce787d5269bb09f2c54d8240abf..0318d9868543642ff4b09ec240c2f90efa943892 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index aeac41b95be285a5cf48261bf2c2bd6614f91955..82a4dd8e5b1f9085bcadb33cef8274ce9759aa57 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
+// @owner [....]
 //---------------------------------------------------------------------
 
 
index 9f7c9321943c969683043ff020efcaee5a568286..5f4cc16d35ddc11dce3d6066703d39f1ff932182 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
index bb15c28fb9a198826e5dd95587fbc5048ab2fa1a..5b4e5b7ad3d478925b750c342dca320c2c3043df 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
@@ -110,7 +110,7 @@ namespace System.Data.Mapping.Update.Internal
                 if (stateEntries.All(e => e.State == EntityState.Unchanged))
                 {
                     // we shouldn't update the entity if it is unchanged, only update when referenced association is changed.
-                    // if not, then this will trigger a fake update for principal end as describe in 
+                    // if not, then this will trigger a fake update for principal end as describe in bug 894569.
                     command = null;
                 }
                 else
index a735b2cba4677006d6a81871c4942c385590c509..8f5b8ae908a6e0aef5f7bb2ef564c6e246a3c85a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
index 984fdc727513d576eb3212fb69a833b420c8ffef..72db96c3fdd2a8d57a7a4630238183d142918c41 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.Utils;
index c742f977e9f826f0faadba28ea938015b1abed90..3027ad55fb086f3b274ab7d5e6a9a4b56e32239d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 0e43c6cadaa9267a84740747a285398fda40906a..eb4d369acfb6f88eccae269796a4db076d0a5c8b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
index a45bf47ee0aa3f03a3602ca338eeea192e920f3d..578920ab53fa2777f89e7173ea16fc240d1d49bf 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
index c8845f555992d83e0c20620244138dc200b01ec2..48daf01bcb788aaf5de1e92facd5836f0274cc21 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index f4fa3a2a0729cf03d88140817c7e0ea5fd991964..cc924cef2a86937f3d5e1c656b71a8927e27c621 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 30ad18fab4b9c82ab60dd91596396fa9c1842d09..e8af9fc114a33ace147a6c559974f70617a8fe15 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 56ad4f9430225b826b0018d49d57bbcf877a0c6f..799d01892fc62870c9257c42da4d2eb46990c897 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
index 4cf4b5252907f1b1a3389f4e4b44a0a665e98f5f..44b5035763318eec1614bb1479123997240b21ac 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index e6dfbe7aefb075912a84d628e158bd823ab4eb26..81ff164b67e67cf65717e3a2f65783c9031def74 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
index aa5e72d1ddeec3ac7c2744451904b485be11e415..e1e72226d4a6627eba1a0e6d87cd4dd270492f39 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
index 245956fb066fa397751cf6de0d5ed893cf2c5b6d..9718ca9fef0f567948f64d85042de08bd929e7e1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 3acae097f5c0d19713f4484f89405c2f7f2ac9dd..4567d472cb5621cb2a5422f38ad3e649797dce07 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
index 0d0e4713385ee982b90969ae9cf8a9e9f3b187ab..055dcffd42ba47a9e5e0d79dcff12aa95f5f873d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.Utils;
index 4de147195c1fe6bbac9b8c54d49fc98f5c1fd13c..2aa865a3b22327ec6b8fcb4c177171a16f8005cb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index 79ed22c377a4f6ff7bd337f92c5b1dc113739a7f..001046534557229a93163b6cedf198358b41b777 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
index 925fd2017d8e86bfcd5a7ac7b4bad90ee4535ba7..97eb4d5b00d5c870e231c167ccab758a735efa6c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 // For the purposes of the update compiler, the member name fully describes the member
index 9260ac82643a916a695c1357784892a983dd11b0..f5643a33bf316167353d9110766e190fe8d9345d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.Update.Internal
index 73d15d4f5b80913283385d4d403f8918d6bd9c5f..ca37def4e4db516a879f838279079380f1aefb16 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 487d6c24da478f547cceb0d18deec7b00cb4f977..98564d69de35ea56c651b815a16bbf78d991191c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index e623485215b7a6ceb3fb50fe2b0f6621cb6d1b9c..180d906b6c0c24e4085188fe46ff88ad326fc505 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration
@@ -131,7 +131,7 @@ namespace System.Data.Mapping.ViewGeneration
             foreach (LeafCellTreeNode childNode in rootNode.Children)
             {
                 // A cell may contain P, P.PA -- we return P
-                // CHANGE_Microsoft_FEATURE_COMPOSITION Need to fix for composition!!
+                // CHANGE_[....]_FEATURE_COMPOSITION Need to fix for composition!!
                 EntitySetBase extent = childNode.LeftCellWrapper.RightCellQuery.Extent; // relation or extent to group by
                 Debug.Assert(extent != null, "Each cell must have a right extent");
 
index e58f58fd666680d0bccfed2a5f60b0afa4d0d152..c046b6313bebe9630799c9a7ff371260e79ed89b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.Utils;
index e4e322dc8fa628b075456e17c26baf0e7060c6a7..5d0c913eeb79357baa63eb87b6e40e7554f8bf81 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index a842a88a7bf8f6acea801d7bc06aa31dc3de1c9f..38b12707c68f963c0e32a5d88d7b206fa3db8d30 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.Utils;
@@ -277,7 +277,7 @@ namespace System.Data.Mapping.ViewGeneration
         }
         // effects: Given a list of node, produces a new list in which all
         // leaf nodes of the same extent are adjacent to each other. Non-leaf
-        // nodes are also adjacent to each other. CHANGE_Microsoft_IMPROVE: Merge with GroupByRightExtent
+        // nodes are also adjacent to each other. CHANGE_[....]_IMPROVE: Merge with GroupByRightExtent
         private static List<CellTreeNode> GroupLeafChildrenByExtent(List<CellTreeNode> nodes)
         {
             // Keep track of leaf cells for each extent
index f771247ae0e4c885026ed75f10a90e16843c2561..47c59a98a64289ead401401af1a36e8dd5ac79d2 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.Utils;
index 499b17c2622b019be719983751f1cbbed358f770..6bb05a2b699b3b07d9fd83897b943ccb103bab04 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Linq;
index 113e28387d8f460ef7e25d818844ce77e9c75fdb..79a030bafcad0f7a37ee8444b45be8b4fbe4ee56 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Mapping.ViewGeneration.Structures;
index e8ba88d0a35058d590ac112b05c375df9293fa80..950e3e963b5f7da24703fcee027ecd6e404242c4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Mapping.ViewGeneration.Structures;
index 7c4eba699f177e8ba4593bc73565e17eeee87dc6..98164a94b9918cb89c47faf6169d9ce0bffc535e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Linq;
index c4db94301f88ad828f354a0f495c94fde2e94c04..9c7734fb8052c95968ba9cb4b35dd3818794e362 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 429ed1b1fca9320325afd70f8aca08412f5e1202..81fc028846971fe57c7518eff1732a4ab1ac3b79 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Text.RegularExpressions;
index c4a67914078b68a38bd6f9057556717ed153889d..f85ee23597207aa597b6ae5d310a21e1920d34b0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Text;
index 408f2a90b159299378d7aa2e13d12259487dccc7..45c0a5f078f8e3774488762e4ab43eaeeeee6900 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index 3d33ff07f6be2c2d37c3cf1a607871ed1918c467..eb2afc5c045631453fe1af320b394e1529a77531 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index 95dffb4d6d252c32005721f5054cf95806ba5936..2c7b8c23f0cab34bc8119da271a7e6ed9396f648 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 37005f747e96181a27c558a719221147f2c3abbd..00988416f9e2192dc41b70ed1ffe423aadb3e3d7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common;
index 5abadcbd1ca112f03fac1b18f11d2cdc7c6a4a82..0c7848e3f5c33771e4b9845c79574017e55a1db0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index bec352a06e036756695599852dd17d136f933b92..3c2c331ced454c69df4b180a7b90a0b1ad5b861d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration
index 6c94e503845d2b7e94bc607b690270d886d05618..934e2018a15262bdc101338233b020d7b58b667f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index ae6ec4120095d5334a6eb4cf6a078b38b8226d81..cffda30fdafdd48c29cb557c2acd590e69e45b01 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index f13c6dc4798d3799fab3106ffed9426b1475e487..01754ba8ca386fc74469a073068f96228d8b6378 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 60fc38179a9701b5953c6b1194b3490eb1dcb244..d209d9f8086cb6cde74560eb92595faf2e3f7a98 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.QueryRewriting
index ae9abeb5c8f915ae21965a58e18bb328c9d09106..860db188a7b7e24285747d2d47f5fa28796b9218 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 41c4e1dd90be0934e297cc82a9c4a8251bcafed2..df892676b9c240353daec253ed3de536c59abf62 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 4a28e458c96519db41c6f967f818003179451e8e..55d91edbd42f80e838ed893ec33a714542f5f868 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 588dfe0f4d215a837247601d937f34a36e287c32..4f1d21f57c7aba4bc40c67495b193d18266e89e9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Validation
index 2f944c42fd37f5fee0d8061645c624ca051c6865..8a1ae2c20ed54252ae5c78d09940825e1d70680f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Structures
index c949b568161ff5269b8d3a701e9141a235eaccb2..8d490f590c43cffede96f4cddc6c57fbd29d184b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 3fd29a627d62ab7b3aba944cc7a0741be6e4d88e..c44639280badc227d7b53812d8f50275390ff394 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
@@ -366,7 +366,7 @@ namespace System.Data.Mapping.ViewGeneration.Structures
 
         // effects: Given a list of bools, returns a list of boolean expressions where each
         // boolean in bools has been ANDed with conjunct
-        // CHANGE_Microsoft_IMPROVE: replace with lambda pattern
+        // CHANGE_[....]_IMPROVE: replace with lambda pattern
         internal static List<BoolExpression> AddConjunctionToBools(List<BoolExpression> bools,
                                                                    BoolExpression conjunct)
         {
index ade70afbb4666ed02257c6eb1111027aaae97690..fc4c1968033aa3535168a15ba89afae23876444b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 64fdf53727110300603704e8368e48adfd769332..babeaa62fd95c34dc2ba024b2048e1749b0b6713 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index 6e6e4d40d28ded26d4f2192a0cd6ce734766b319..1c12511787bf241ca935b1377bc42561e016821f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index 8cdc34aed522c4eb01b1f88a4deb158544ea08f0..ee74e3a1b5aa67735ee1301bfc307540115af620 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Mapping.ViewGeneration.CqlGeneration;
index d7bc34322042a15e9285158edf13b69de4e8bf72..8fa4646bffc2b3565f95d47fccbc4bb1010ef6dd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.Utils;
index 97740718c4bad9c75cb118e52afe4166308c11d1..251f86b8e6cd4cc92b302e49bbd762c36f44475b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Structures
index bf02ac8aaaa91eca951452b08991417acbecae47..4cc45bfd87adb5b5c5447cb27045cf11874cae46 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 3ed84c6123bcf27fd7dac7f3b68564a183cdf617..43f8b68149a50301a69c65ec5c1ad8c8973bc4c2 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index ecb925ac2aa10e60d17aab360ebc1f2bdcb9d1a2..6bce7b75eece874eade6e2e967c13955c3392f12 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Structures
index 351a941659e4939b8e97d511c774c68200281e79..2c78985a09dfe5e9f713d064f3c4843460549c29 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index c90fbb6688af54afa8cb4080ec976fcfd7b44964..a77b8a4ab8a66ebf1bc6857e24a4b70108ce307e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Structures
index 4c9c27cbdd52a75a24d4ab098d1b783ab4828316..93a14b96481b4d28c30f30b41defc4e78845ecff 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Mapping.ViewGeneration.CqlGeneration;
index 57b4f8fab6d060fff56b144f56ab78da9072ce7a..244c548fcda2356d2d15ee176b1d23721a265f24 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
@@ -177,7 +177,7 @@ namespace System.Data.Mapping.ViewGeneration.Structures
         // effect: returns the default value for the member
         // if the member is nullable and has no default, changes default value to CellConstant.NULL and returns true
         // if the mebmer is not nullable and has no default, returns false
-        // CHANGE_Microsoft_FEATURE_DEFAULT_VALUES: return the right default once metadata supports it
+        // CHANGE_[....]_FEATURE_DEFAULT_VALUES: return the right default once metadata supports it
         internal static bool TryGetDefaultValueForMemberPath(MemberPath memberPath, out Constant defaultConstant)
         {
             object defaultValue = memberPath.DefaultValue;
index ba65fe75cdb6e52a3dd173009d54d62cb50cb07e..6b312d1eee26431f5aee5f6348ed789d248a785d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Structures
index 5b37f45fcd382d19c96a7c9ccbe7e8ff9e64f4d8..bf49103be6a8cdd5416dc296a7dd9f5bcaa44669 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index a67833981cba631a4d02ddb9c419746b8e790ecd..66778f77413297a85f379d7310a29994654120ce 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 47e31c66e03975e2ebeeae15553e47ab6078de4c..83dbe8c0051d57a789618fa79d145672ce3e839a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Structures
index 5ecce1d3129d5c5628c34c021fd5039b60e0e6a6..3fed309b1e0e91df8c471c4fa43a38e660de656f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index ba48a1389b0a4c836c3b1beb35f523220a0bde01..ad0dff46855b3ed3a3e428c6e4da0c4d643e450f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b17ce971f8a984f8b518f506af1f0fbc51d36195..a58b3771257621576dc8d22274bd18c69b4e5f74 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index d36c26c239b96d4b07f18ddceded12799c5633ce..b508995fe82466063bb3ef7315b5e01ffe9ac79d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index fc63a292611feac7a000cb335c8d617f49f5ddbd..797e1e675535cbe09307435d5347aa1f2d2b1f9e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 9c671fe6b4994ebd0f0f9a26250b3a9b34e4bf79..fa8f05cfa42134554dd7275dbf2f00f457e67632 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Structures
index 231b1563cb2e662f7b34b289207fff06b6bd61d4..362e9ff84443366caea2bcbd276ea060d7500c9a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 48e2157c280a820d3b737447db4cca74cfca11ea..5fda4c615d858b274957abf1aac9fc9771b15e77 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Structures
index 8ad476f8713ecbe8d8ce2c19766218fa61b17312..b9800cf93c2f6975b12ffa129f9b25c0d4b37a14 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index dca95d8251ac1f5e05fdef42c24cb0ad7b7636b5..a7219d6e2e8036bfe8d9b342b311e71b0a8a2240 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Text;
index 59fa8a68f4320d9cfab11753aea8bb08935c0402..722aa09c79277a622f03d4f823aa60ee19930de8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 703f810962312ac93ae2dbc5b9cff29f86df9270..6dd961fd2575e9f2424299211b92c0872102f0b6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Text;
index a17ef9ea303eb50e00b16556c83d953c4b787412..c4cb20d73948b2a5630f7f08fe5e5d97aa8947b1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index 2d262cf77be9a8c76aead147b5a2adcd12b10e1a..d609a2fe78b77f3d6ccd4c888d30634d8e614fea 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
index fffdf5ad1537f4648838c8fe2c0ea33bb454292a..8166c317f577d066daa353ebb611b0d321d36ee8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Text;
index 5fb40d8716e4e2245dda67c3baf2e74506f4cfb7..befe9b356bcce1cf3857a07bb239d3b671233acb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index fbd9c76e843339631283e8d3ec783d0881ad833f..36603532697ad59a13cc3cc0a1e0a5e75e73ca1b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.Bharani1729
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
@@ -88,7 +88,7 @@ namespace System.Data.Mapping.ViewGeneration.Validation
         {
             AssociationSet relationshipSet = m_cellQuery.Extent as AssociationSet;
             // Gather all members of all keys
-            // CHANGE_Microsoft_FEATURE_KEYS: assume that an Entity has exactly one key. Otherwise we
+            // CHANGE_[....]_FEATURE_KEYS: assume that an Entity has exactly one key. Otherwise we
             // have to take a cross-product of all keys
 
             // Keep track of all the key members for the association in a set
index 299fe131dae51dcb775189d6a8714a2dca7946c2..b52c62ee46c3744e518f7b8411d8a9b4ac2f8ef9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index ac9c66cb674c0cf1479484643f9d4422762d5076..1824b2900aa7edfa58bba5850c1416bcc206f960 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index b57ab576fc87afd936e52a0739e938c2e39a9664..918b7ff0db8746907a598543d5c986d413eb6cc0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index a89bf82715314036d255745798fddafb65f337cb..eceb6063eff64f419c758a72b17510ad2ecbb846 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
@@ -49,7 +49,7 @@ namespace System.Data.Mapping.ViewGeneration.Structures
         // -- prefix is prepended to the entity's key fields to get the full memberpath
         internal static List<ExtentKey> GetKeysForEntityType(MemberPath prefix, EntityType entityType)
         {
-            // CHANGE_Microsoft_MULTIPLE_KEYS: currently there is a single key only. Need to support
+            // CHANGE_[....]_MULTIPLE_KEYS: currently there is a single key only. Need to support
             // keys inside complex types + unique keys
             ExtentKey key = GetPrimaryKeyForEntityType(prefix, entityType);
 
index 28c9c71a945ee0d0b33db72333107bb136bfd8be..b4cbd320229dde8dfa182011617700aa53af5fee 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index e9de9dcdb0b294138abfa2d0f83c4db71e05ae84..7de84425340f2efd4f95bc425b909d2139538db7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.Utils;
index 8e43ff8f0d37e92e69bb6581fcc2fe584a4a22a0..a3eb207a5c3ae421a53b01f5caa303ef0da1a63a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index dc4799b9aee12afef62c3b94155e1c9caa7e6931..be91192de837bd0f9a419c0a34413d25fda4ffb8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
@@ -62,7 +62,7 @@ namespace System.Data.Mapping.ViewGeneration.Validation
         // null if it does not find the slot in the left or right side of the viewrelation
         internal ViewCellSlot LookupViewSlot(MemberProjectedSlot slot)
         {
-            // CHANGE_Microsoft_IMPROVE: We could have a dictionary to speed this up
+            // CHANGE_[....]_IMPROVE: We could have a dictionary to speed this up
             foreach (ViewCellSlot viewSlot in m_slots)
             {
                 // If the left or right slots are equal, return the viewSlot
index fea993596f764df51cec90bab33a5c2e85a3cbf0..9b9fe6921111df129f8ec517a047c026692573a0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Validation
index a8898c241a3e02bb6d8a3aaf86ea1f435560a5b5..704c122b1b94109d18274b9c8371d8e755560b22 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration.Validation
index 497a193d435ed105a5a3f6ac0a87ad5b13355618..a8b380e66cb84b7732849298e2391183f8d2698f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index a0348faf796247f3fe14d7ab6b79ec444279ec78..1061c52a563c3d608fa3133dec8551cdd33250dc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.Utils;
index 96d9d83e985df5bd4562f197ea48f2398324b8f3..8c5618e7a68a7bafac77821e398d8b32e612dccc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.CommandTrees;
@@ -492,7 +492,7 @@ namespace System.Data.Mapping.ViewGeneration
         {
 
             // Partition cells by extent -- extent is the top node in
-            // the tree. Even for compositions for now? CHANGE_Microsoft_FEATURE_COMPOSITION
+            // the tree. Even for compositions for now? CHANGE_[....]_FEATURE_COMPOSITION
             KeyToListMap<EntitySetBase, Cell> extentCellMap =
                 new KeyToListMap<EntitySetBase, Cell>(EqualityComparer<EntitySetBase>.Default);
             foreach (Cell cell in cells)
index b23ecf6a9efc8ba0e4d6f9c36fd9c1fd2c609e17..50bb0142b12e2e370328d798c97f08bdc7b24fe3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping.ViewGeneration
index 20bf0b8be66c80ccc211c1a76554ffd82a277ebc..f7a1d411304e97b341baf2f802f473398dfee9ff 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index cce9f4315c52d861592903ba5f98c5f90e1a47b9..2ab3c302c64eeb3c78c598f632b7fce0c799e10a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Mapping
index 0cd23d838ab947737b50105b766bfeb7f2f21546..4c8e9d1c52f041ea8cc5131fb173ab695a6b7a66 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data
index 440497527a68dd2136d0f662ecd0a15dd3ce6a30..cf39195f05585bbe447f6de4e069c99f87269e21 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index cc3c04e0ccfd2fa0f0102e5a801b4508cf6ce3f0..100159b7cc15c8a498fc12118054008bcf370140 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 96cb27bb72913f29779a003fc2f320d26cc8cdbf..708896590ab7fd6f9c400bde9a9ec6bcb6149a66 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index 40d2b765ea6d4ed8d690f47e2615d7ca86ee9dff..eb4e61ec3a17f044d64d4e8d8497f542ba5152d3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 608bdd56cf8f0b9c48b5565c09c6c0a33dd53658..2ed13e505f88d34ad4843562435a7a6bc0820068 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Metadata.Edm
 {
index 134045feeaaea31874a5ac5f62f7efd6d141a24b..a5abcab9c548be37e94d8155380a7dea3774659f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Reflection;
index 33511243f7584ba01bee5d40adaafeba1dbf5f11..48490fa5ea5ca2fc48d54b64c0b5d4ea3bffa49f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 64df1f868d9ba1f32c99be699ac37edba8142e2e..e0d165556caed8da7cfb8c7fda41e6558950d6cd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b6c5cbd435f70f76f31c13f41276599f6b3c0583..3fe246c32f3903df9cb88d3e28aa87a92f0a454d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index f12462b1cfcbb0f70527c123d4abc947e8378c83..bc728310577e6c01f07ccd74373c55ee17b61341 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index debab7686197804759ad34bbea9f8c27768cb57c..27f49ab651ed31685f693d9464089d5e1cb17cd9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index ad0fe21a19dc35a6db88b03623460c5495e08093..b3aa9751cd0132088a222fdc47e79f4f0f92f8d3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Data.Common;
 using System.Threading;
index c036a9c0e7c2462330b86b80ea791bdb140e4dbd..38f6d3d350c8c5096584b4b92def4eec983d1514 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b85a830d454d6dbdc4515a32144c419c3e214522..45ce070b20982103ae3fd70fbb257f379b15d463 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index 29632cdfbfed7711382769d80c789810195143ee..a9c0b1672d05667317f6d9e04ad344e4bceac814 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index e04b01429969611251ca9fbfdaf1a02de14d3b95..2a5f5c8d8ea00a0ecdff903958b5975c4243504f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index b1529dde63395a3c173bb7ae152c60d4927b3f25..0d42381f47b56b9d0ae413b830fbd58ee20e3f3b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common;
index c324b5475cf2ea1e85f6149591cb35665c9eaeed..39a25ab74781d74a6418ba20889d8a96835ae515 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Data.Common;
 using System.Globalization;
index a51c2f59cebdeb100f785cf8f0fcd748b5669f4b..e04b365e3f80f582eb3288737708d74520d04458 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 500c7b2694941f863b77b8bdf1a8a0a893fc7eca..d22fccf9b129c44308b890f7f2b02ee55023239f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 8b09606a6fe026dabec9fe316b953ae81fa8d3d9..0679dfe8aa364b7a2120c96bba7df10e8e088aea 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index e0a884a84555a7ce9d1326db5270dbca2bd4d48e..72ba6079dd3d01fab7048c05a736a7068eeae377 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 60d95712d4faefc3d8aaaab0a59dbd898b8d19f2..65f780409a5f217e2236a0eae71f683391c5868d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 2cf2e39ec5ef55be36ef883e31a95cbd5583a5f6..d3776b976ee9fea4792017e4ba0e05e7717da082 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Metadata.Edm
 {
@@ -64,8 +64,8 @@ namespace System.Data.Metadata.Edm
 
         /// <summary>
         /// Returns the list of the member names that form the key for this entity type
-        /// Perf 
-
+        /// Perf Bug #529294: To cache the list of member names that form the key for the entity type
+        /// </summary>
         internal string[] KeyMemberNames
         {
             get
@@ -80,7 +80,7 @@ namespace System.Data.Metadata.Edm
                     }
                     _keyMemberNames = keyNames;
                 }
-                Debug.Assert(_keyMemberNames.Length == this.KeyMembers.Count, "This list is out of sync with the key members count. This property was called before all the keymembers were added");
+                Debug.Assert(_keyMemberNames.Length == this.KeyMembers.Count, "This list is out of [....] with the key members count. This property was called before all the keymembers were added");
                 return _keyMemberNames;
             }
         }
index ef089ea63df91c2809497cf5d15ce4bde5f88de7..da510a866b162e82f71dad78634b046b1ecb2472 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 1c4df323c560b8db2e7cfc97bc099f82d7efb453..29488511a7d2199e680c2c5f33898afd3c712b67 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index af7f7551704414ec428bdd12c162558ef6bef465..5e985eb5ac0a6c12bc1af0a480d5bac7fc474863 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index 4a8670c2768dbf4aac5721662ac770bafeada339..3bb0c373d3da3e7a16ccc340fd23217dc199ca22 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index d87d9a593036b5cb7296b1de4bbaa072ca21c96a..ef7173e62f1d6350ca1b2ca38412ae62458b9b65 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 25cf2a8c4ce25b416496f2b177854836a98cf77e..93cba7cd8877af4a751c33512bf602e0e633e5cb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common;
index 53325caf1c35a66f0783eaaf2d13c6e6e847c4c5..6595c4602296792051889e76de676561dd7abe14 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
@@ -27,7 +27,7 @@ namespace System.Data.Metadata.Edm
         int IndexOf(T item);
     }
 
-#pragma warning disable 1711 // compiler 
+#pragma warning disable 1711 // compiler bug: reports TDerived and TBase as type parameters for non-existing IsReadOnly property
     /// <summary>
     /// Class to filter stuff out from a metadata collection
     /// </summary>
index 326e416c81ec0b0bd00378a3c4c6d32bebdfd62a..005a5db5697f38ca3d7f31166c31a22880b06d5b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 4b768e481715cff0cb9b6c13585a0a60aa4e51fd..1e1e1517d0cca059af8b7aec308107b3285e9fe2 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index de0b94047e13b389e5487c87fc49e70ebb5bc3fd..d04aa0731165ecaa904fbf518afd16afa2b593dc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index cc60a7a0f0ad1108b25cc549999b426aff62676a..fc0e9e2a595350dd1fb61fce49bd431e3d6fcf6f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
index 155f6555977ec3405702e3a657b05df70c90cf04..c2f9cbd869a63a61bf74e236ca63cdff80cd9bf6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index e62dd919b71ed5ab1f0f84d3a5d0f4be80c7c29f..36535c8a09941562bb274c6ba8b219277031e5e7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
@@ -28,7 +28,7 @@ namespace System.Data.Metadata.Edm
         // The way the collection supports both case sensitive and insensitive search is that it maintains two lists: one list
         // for keep tracking of the order (the ordered list) and another list sorted case sensitively (the sorted list) by the
         // identity of the item.  When a look up on ordinal is requested, the ordered list is used.  When a look up on the name
-        // is requested, the sorted list is used.  The two list must be kept in sync for all update operations.  For case
+        // is requested, the sorted list is used.  The two list must be kept in [....] for all update operations.  For case
         // sensitive name lookup, the sorted list is searched.  For case insensitive name lookup, a binary search is used on the
         // sorted list to find the match.
 
index 04e93f76499a9a32b2e7162f6cd8295666a6e273..a99c0292b8530d52d95dc7f4879b37747dfea80b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index e8da22d701c91302cd8459d44a4ffa0e35fde433..126c4b7a9465a68655c312651bdfb81fa4d31442 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Data.Common;
index 0fe365f08d754a3788207b05264f16fae005d26c..b8ac93d079a675a301002c2f4c69abf5b7656462 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 3e0684456cbf4341f70e49667b78f178a23b9b94..471301f36f7bc9532ed769165b5fc4b6e6fa372b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b8119608c963e61eb361d6f39c7e4ece5b365276..6ae1221508b3b84ef1e7e8038a3d6a95a17572fb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 8fdb0eca6f5d56604d6cd7570763dc968133faf1..26897499b44b9dbdc377d72b20b3884f473f4d77 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index e8525f7cca07e625b6792dea42bea08916077775..721725925b8c05d184fe1bd983d0c31766fa7497 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Data.Common;
index d9e8da11dad11fde137863fce320568991ffb7a8..52a8949ac7ba4d95389e1d954c8747a019c1400d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 89ccf2a65bb8a0814d7399721a7968d655f2876a..5e644eb56373afebba85811656d0a5b5e3a528c8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Data.Common;
index 126408018f4495bd2f0393d3eb9b39188d5428c4..82627c4857b51710217fb1fa21b990f820ea073c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 372fabbcadcb628d41996d47388b160efebb5a8e..cb2f50ddb499114efd7c6454629216ffd98c543d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 69d4bf334f76498589dfc8c3c2079957f9db1814..fbbf97d8c33aaa9676a995b0aeeaeb4154b53464 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index b34b1578674c12150b65beea757651ba03ff2d06..19fc7d19693f536e5c5b33a4e87ab37ae0dbbdb2 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner       willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //--------------------------------------------------------------------------
 // This file is automatically generated and should not be changed directly.
 //
index 1d57ceb9d288a99ae2d533f3521c90046da15a38..3f60afa5930e3d91fa34d809dfa4699706f494bc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections;
@@ -199,10 +199,10 @@ namespace System.Data.Metadata.Edm
         }
 
         /// <summary>
-        /// Workaround for 
-
-
-
+        /// Workaround for bug 
+        /// </summary>
+        /// <param name="value"></param>
+        /// <returns></returns>
         public new virtual int IndexOf(T value)
         {
             return base.IndexOf(value);
index 8c8184cbb8e8d9817003abe6a3bcdaa4fddaf28e..d33335f4ea159932b070cd4f661d6aa09e97639e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 051d7bfea91389888e16b78f0f61386dd120efa6..71295ba55d07e8faf9435316ac62edcc4eb36e1e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 81225a715aaebf89ba217749a12f696760ef9b94..4a635d82d0087a3c88e9d079b75d9ad864587055 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 39ba5e07a9c5046ebe34fb6aa2941c06d56cb1d6..f4714eccfd9eb5f1da966cd2ed015ecab37b4e4f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 1e3b042741db807d0a559405ab3aa6918a4eaf52..46c0107a694e20988eb9a3a698825c765383cee4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 3285477da0672ebbe5e724fb31d9cf62c2744cfd..0b954067dfef3bb9adc086c0ce2e9eb231540a4f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 563a8b5d1c3d9205515e6ed17e6748e08993a89e..22e4126b516f747c91c4fa45ce7a733bd7fab35c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------using System;
 using System.Collections.Generic;
 using System.Linq;
index 43b3fa00f50ea2a082441c34a2d32a2310892b1f..39a0c85d911856a32295379d256f8b094c33360a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 82c07fbd46025b561b43fcc8ccba10a83ded9a83..554cbcdc72e67cf7be988b7a67ca2b15e980240c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index dea24673fb930f9c3079e9c51a0ba1e3ca3ed57b..66fe1c7e2223f4bcacea8a88e107a9ede622542c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 308c2bc680f05a9a12f98237876d0427ec9ad475..29308e0a41e962102a84981374e8699643c39b2f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index 3ea3b7036a0c5cf77a3aa6e24bb9fd3c0e768808..b54adc330fe3810679cd838d8d37558a19cab977 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index e2915eed0011e7178557444585d6bd128d1363f2..883a09574b67575b620f91499872afcadd2feb49 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 19f0082a323f95844f058c69867e0d98c3b5aab8..b6cf2394825bb348e1a18965daa93cdc8e9769f9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Reflection;
index ca1d2be40492c79a565f9178a1adc6ffc0ab41a3..570ad901c2293f30b3c01594cea5c1e4b93a70cd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Metadata.Edm
 {
index c18d3a5cab4d80f0e8ff8a996937b9d61f317561..feee36878f646a811f2cd5d1ac5b54af6cf8f46d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index e6a143183d7b610810d1ad989c88649fe5cda340..7769c09386ff67e982463ea875a15ae712f9d93a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index 9aca70f7026b64de47b8ec2439b26ed27241d14c..45822d9d4fe3533fa7b7d1f851854e6d5903bcf7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index ac6358abfd6c42a9f0dc7fcf21762de907451d57..392270ccdfef6bbb9c2f26e8fc24bd4a713f5b0c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index 38916861f8deb57402bdc19b2ccfa6e458d4b92c..80fefe0777341d285ee64a0bea2f5a8e53b14eb7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Metadata.Edm
 {
index 215b129f8b7657e3450dcc78546a51fed30cdc35..d393a6b4d5745dd5ed925c8d70b4b7c8be252276 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index 3f1a54b1f42c8e6295a39f945eae9d230b8c16c1..0338f5466c83e0030d8a53f1839320c2551eacb0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 77769e7606f95ee27856c78a5d0f4b9a522d4921..f81c3bffddd35e33e39d734b9da2470527baae7f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 344a60e79a2a680e81fd29ac5664c4a6acf5b366..959e6617f94c313370a9151d5f2da648e0b736c0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index ca04d7a87a4bbfb925996bcc84afe007a202c828..3fd746c44ae8ac675c2774c0b051b0dbc9c35882 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 419e2f1f078baaba0017a446627eea234eea4e40..7b6927c6403d717098b5a91e0ae0f7e8cc3207fa 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index e83fa0c9aeabc267d8f37b5b5954cb4e027987f6..8624eb4bf3f766a2b571d8c7114fdd37914ad439 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 340a26d7fc005c58189f01ce0bd09a9cc439f2ff..d9701d5101647b844729279ac479c5545c50bcf2 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index 831428feee1da3738d8632fb95606c4af04fd2ce..0652558289b1bc096fe243b4d57bcdd198d9c9cc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index 90cc7b12fbfaeaf1b52fc0a31da863eab970bfcd..855de302a6972e21a8119ac1c54b88602ab3d7f7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index abde1abf26af8755f07ff94337daf3886374c55e..6d966224dfa5f976c449f3e32526a37ae814a9af 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Mapping;
index 2c79eb40dff02d74ecb3cecff5850313b85c0a92..ccbb10a4351fc7d4acc3cce4b55642d1ceb82174 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 1c8a8b9fe2e28294816a3549e6000e1e05d150e1..02d09f98b3ffb3cab102f17043416cda7b4bcbc5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index b5c6ec4f62f13350c9522c433a26ec99079ccd4d..fdaab763c81a7adaf1b4a088d243dda93dadfa4d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index f21a4759737738e798b4a918add03b8be3770bb1..e6804614e9883910f5e678a6d549158ca6c6dc13 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 116233108c4f0b0ce628a5e2870484b7c85536ca..608f707ef5de7479f7126982f5d117ebbb92017c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index ca0b6bd3763b1dd994701d104c0683aa961e2e7e..2a59d2d691f76072d3347c22de71df1f224d30ea 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index e4501a214941a7b70dffa5483c294c558b547386..91104516465a447cf80755a28fd60091b50acc68 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Metadata.Edm
 {
index a81ccee2cee04bcb6d7d45e3319e976d88379e1f..43ef352dbf7b4f3c216041e8d4e981c9e96795a9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index ebaad4ec189ac8d04655bca9bc1da44029d94ebe..7229c3b838d5e6fce8b0b7540638de29084a4b73 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Reflection;
index f44d9d1d13fe61af79407d35e033bbf9502e3685..e17dcb2205fc9de6696f59c9d82aece90588caa5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index bbadb7cc55a0983971a065c327da0de50ad5ca38..a394eecea5a09b248ab33813fda03cbd84f60142 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index c54f6bbd703c712d469243067bb2b83c6d4ecd99..610f1f067a7d4373ad0f419cf4e238674588146b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index 9cf8fae6e23fb15c94bb00698811e5573017b2ff..d1db7caebf5598264623c3e5003ef6b57aff9603 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index a336bab049f765f2094eb95aa40a335fdac3789a..d6f3c2dda73166738891ccafc5eaf147ebc560a1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index f033bc4769768484a37e585de1d5389c9f15d551..bfb63d99f7ba33295fd781040dee9b5aab6dda1b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Reflection;
 using System.Linq;
index 45a60e927b3b6c95b00c82fe0f9212810c1a8075..87c4d7d3e882099c870002fc1802d7f12a5f598b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Reflection;
 
index c8f6ff31241cd12732285fac6551536898400ca1..b3834ecef3576900f129101c926e7fa217e3e202 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Diagnostics;
 using System.Linq;
index 0583ffef5d178cb126b230ea589d2132964f8467..ede35e321929ade982f7ada217c386908b3e2fe9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Metadata.Edm
 {
index 585dfca18ec69968b6ba06e83ea8e67aaa50a003..8d3db3692bf0f3a9ac23b096f7e780636357507e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Metadata.Edm
 {
index 4f52bfdd8dff040ee1b00c4c5af56a3d395104e7..372a6d86707c689b0ab428166fa74f1f3bb95c94 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Metadata.Edm
index a08529d31d219ff48f14055cee126613a3ec452c..a3f8e6394f66e9c4743eacf2a17513fdd73a71de 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright(c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Common
index 0c0df556007f8eee3fb81746fe5910452509acf2..5142269bafd569f0557bf8e0ab1758af9ecb1460 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index bd0cfb075da050f287143a2241bb223c83562008..67eafde4e53575e80892211119d91ede1c16821c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data
index 9247b2e59f0fcefe82f0642ed8ca9fd33b987c19..d0496ab15c0a80574cab39f3beb0d5622aab4669 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft, nkline
+// @owner  [....], nkline
 //---------------------------------------------------------------------
 
 namespace System.Data
index 36c949997b79c71151f534aa5392d916e1b91df0..2ca2abe88dfdbb4961434eeb51a81777017da46c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Objects
 {
index c3f31fb4bce450cbdb325c189b9ddb857898b174..96f6bb6be5c8f065c7afe966afcf6f67516d7c0b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupowner Microsoft
+// @owner [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index fd606f81862b52fd1ff05f0d5dd72827be05e241..c63108a63111735c5778364e8143bfb323ab430f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Data;
 using System.Diagnostics;
index 857cc04326337be2fbd242eae2acdc43aa20a1ae..61a7498be43cdd57abe2b44d6a6db05914f9d580 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index 05f2fcc71834b56d510d809c44585874fb06d9f0..6f4d556f028f64764f6a4020756454149ce3a50e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index 79b9c4bc363ed7dfb18431ad4d73ab0cceb6eec6..495c0fdeea62d01c0d01668ea147e117f88c4934 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 
index 208b57f3c93fb1b864861d46bcd8d184a42d3de3..01e1acce12f4c73e6701f8be95ee3ee91f7d1413 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index 59029670ee628c40b5622908cf528da34754e8cd..af990b078a731870dde302efa298c21ab753d2c2 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index e9d2886280ccdf04999ceadaba3af0319f2f0e70..0897a9d25f0abb6bc0ee74a43ab93e297524b3c5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index 3ce5465541b56c235a1a0a0a6592e3de2853d6da..e94eeb442a577bd9e9924a513ef7c41c613b5b31 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 
index 45694e6225fccc38cdb0d09e3472d56a23bea874..fb36665f8a895e506b758b351b66a3069cbbd974 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Data.Metadata.Edm; //for RelationshipMultiplicity
 
index ddf8d9398796959dbee25e120943b2ef91af0e37..13d23f82d18b8b419b1c31b079ac12a69fd3eb4f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index e52f33554984ea4fc9c6aae5a319318edd9981e8..eec9c4c9a52a0a062a7d0ba45682985b281c87d1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index cdac80497913714825f7ef7f6de9ef18c154b97a..097fd72cbde2846f5970c0016c8c25664f501a22 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index 4b1da9fd42b52eaa2bab62e2e49e1e12a3f69b48..0f1f0cc6044d90cebf353da7a12172fb75751fba 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index 028698fe9db6c8b04bbd5d2bb573739b311a6f11..08e8dd69a8655e1f4e6a1f89f4f0977296a7f7eb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Data;
 using System.Diagnostics;
index 48acf77e563fd61ae1b26436eeddb8abfbb4f7ed..5a7b1c84e6fddfd5b1f6fd4ee130ef7e63aafba8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index 29b355682d03a17488145602904f3b0712212649..c18e9638f80009a41c59bc39d19c6f079336ae56 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index 073c79de299bca0ce1ef73f87349c703edf6897f..e89a660d4bc44b762877eccb0ebcb4195c364273 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.DataClasses
index 40b72aed27ded68f1d57b60efc9120573a524dd2..4621064d8c9c3f49a693685a141b9e991451cdfc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Data.Metadata.Edm;
 
index 854e900877296ee641f1b2650c4d8ed65f5e5976..32c0923979554b8febf1f1c59c56194e47f70dbe 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Objects.DataClasses
 {
@@ -1429,8 +1429,8 @@ namespace System.Data.Objects.DataClasses
 
         // Find properties which are Dependent/Principal ends of some referential constraint
         // Returned lists are never null.
-        // NOTE This method will be removed when 
-
+        // NOTE This method will be removed when bug 505935 is solved
+        // Returns true if any FK relationships were skipped so that they can be checked again after fixup
         internal bool FindNamesOfReferentialConstraintProperties(out List<string> propertiesToRetrieve, out bool propertiesToPropagateExist, bool skipFK)
         {
             IEntityWrapper wrappedOwner = WrappedOwner;
index 82295b74317920bc7150a493ad64e6ceed203cb6..66dcba0ec6468d6d35158ee7eb28fd7f2845c062 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index acda94e3dc9e9389013540d1c40631ec66549b9d..900af0333f1a7c458416384264617632883254cf 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Data;
 using System.Diagnostics;
index f00b88296fd03f4c05696e0a1c48faf8b1dec550..5869bf86b55077cc80f64fca435ed4547462ae08 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections;
@@ -63,8 +63,8 @@ namespace System.Data.Objects
         /// <remarks>
         /// The algorithm here is lifted from System.Windows.Forms.ListBindingHelper,
         /// from the GetTypedIndexer method.
-        /// The Entity Framework could not take a dependency on Microsoft,
-        /// so we lifted the appropriate parts from the Microsoft code here.
+        /// The Entity Framework could not take a dependency on [....],
+        /// so we lifted the appropriate parts from the [....] code here.
         /// Not the best, but much better than guessing as to what algorithm is proper for data binding.
         /// </remarks>
         private static PropertyInfo GetTypedIndexer(Type type)
@@ -106,8 +106,8 @@ namespace System.Data.Objects
         /// <remarks>
         /// The algorithm here is lifted from System.Windows.Forms.ListBindingHelper,
         /// from the GetListItemType(object) method.
-        /// The Entity Framework could not take a dependency on Microsoft,
-        /// so we lifted the appropriate parts from the Microsoft code here.
+        /// The Entity Framework could not take a dependency on [....],
+        /// so we lifted the appropriate parts from the [....] code here.
         /// Not the best, but much better than guessing as to what algorithm is proper for data binding.
         /// </remarks>
         private static Type GetListItemType(Type type)
index 5a3cb738b776fe1ffd53c7636d54ffca0d7f273b..eeb849f9b4023341b1cb9cc40c57711494b554f0 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 using CqtExpression = System.Data.Common.CommandTrees.DbExpression;
index d072e7c3b080ef28c04abf45523dc31771113d4a..0b7aa97d39bb9c6fb1614abbe2bc5fcd87135747 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.ELinq
index ec98b5bb6f2b40d6c1906c3527a2125b07c70da1..6a68bcb8bb7a600e4049ce9cd9a3e2311dc75481 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.ELinq
index 5d0fdd7b7346a2b025757419f12d371c8cbde1b0..95c65e884cc093ce9da80754e308a90db53e1a42 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.ELinq
@@ -1069,8 +1069,8 @@ namespace System.Data.Objects.ELinq
         /// </summary>
         private static void VerifyTypeSupportedForComparison(Type clrType, TypeUsage edmType, Stack<EdmMember> memberPath)
         {
-            // NOTE: due to 
-
+            // NOTE: due to bug in null handling for complex types, complex types are currently not supported
+            // for comparisons (see SQL BU 543956)
             switch (edmType.EdmType.BuiltInTypeKind)
             {
                 case BuiltInTypeKind.PrimitiveType:
index 90853b14302d4eaa7dc84d337ea2b7de6aa4c287..3f0060f417c20ea174d4079edf7f3660197dfe1a 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Linq.Expressions.Internal
index ab12b11cca7b3e7c5a5becb64cf54a7357ab5f6a..7b45f33dd05e0e031c038be3b436013849dbaf6d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.ELinq
index 207b739739f18f779d1a14ea8cc60a01cea2ec6e..b6e7adc53dde1d8eb642429da829f26af688ce3e 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.ELinq
index e6042b498d49cc00c3380b8b829fcf227d3eec84..1a2e9d353d6ab9661fce3ac1f4e49b9474c13d65 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft, Microsoft
+// @owner  [....], [....]
 //---------------------------------------------------------------------
 
 using System.Linq.Expressions;
index b0f2bbade55e116bef408ce649ffa6eb9685faa0..247357fb46ab55a008a8fcc868d48dde45c2444a 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft, Microsoft
+// @owner  [....], [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.ELinq
index 9999435a9821cf274904fbae338e8c5b2f483634..fafc18ce08865ce1a6a01190765e94bcc7279778 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.ELinq
index cf0ccb54b5f2cab8d0a1f3d2c9337f9a94bda0f8..e32e423a28553bb865bc43a011f29f461fd0a6a5 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.ELinq
index 95a9af21f4c042912dd22660d359ea4dd821d62e..86559d6b40f78a74a631e294d5a34c8c5ba5d86c 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 using System.Reflection;
index cfcc26232ae958b780d0216f5b267582cea7013b..2eb958f024b240fac4f14489ce8048f427faa79c 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner       willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //--------------------------------------------------------------------------
 // This file is automatically generated and should not be changed directly.
 //
index 84dc51270c9ff1d8db9522cb90ef93abbeddc514..c16cee7d5237b3e43732a1e7e35225ba7d88ccca 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner       willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //--------------------------------------------------------------------------
 // This file is automatically generated and should not be changed directly.
 //
index 5a4f283f1fbf48294f684596d6a01ace847839bc..53ae3be397bc3bdc7b3c4cfba4336d3ea744a348 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft, Microsoft
+// @owner  [....], [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.ELinq
index f7fbc08f6ebbd55e984c11513df955268b4d7412..1d0e4a7f1a56063b867f60c9ab11599cd3c5f7cf 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.ELinq
index def33f204b9fac75af8157725184d4b7f2d52aa0..efeddc6743991987f42546ebb09e112cb96dade9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Objects
 {
@@ -3748,7 +3748,7 @@ namespace System.Data.Objects
             {
                 // Added prinipal end.  Fixup FKs on all dependents.
                 // This is necessary because of the case where a PK in an added entity is changed after it and its dependnents
-                // are added to the context--see 
+                // are added to the context--see bug 628752.
                 bool fkOverlapsPk = false; // Set to true if we find out that the FK overlaps the dependent PK
                 bool dependentPropsChecked = false; // Set to true once we have checked whether or not the FK overlaps the PK
                 EntityKey principalKey = WrappedEntity.EntityKey;
index 51a6eea6aabce17916b621dd46323f17ee41c688..879f3af5c95cac27a83f85ba06c05a8b4e328636 100644 (file)
@@ -10,8 +10,8 @@
 //     Changes to this file will be lost if the code is regenerated.
 // </auto-generated>
 
-// @owner    Microsoft
-// @backupOwner Microsoft
+// @owner    [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index f2bb8cf6f3c040ba49bb0e9ee324f65835cf14fe..fd5ef4e00e6b1f43448c76ec8c9d7d6a89bf5639 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections;
index 8278f03a91e6c0ba03db7efdf8c705fc5db317aa..7c4e91ac3334d8ee4969497d4abe1f9feefc604e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections;
 using System.Data.Objects.DataClasses;
index d4916b2c5e392c0eb1e9f987d1026a55a420195a..44f963f3afebabac7740d5ec93a90989200b4f55 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index 385cb5b231eef33eb184ffd1b5c53da426a705bc..0de1b08a45ecd648e76f79fd8e6e876f0f152762 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.Internal
index 67b9ce1f7b328385284d80e1f668159510a3ef76..a301deb03897dbc23b920deaf33bf80c677c9d7a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.Internal
index f757170e47d666c3dbeba139a7056debbc231039..eb994d42543cb03eb7b96fe4a2bb996a4311c188 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.Internal
index 40d6b1f6215c246bc627b6a716baa4aa6269c7ef..63b4ca4e6c9fce99b673c8de911bc190534debf2 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
index 95f18d39a289eb421003a3c66fc3c21188a674a3..8f06e08b9a16a7070209555eb18beeeab91592a8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections;
 using System.Data.Objects.DataClasses;
index a337615dea5057f3ce09d57e07e64d9cf84174b3..bfbb201b7029cb158a112b4925efe739da4136a3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Data.Objects.DataClasses;
 using System.Data.Metadata.Edm;
index 6806c05cd537cd8f979112eb9809bf7567c771dc..06276f9342eab186a5d824a8684251603fb593aa 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 874b4c0d0f3af29cac59beda30ba3f2cb8ebac63..76cae2fa8b86485d940470267c4b4e77710b1359 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections;
 using System.Data.Objects.DataClasses;
index 9590660d0a3a781a424a647c42e0937341ee6d61..0273238b70c7a461c56d5da4e691e0857ef90397 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Objects.Internal
 {
index 2d54ed02ce6d6c1af6be21988c27b6f91bba1f5b..d8a4c861e682b58ace06d1e37c1666a42112deeb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupowner Microsoft
+// @owner [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.Internal
index 43ca97936772fbcb33395f360dc920196399c5e1..78f35d0338958a0fca35deed7e0c2404e2fba03e 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.Internal
index 8c958ea14f883b9c323f7d16729c3961134aac1b..06d5d0841de89cbeb9cdddf77e6bf79698532f46 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects.Internal
index 2469adc8bb7070ebb35f37c9c9d1cbe5ac9506b5..3dcb85b7c0b630754bb01a322a586a665f40ed7e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupowner Microsoft
+// @owner [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 
 using System;
index 92352278e919164e50abda1906341248364d62cd..240963625a3f03a7a08fe4f38f50a00cf95a6ffe 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 //
 //  Internal class used to manage ObjectStateManager's transactions for
index 49b58de7cd196d9124981f1619707bcb1051acfd..df6204519f7eba8ea5946cfff821194b428c3bf6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
@@ -3034,7 +3034,7 @@ namespace System.Data.Objects
         /// <param name="query">The query specified in the server's native query language.</param>
         /// <param name="parameters">The parameter values to use for the query.</param>
         /// <returns>An IEnumerable sequence of objects.</returns>
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         public ObjectResult<TElement> ExecuteStoreQuery<TElement>(string commandText, params object[] parameters)
         {
             return ExecuteStoreQueryInternal<TElement>(commandText, null /*entitySetName*/, MergeOption.AppendOnly, parameters);
@@ -3049,7 +3049,7 @@ namespace System.Data.Objects
         /// <param name="entitySetName">The entity set in which results should be tracked. Null indicates there is no entity set.</param>
         /// <param name="mergeOption">Merge option to use for entity results.</param>
         /// <returns>The translated sequence of objects</returns>
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         public ObjectResult<TEntity> ExecuteStoreQuery<TEntity>(string commandText, string entitySetName, MergeOption mergeOption, params object[] parameters)
         {
             EntityUtil.CheckStringArgument(entitySetName, "entitySetName");
@@ -3106,7 +3106,7 @@ namespace System.Data.Objects
         /// <param name="reader">The DbDataReader to translate</param>
         /// <param name="mergeOption">Merge option to use for entity results.</param>
         /// <returns>The translated sequence of objects</returns>
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         public ObjectResult<TElement> Translate<TElement>(DbDataReader reader)
         {
             // SQLBUDT 447285: Ensure the assembly containing the entity's CLR type
@@ -3130,7 +3130,7 @@ namespace System.Data.Objects
         /// <param name="entitySetName">The entity set in which results should be tracked. Null indicates there is no entity set.</param>
         /// <param name="mergeOption">Merge option to use for entity results.</param>
         /// <returns>The translated sequence of objects</returns>
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         public ObjectResult<TEntity> Translate<TEntity>(DbDataReader reader, string entitySetName, MergeOption mergeOption)
         {
             EntityUtil.CheckStringArgument(entitySetName, "entitySetName");
index 26bd5a012714d5d91a23a7a14571cefe3a1fd746..4b269fba20ddfba13dcdded58106df3c12c6ee1b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 4390811bc9254fa9bef107b767fd18b630c4f607..2939ae7b9c5146c14b2b349a3dedcc2e9920bfd8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupowner Microsoft
+// @owner [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
index 7efb20d55eb6194960a3f14aeab15fe23e310ec7..bd314d2e18289bf5deb6c2794325c458d1abf75d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupowner Microsoft
+// @owner [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
index b8041ee41a4bf72acc75faa0585f29dc16fa039d..bd28684250ee79a891dfbc897ceabb839f771be0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupowner Microsoft
+// @owner [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
index 10c751301fb0bb9eff0c7caed98ee3c1cced91e7..36d85f3ee3e6e5d4aa385f640701527e8f10237b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupowner Microsoft
+// @owner [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
index e5acd60fe9d5f0ae49f52f665ba500bf51490266..bb459b661173a2b6c0f123c7c1c9fce01cb692ef 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupowner Microsoft
+// @owner [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 
 using System.Collections;
index 0c11979211bde2b800e1d93783ac6967be7ddf6e..4b3bcb8682f4c0a9a8416a73aedcb19a3b778768 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupowner Microsoft
+// @owner       [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
index 89643315a0028e6a7dea63bc78a2356000247def..4b764e2361e11bd28b4163fb5c38a54043b79388 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupowner Microsoft
+// @owner       [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
index 3d5c4a02cfd1b22f0f3f114e8cde17f47127d21f..94ffdbcabbf6ec048074f1cfc34a94332d060feb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 // ObjectSet<TEntity> is a wrapper around ObjectQuery<TEntity> and CUD
index 5d069e2ba1ac9f45446da8b660c59dfdf0bc6512..388559d75c1f6921d932a26fd7080e7762948b61 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Data.Common;
index 3006ec9202b65c7817a5cf8ff0d56ad47fc5a59c..72e6a8ce1bf79a4b6bc4a4f2c760fb95f513d2a9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.ComponentModel;
index 5b763db4a0667121479f7100321232adc865001e..cda0af00f5407e1e7fe236c18050d95eab30a375 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 768828d897b46e3d1945cef46f94979a0ea8e812..08a0551c5dd02c0b7a463896a207845fefcb72a9 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.ComponentModel;
index e16a62b70f77bfe34f430629335fe7c6253633fa..56c4c0f8abc3ad6c7a3d15e1a2418040aa50a012 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.ComponentModel;
index 842891518196edd4f312752b2fd46ad130acad60..9657c208b61156332578be54af85cb3bee0df3d4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
@@ -2131,7 +2131,7 @@ namespace System.Data.Objects
                 _inRelationshipFixup = false;
             }
 
-            // Keeping the entity and entry keys in sync.
+            // Keeping the entity and entry keys in [....].
             entry.EntityKey = value;
 
             //Internally, entry.EntityKey asserts that entry._entityKey and entityWithKey.EntityKey are equal.
@@ -3553,7 +3553,7 @@ namespace System.Data.Objects
                                     reference.IsForeignKey &&
                                     reference.IsDependentEndOfReferentialConstraint(checkIdentifying: false))
                                 {
-                                    // Ensure that the cached FK value on the reference is in sync because it is possible that we
+                                    // Ensure that the cached FK value on the reference is in [....] because it is possible that we
                                     // didn't take any actions above that would cause this to be set.
                                     reference.SetCachedForeignKey(ForeignKeyFactory.CreateKeyFromForeignKeyValues(entry, reference), entry);
                                 }
index 81e861695a42fb5b86b4c2367812d0e7b875ce80..2f078289be09cb7d6c25e72e2baad1054a14b5f1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 0adbd0b501dfe417e44dbb3741a027823b39bb14..acd5c3aa2f0b86c8bdf877e47e5901bf773b825b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections;
index 0f91fb37dd538cb4aa1a17cbf7f7bf5879b20742..de89b3a48ad6b538214876746bde9b95aa572b8d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 94bed62f1d206aec97d66e0479d57d53b599dce4..9c803f7bd00996139f03a81badd5b31eeaafb3bc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections;
index f26e293c8f2e2bf003327faf95937c4519e9833e..326ca561b7b1de2bd2dc39fcb927c3338e0e0c21 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections;
index dd79ce4348cbb30ff439ce6a2fa3208f32cb2c0a..1f1eb2958226d74876338e163da4dba29fc66745 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections;
index 4435cbc8293b818c3dd1da3ce1d9665e0a821667..251a18ed5db39e286b99fa8355d7946d3bc08e01 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index de19216f66b2c94b8cef656c8fa587339b4e4bc8..d3a7e941801a0b005a5383965693df795d31b6c7 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 namespace System.Data.Objects
 {
index 2aa42ba86b8ce90c5110581ae81092304e710bc0..e3f4a297ffa81577d09e294163b7e84a4587c438 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 28482f31eacc4246ead7580d605a810f166bb7fc..c74e95d9534de4a9f4ecbcaf5b1a51c0f3b9f2b6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Objects
index 151f06a220726c9a54a0fd22705f39bf9ac65c01..921eed60239465fbefc2dc62a50e9457908fc282 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupowner Microsoft
+// @owner [....]
+// @backupowner [....]
 //---------------------------------------------------------------------
 
 using System;
index 0d9a53bd26dc9739c175e2ccbb47528fb4f7f594..d5745f56802cc685f0eaf4ffc59cd19102c2d9f0 100644 (file)
@@ -10,8 +10,8 @@
 //     Changes to this file will be lost if the code is regenerated.
 // </auto-generated>
 
-// @owner    Microsoft
-// @backupOwner Microsoft
+// @owner    [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 1c1dd30bbc7c86cdad614464077e1a0da60f283f..3dd9e3aade4d8b0f5bf8d645b1eb6a2f661a6a0b 100644 (file)
@@ -10,8 +10,8 @@
 //     Changes to this file will be lost if the code is regenerated.
 // </auto-generated>
 
-// @owner    Microsoft
-// @backupOwner Microsoft
+// @owner    [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 9a911e5d22f4d628f076dfe0c0d544efc71f3ea5..6a38eb00ca4726d6b8385286146f555a65d94f1f 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 namespace System.Data
index ff231df5ab0047283aecc81c6bfc967eabe0d29e..034e96170dc4304e2e4366eace13a2c5b4f9e9c8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 
index 8b3a5dad12ad5226b1f35a523db226083f168687..f15b3a5ed1a98bab14dcc04bd1265a1a1a36b7e6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data
index 624c6db170916a0cca044f4e8fa1783326555dca..e2f4c3ad4fe8af11deaeda0742bd867b70caf0aa 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 541441845eafd16e9482ab4873e373f802b15b62..5616d7744d46363950e99749c68b61a7e97be66a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 723aeae7fb68be1800f83a68590f7cebf18d2983..edc63cc517d745843ae87826940fe4707762eefd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b000d40e8729e4c90f77a7e0bcc55ce7af0206e0..7ba71b13236191661ee258f4ad05dd8b902dcf3c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="ColumnMapFactory.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 1c95e226b35ddb8b6f17382a473dc2e6a35d7897..5f717d4cd5e6b1b0f128aa526b714a32a48782a5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Query.InternalTrees
index 0dabf7fa15f8f53eb529cff7549c3f42acf2d992..7f16a5a68b870b590781a174b94cd7546a68dafd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index 8933a9946b978979eea5caa4776b89d7243731a0..a7fecfd71ad5ce76cf49d5ece3200a65e325c3bb 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 594d9d4e63942a4edc45d8b95e7a14fa965594ad..9376a4d3e2a4dcbdd6a0f1e8ab396b9a167ec0f3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index 5ee20c008a7a20351978d740228c2bbac5a06f69..acb8bc50b0e71bd82eddb39e0e003f126ef2a939 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 5261c4858a8453d3bf975cd4f3aa9f779263497e..77690a6ad450c81d31c2c17d8dfb65a8c13d8da4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index d4bcc4cb962c1268decbb2da6f42d679936f81ae..c169ff2f18b1ccc05022d6458280c1e5c081b610 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
@@ -52,8 +52,8 @@ namespace System.Data.Query.InternalTrees
         internal void InitFrom(IEnumerable<Var> varSet, bool ignoreParameters)
         {
             m_keys.InitFrom(varSet, ignoreParameters);
-            // 
-
+            // Bug 434541: An empty set of keys is not the same as "no" keys.
+            // Caveat Emptor
             m_noKeys = false;
         }
         internal void InitFrom(KeyVec left, KeyVec right)
index d8c3bcc4a1e39a8cbdc595e8f8dbb102694ddc24..639678818a5e4273831cd9a7ddb9c106c97de331 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 864ae4f80f57f1710edcac5248c9b1bfa1b8880e..d083bf8e4ceafb34e14067788e27ef2ecdbf1d81 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 // Interesting cases: Unnest
index ffa517fde81d43c1bbcdf1a69705a38e751d9ced..5f2ef19de41bcc8ee2b3d53810ab1ec3cf119453 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Query.InternalTrees
index 932a39e142b6e9e0ae2a9b8a2e3e41d7590f9e43..4a6c55295796541b009a7a6c832d4419947c863c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 4e513fd7cb2b52fbc604c42ffa215402086e88b7..2f69f2fe693f9e8646a6087bd74d1ff867fa4a58 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index de5fb678ff00c60964f06e936669df8589ac9720..75ff85423887d7ead88a6833f916a49f05da724b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b766b729d32a5b3aad2b49d123a66d98f04f1629..b75f77f8b35a46381dbde9c53501797aa80eacc4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index ec10161a885c24ddf7849bed5442db28709aad1f..add95f189027de2b09152a8a128780794b2a1bb8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 2d43a1cb77b8012dc33fccf42ef0468e46bb463e..98e34449614cbecbe450e29a83092da016de54d8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index c9c554ad622be35c02c64a1f03325163a2b1ae5e..f02af32dc52c627e6bddbcaabd6c43162f035f2a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index de6ed14250015541760dd5b650d6fa44bea4167b..b9f865f5e796f3d643fed49d1ca363646e85de07 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 73d0a5de3eb2e592457b56e55cd3cae606bf8711..6dc5c0f5f8f4b5975be9f70918658efbd2225520 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Query.InternalTrees
index db69808fa2a2b4abd26f13baf46634cc0c81f4e5..9bf364d3b25da6372754ad9af648f7b776ea0500 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 98e9d1d3b6708e238c8898d4a1f988daec4e4825..62aa38cecdc24233d13a7efe9a084b196edad72b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 //using System.Diagnostics; // Please use PlanCompiler.Assert instead of Debug.Assert in this class...
@@ -1047,7 +1047,7 @@ namespace System.Data.Query.PlanCompiler
         /// <returns></returns>
         public override DbExpression Visit(SoftCastOp op, Node n)
         {
-            // Microsoft 9/21/06 - temporarily removing check here 
+            // [....] 9/21/06 - temporarily removing check here 
             //  because the assert wrongly fails in some cases where the types are promotable,
             //  but the facets are not.  Put this back when that issue is solved.
             //
index 2d8ad0d327221c2799e37bc04a614eb7f7f45740..6d762ddeffed6b71078962d462cf89cdc288cd8a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index d2d6aa35c8b744bb8c62a36f3ef481cf179e9e7d..e325373041bf9309e545827a351d5c847cdc8f4b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 793729bde9f8ea91497d8daa6a18d53d2e54ca1b..a6b1ad7614eb30f9c999e96efa9047bc123b7fe3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index afafe61883611b4beff48fd970cf9bdee9295930..3cbfa654fa9a006eb0f6f1f883d2beb498ad16d0 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 483fd2d005028d44bbce8a9b144b1a9fabb9c738..70c0f09db55dafeb6b531b5c913bd0d207905220 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 6998a556822859debaf5106a6d62240e4b2c8f15..a324477779263ca181ec4ddd48934a24b6bdac99 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 //using System.Diagnostics; // Please use PlanCompiler.Assert instead of Debug.Assert in this class...
index 82daa4395ed9acb74bb61948c6f9b12c75b3cf5a..f157f9cf3f3e70823cf0d53b01fcc41273d6395d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 476eb9b61ddb9fe3ff31359e33870449e8c450cd..170d81de80a5417365da37de844ac1f7e1c4ef56 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
@@ -1126,8 +1126,8 @@ namespace System.Data.Query.PlanCompiler
         /// queries faster when at least one OUTER JOIN statement is still present in the SQL query. If we
         /// convert all OUTER JOIN statements into INNER JOINS then these optimizations don't kick in. In
         /// order to maintain compatibility to .NET 4.0 we had to create a special case for SQL CE. 
-        /// See DevDiv 
-
+        /// See DevDiv bug #462067 for more details.  Also see bug DevDev2 bug#488375 for the UseFx40CompatMode check.
+        /// </summary>
         private void TryTurnLeftOuterJoinsIntoInnerJoins()
         {
             foreach (AugmentedJoinNode augmentedJoinNode in m_vertexes.OfType<AugmentedJoinNode>().Where(j => j.Node.Op.OpType == OpType.LeftOuterJoin && j.JoinEdges.Count > 0))
@@ -1503,9 +1503,9 @@ namespace System.Data.Query.PlanCompiler
             for (int i = 0; i < tableVars.Count; i++)
             {
                 //
-                // 
-
-
+                // Bug 446708: Make sure that the "replacement" column is 
+                //   referenced, if the the current column is referenced
+                //
                 if (tableNode.Table.ReferencedColumns.IsSet(tableVars[i]))
                 {
                     m_varMap[tableVars[i]] = replacementVars[i];
index 7a39349c20b50afa4b086f38f938e9eebe22449e..976c8adc17f3e11980ddf36c71c8e2a89279e733 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index a39594765aaccd9b85ebce9bc2819815403b8ec2..41b2629eb7fed3c73e545bb1444227d163f72ea3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
@@ -2161,15 +2161,15 @@ namespace System.Data.Query.PlanCompiler
             KeyVec drivingNodeKeys = Command.PullupKeys(drivingNode);
             if (drivingNodeKeys.NoKeys)
             {
-                // Microsoft: In this case we used to wrap drivingNode into a projection that would also project Edm.NewGuid() thus giving us a synthetic key.
-                // This solution did not work however due to a 
-
-
-
-
-
-
-
+                // [....]: In this case we used to wrap drivingNode into a projection that would also project Edm.NewGuid() thus giving us a synthetic key.
+                // This solution did not work however due to a bug in SQL Server that allowed pulling non-deterministic functions above joins and applies, thus 
+                // producing incorrect results. SQL Server bug was filed in "sqlbuvsts01\Sql Server" database as #725272.
+                // The only known path how we can get a keyless drivingNode is if 
+                //    - drivingNode is over a TVF call
+                //    - TVF is declared as Collection(Row) is SSDL (the only form of TVF definitions at the moment)
+                //    - TVF is not mapped to entities
+                //      Note that if TVF is mapped to entities via function import mapping, and the user query is actually the call of the 
+                //      function import, we infer keys for the TVF from the c-space entity keys and their mappings.
                 throw EntityUtil.KeysRequiredForNesting();
             }
 
@@ -2494,9 +2494,9 @@ namespace System.Data.Query.PlanCompiler
                 {
                     newDrivingNode = OpCopier.Copy(Command, drivingNode, drivingNodeVars, out newDrivingNodeVars);
                     // 
-                    // 
-
-
+                    // Bug 450245: If we copied the driver node, then references to driver node vars
+                    // from the collection subquery must be patched up
+                    //
                     VarRemapper varRemapper = new VarRemapper(this.Command);
                     for (int j = 0; j < drivingNodeVars.Count; j++)
                     {
@@ -2505,7 +2505,7 @@ namespace System.Data.Query.PlanCompiler
                     // Remap all references in the current subquery
                     varRemapper.RemapSubtree(nestNode.Children[i]);
 
-                    // 
+                    // Bug 479183: Remap the flattened element vars
                     newFlattenedElementVars = varRemapper.RemapVarList(nestOp.CollectionInfo[i - 1].FlattenedElementVars);
 
                     // Create a cross apply for all but the first collection
index 869ad2309c8aa3b7c15d9b20ad67e1b422fc1be1..5cdb77d54936dba3669f3bfce9ca6d9517b16574 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections;
@@ -1936,9 +1936,9 @@ namespace System.Data.Query.PlanCompiler
             // If the CaseOp returns a simple type, then we don't need to do 
             // anything special.
             //
-            // 
-
-
+            // Bug 480780: We must perform further processing, if the result
+            // type is not a scalar
+            //
 
             // If the CaseOp returns a collection, then we need to create a
             // new CaseOp of the new and improved collection type. Similarly
index f780e6b3ca95f0a221aa8d7867f19062b72c0804..f41d761c76399bcc4e448d726d6cce3085fb239d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index f58f7ff54670d4a34f6abf16b7489fc063b8502e..32bdecec29af06e76031db67adc353a8572d3f46 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 7a3f91e64404494419985fb84b6ca25f82fc3a8a..4a92d1bbd4ee65478be18446eafbd0a1799554e4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index be7bc6eef222124187a38fd2e1dd6218532fa3b3..b3a359ed137dba35ac5aede1b24795a6259ca829 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 //using System.Diagnostics; // Please use PlanCompiler.Assert instead of Debug.Assert in this class...
@@ -1283,8 +1283,8 @@ namespace System.Data.Query.PlanCompiler
             // and if the parent is already visited that rel op parent would be part of the subtree resulting from the parent.
             // If the parent is not visited it would be a rel op parent higher in the tree (also valid), and leaves less room 
             // for join elimination. 
-            // The original out-of-order visitation was put in place to work around a 
-
+            // The original out-of-order visitation was put in place to work around a bug that has been fixed.
+            //
             bool visitChildLater = IsNavigationPropertyOverVarRef(n.Child0);
             if (!visitChildLater)
             {
index 39bbeb37ee623f890513bd1faa8fcbb60cd10d59..f977e3a03e244f0f82bd73de67019e9459f73b2f 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 412494ef0501c54b15722299d6b7acf8b4eeb6af..9c91918b7a3e4ba9fe1a7c7279e4182305441b8c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 3fe9a9cdb52e47c51bbaea9982d6fd0d82a519eb..32bcd16df9e2bf64dd4f0aeb19d03a048def0de6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
@@ -393,7 +393,7 @@ namespace System.Data.Query.PlanCompiler
             ScalarOp childOp = n.Child0.Op as ScalarOp;
             PlanCompiler.Assert(childOp != null, "input to GetEntityRefOp is not a ScalarOp?");
 
-            // 
+            // bug 428542 - the child is of the entity type; not this op
             md.EntityType entityType = TypeHelpers.GetEdmType<md.EntityType>(childOp.Type);
 
             PropertyRefList desiredProperties = GetIdentityProperties(entityType);
index 103296c73844d9a82e31ac5813c70ac18dd502df..f23a813a395277b978720a2999241eb4cc6144ad 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 1e1978f87fba659fbbed3af6d0e2a402207e0ab5..4d81cb0452540877b72d366f43b2ea1fc0fd5551 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index c7b074c9c02529bef0eb4a648438550789274ce2..149274a41c706249c897675f5b9c416f6f19ff65 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
@@ -113,11 +113,11 @@ namespace System.Data.Query.PlanCompiler
         private StructuredTypeInfo(HashSet<string> typesNeedingNullSentinel)
         {
 
-            // 
-
-
-
-
+            // Bug 428351: Make the type->typeInfo dictionary use ref equality for
+            // types. The problem is that records (and other transient types) can 
+            // compare equal, even if they are not reference-equal, and this causes
+            // us trouble down the road when we try to compare properties.
+            // Type unification is a good thing, but it needs to happen earlier somewhere
             m_typeInfoMap = new Dictionary<md.TypeUsage, TypeInfo>(TypeUsageEqualityComparer.Instance);
             m_typeInfoMapPopulated = false;
             m_typesNeedingNullSentinel = typesNeedingNullSentinel;
index 437a0cc3ed9dc37ad4c0574df5fbecddbd85eb02..6ec1d822c106827d77f990826aa9ba0199154de6 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 15dcb8587aeeec1ab4d8bf3705804cd6687a12bf..99ace7694c49b42e8bf40011dfd85eb76313ff79 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
@@ -4206,24 +4206,24 @@ namespace System.Data.Query.PlanCompiler
         /// the group by operation uses all the columns of X as the key.
         /// Additionally, the top-level physical projection must only expose one variable. If it exposes
         /// more than one (more than just the aggregate itself), then this rule must not apply.
-        /// This is a fix for devdiv 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+        /// This is a fix for devdiv bug 851732. Since now we're supporting NewRecordOp nodes as
+        /// part of the GroupBy aggregate variable computations, we are also respecting the fact that
+        /// group by (e => e) means that we're grouping by all columns of entity e. This was not a
+        /// problem when the NewRecordOp node was not being processed since this caused the GroupBy
+        /// statement to be simplified to a form with no keys and no output columns. The generated SQL
+        /// is correct, but it is different from what it used to be and may be incompatible if the
+        /// entity contains fields with datatypes that do not support being grouped by, such as blobs
+        /// and images.
+        /// This rule simplifies the tree so that we remain compatible with the way we were generating
+        /// queries that contain group by (e => e).
+        /// What this does is enabling the tree to take a shape that further optimization can convert
+        /// into an expression that groups by the key of the table and calls the aggregate function
+        /// as expected.
+        /// </summary>
+        /// <param name="context"> Rule processing context </param>
+        /// <param name="n"> Current ProjectOp node </param>
+        /// <param name="newNode"> modified subtree </param>
+        /// <returns> Transformation status </returns>
         private static bool ProcessGroupByOpOnAllInputColumnsWithAggregateOperation(RuleProcessingContext context, Node n, out Node newNode)
         {
             newNode = n;
index d87b08c64e0b797e493a3487b45230425a12d0cc..b7621060205ca889e3d1b633c20974935bead172 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index daf8c53a8a5615cef79e06ddcd9343cf97c22a8c..c0bc872b570db5ffada5c0942b52029ba31fb644 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b207bd75bb0f7b855c8229b074448ae786b4228e..a3c7575f3b6885d10cf3ef87c587c6d377905ca3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index a996bbc08a71dcf03a63d1a3166219cb2c43c742..cea3d2d869037da1f412fc63ffccb2d4229236b5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index df62621b53b1a468242215ce57f213eb5198daa9..e700c54162068444ae6babc9200647dfd5a02502 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 1fb083d0501b62ee6eaa74be4aebf706ddfe8cd8..0e2c6696e9e41d2187e780c2eaeaf2228d760630 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="BridgeDataReader.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Query.ResultAssembly {
index 997a264799ff89b548593cdac95225ed17439748..2e8af6ba69053fec529d71363ec2f32bf544c194 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="BridgeDataRecord.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.Query.ResultAssembly {
index 37ed063d3e330d5bd6b9eb74183fa4e20deb6e3a..43a680f7b72dec3c7b54050d7c2bef845df1e0e5 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.Common.Internal;
index 38cab49fe4f7ab80e4ad43b1e8b9352957fd78eb..575afd3e3544d4bab8a7a62a3ac7f239a95a7bfd 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Runtime.Serialization;
index 8dd3216984834aa0f1f829703dd62d9d063189e5..53b79d8ac9cb005c207773ec31cbc093abbdf4d2 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.Common.Internal;
index 411faca568acf2daeb0342d141168d7096341682..ec64ff97912c9387d398e30e63893638ed12542f 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Runtime.Serialization;
index 2650b3e44c7bf753e19d155b0016549bef29f54f..e248ee0ca3ee56154fd16465c6fe12b555b16208 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Data.Common.Utils;
index 70768b841644869b21df83199d018329b04e1fa7..0552d5a0a062166d677cb72b02dc81f24c5b8848 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.Common.Internal;
index 47f885566627ab4959ef3bd1857c3927d9014ac8..010b131af8d52367eee2a5080cdec2ed1aee53d7 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.Spatial.Internal;
index 2a9a718bbf10f13d6c319193d40525eacb6ac6d0..bd77441379f9d95e33ade076754e71fea5fb779d 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.Spatial.Internal
index af25ebd1aef32e6d29ccd587dd17d17c6e8079fe..df940de7589b77a93a0e14f682831a4da31f951b 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 using System.Diagnostics;
 using System.Data.Metadata.Edm;
index ab7dd297ca62586329a337e398ddceb212e92408..9334ccfa3ca34d0b37544b6dfae76badc25d8f7b 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.Spatial;
index 204292f95b3cd09fd8032fc4b96656e47376549c..b17cc1734283a88a4ae222b24377da01d10e0e3d 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.SqlClient.SqlGen
index 75d80785795acc37058ee3ce3826e3ec473d12cc..1d60e429917cbad7ac83a282f0dcc37b4ee832c3 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 9670a2365eabf09060eea4348817471baade5d47..b2c88e582ab7678c2bae20d5eecc98b6bf571f24 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 using System;
index ce48bf2d0a94df1b2b90cefff3b0654f47e1d2f5..9b6d3bc90d0f3d79e3bfe48ac841cbbef045834a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.SqlClient.SqlGen
index f5493efc86180d3e018de378a5815fc5da855940..1fa8b4ca66f331216a4432fba332b1fe2468bfcd 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index f4ffc565d7dac1e5c1a32e74135f32a347f47bf2..c680a0dc14c6dda5a006b4783fd49e2221298672 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index c4a0316f6346b9bb5c6213296ca292679883761d..f749d5cf2daac45fe0b867953a6bc560c80896af 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.SqlClient.SqlGen
@@ -1608,7 +1608,7 @@ namespace System.Data.SqlClient.SqlGen
                 // consistently return NULL as the result.
                 //      However, if instead we use the optimized LIKE translation when the search param is a DbNullExpression,
                 //      only SQL Server 2005 yields a True instead of a DbNull as compared to SQL Server 2008 and 2000. This is
-                //      
+                //      bug 32315 in LIKE in SQL Server 2005.
                 result.Append("CHARINDEX( ");
                 result.Append(args[1].Accept(sqlgen));
                 result.Append(", ");
index ad5f46fd0fabec3e5d3ceeef0300b92cbfa45d7d..b09cca657435426ac0e2be61dcf07d98f1cd11a1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.SqlClient.SqlGen
@@ -2495,7 +2495,7 @@ namespace System.Data.SqlClient.SqlGen
 
             //Create the resulting statement 
             //See CreateNewSelectStatement, it is very similar
-            //Future Enhancement (Microsoft): Refactor to avoid duplication with CreateNewSelectStatement if we 
+            //Future Enhancement ([....]): Refactor to avoid duplication with CreateNewSelectStatement if we 
             // don't switch to using ExtensionExpression here
             SqlSelectStatement result = new SqlSelectStatement();
             result.From.Append("( ");
@@ -3694,7 +3694,7 @@ namespace System.Data.SqlClient.SqlGen
             {
                 orderByClause.Append(separator);
                 orderByClause.Append(sortClause.Expression.Accept(this));
-                // 
+                // Bug 431021: COLLATE clause must precede ASC/DESC
                 Debug.Assert(sortClause.Collation != null);
                 if (!String.IsNullOrEmpty(sortClause.Collation))
                 {
index 83d2b247986bd06ce4ac2cef30b875b9668631d0..8c3b203bda960fa8be662f23fd46788b68342703 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 using System;
index 3893137a57b9eea39eaf7838901630a5b9242c99..d44940d8d7fb9c88b6bae54e5087b39173c1d40b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 43973838759338bfcf2521d2d11a4d94007d04b3..f8e4e2f0649e5dac3641500aadbcaf7f0e0e3d0a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 5257812e00d57504de069ab843ef9e0f3b8e7a4d..f5e8f20b300bd76ed6d196ac01850bbc704b94dc 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index b1684aa77e2ef08df1112328794012ad19b09c4d..5624db4cb1297b65646ade5117c439b93cff4ae4 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 3cf8d038db94190671ae8b49a3a0ce0c6001e48a..b47c8e69f0b2c0e340d08a53e9b7a370d05cf777 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 7f9152076a69ac95ef28a27c864b77877e744b52..d0572b75edaf06a564e16dba8327988ff33c8b44 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
+// @owner  [....]
 //---------------------------------------------------------------------
 
 using System;
index e09e2252f9cf33e58b26b55e752d3f440a56c637..5bd2c195a0132e94ee619bbef0e7a572fa2d0191 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 2553a4a330db3314282af77be4ea25e61b64fb69..3a0a4d3d06becc1d1d17f5e14955f59e39e8d18a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index a917faa6c45ae617c25bb9b15c898493f92c257d..aa28e6af8ca705b487cd96a100e3a2d62e66aab1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 425b97d10a21ae0410aaedefe66a1f6cf8295e5f..283abf3e60a900714277f4da65b0a719b2bb6a6b 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner Microsoft
-// @backupOwner Microsoft
+// @owner [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Generic;
index ef7b9c6a12d0768356d8ab40eb5fb118f82a5383..607dd1e2486bb603ceefc5b919007492962f5856 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.Common.Utils;
index 6d749c83ac2b93d5358c7cc96e92c0b76861bc68..4007c814665fe9b1b70a5fc282f82c5f4b585a2f 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner       willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //--------------------------------------------------------------------------
 // This file is automatically generated and should not be changed directly.
 //
index d9e7870506969cb1bddfe2e98738e47a556c11c2..cd5a2dec06bb911e2f5b543715243795c18de7fd 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index c9213bb2555f4503a357a1136fe5b9cb39bf990d..ee3eff1e56bcdafe35367032d5dc7e03829145a7 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner  willa
-// @backupOwner Microsoft
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index e9fc500e2f687490a54d86434a8e683e232d3fd3..360a2599070accc00317a6a36c099b9310df0e0c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data.SqlClient
index 739893c6754455a69d21fae596cba516d27d8eb1..7a1698868fb9058278ae41bf063ad329037ca6f1 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner  Microsoft
-// @backupOwner Microsoft
+// @owner  [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Data
index 2617ed2dfc29e91e22d60fc4de9b764e27b2cb5f..9877ddace71190248ebc973c0dedc852df68abbd 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>
 //
 // @owner       daobando
-// @backupOwner Microsoft
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System.Collections.Specialized;
index 5ce354335c76efc269d767fa21d66104ff680cfd..815335272017f4c8b702074704380a87dea2478f 100644 (file)
@@ -279,7 +279,7 @@ namespace System.Data.Linq {
         private void ResolveDelete() {
             Debug.Assert(this.IsDeleted);
             // If the user is attempting to update an entity that no longer exists 
-            // in the database, we first need to sync the delete into the local cache.
+            // in the database, we first need to [....] the delete into the local cache.
             if (!trackedObject.IsDeleted) {
                 trackedObject.ConvertToDeleted();
             }
@@ -287,7 +287,7 @@ namespace System.Data.Linq {
             // As the object have been deleted, it needs to leave the cache
             this.Session.Context.Services.RemoveCachedObjectLike(trackedObject.Type, trackedObject.Original);
 
-            // Now that our cache is in sync, we accept the changes
+            // Now that our cache is in [....], we accept the changes
             this.trackedObject.AcceptChanges();
             this.isResolved = true;
         }
index 74f9bf1513310c6a13d9e12ccce9774da864250d..96fc7db3bb703383ce1f4c7c2ddf13df3bd757fc 100644 (file)
@@ -45,14 +45,14 @@ namespace System.Data.Linq {
             private enum AutoSyncBehavior { ApplyNewAutoSync, RollbackSavedValues }            
 
             DataContext context;
-            [SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies", Justification="Microsoft: FxCop bug Dev10:423110 -- List<KeyValuePair<object, object>> is not supposed to be flagged as a violation.")]
+            [SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies", Justification="[....]: FxCop bug Dev10:423110 -- List<KeyValuePair<object, object>> is not supposed to be flagged as a violation.")]
             List<KeyValuePair<TrackedObject, object[]>> syncRollbackItems;
             
             internal StandardChangeDirector(DataContext context) {
                 this.context = context;
             }
 
-            [SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies", Justification="Microsoft: FxCop bug Dev10:423110 -- List<KeyValuePair<object, object>> is not supposed to be flagged as a violation.")]
+            [SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies", Justification="[....]: FxCop bug Dev10:423110 -- List<KeyValuePair<object, object>> is not supposed to be flagged as a violation.")]
             private List<KeyValuePair<TrackedObject, object[]>> SyncRollbackItems {
                 get {
                     if (syncRollbackItems == null) {
@@ -89,7 +89,7 @@ namespace System.Data.Linq {
                     IEnumerable<object> facts = (IEnumerable<object>)this.context.Provider.Execute(cmd).ReturnValue;
                     object[] syncResults = (object[])facts.FirstOrDefault();
                     if (syncResults != null) {
-                        // sync any auto gen or computed members
+                        // [....] any auto gen or computed members
                         AutoSyncMembers(syncResults, item, UpdateType.Insert, AutoSyncBehavior.ApplyNewAutoSync);
                         return 1;
                     }
@@ -142,7 +142,7 @@ namespace System.Data.Linq {
                     IEnumerable<object> facts = (IEnumerable<object>)this.context.Provider.Execute(cmd).ReturnValue;
                     object[] syncResults = (object[])facts.FirstOrDefault();
                     if (syncResults != null) {
-                        // sync any auto gen or computed members
+                        // [....] any auto gen or computed members
                         AutoSyncMembers(syncResults, item, UpdateType.Update, AutoSyncBehavior.ApplyNewAutoSync);
                         return 1;
                     }
@@ -204,7 +204,7 @@ namespace System.Data.Linq {
                 }
             }
 
-            [SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies", Justification="Microsoft: FxCop bug Dev10:423110 -- List<KeyValuePair<object, object>> is not supposed to be flagged as a violation.")]
+            [SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies", Justification="[....]: FxCop bug Dev10:423110 -- List<KeyValuePair<object, object>> is not supposed to be flagged as a violation.")]
             internal override void  RollbackAutoSync() {
                 // Rolls back any AutoSync values that may have been set already
                 // Those values are no longer valid since the transaction will be rolled back on the server
@@ -222,7 +222,7 @@ namespace System.Data.Linq {
                 }
             }
 
-            [SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies", Justification="Microsoft: FxCop bug Dev10:423110 -- List<KeyValuePair<object, object>> is not supposed to be flagged as a violation.")]
+            [SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies", Justification="[....]: FxCop bug Dev10:423110 -- List<KeyValuePair<object, object>> is not supposed to be flagged as a violation.")]
             internal override void  ClearAutoSyncRollback() {
                 this.syncRollbackItems = null;
             }
@@ -260,7 +260,7 @@ namespace System.Data.Linq {
             private static List<MetaDataMember> GetAutoSyncMembers(MetaType metaType, UpdateType updateType) {
                 List<MetaDataMember> membersToSync = new List<MetaDataMember>();
                 foreach (MetaDataMember metaMember in metaType.PersistentDataMembers.OrderBy(m => m.Ordinal)) {
-                    // add all auto generated members for the specified update type to the auto-sync list
+                    // add all auto generated members for the specified update type to the auto-[....] list
                     if ((updateType == UpdateType.Insert && metaMember.AutoSync == AutoSync.OnInsert) ||
                         (updateType == UpdateType.Update && metaMember.AutoSync == AutoSync.OnUpdate) ||
                          metaMember.AutoSync == AutoSync.Always) {
@@ -272,14 +272,14 @@ namespace System.Data.Linq {
 
             /// <summary>
             /// Synchronize the specified item by copying in data from the specified results.
-            /// Used to sync members after successful insert or update, but also used to rollback to previous values if a failure
+            /// Used to [....] members after successful insert or update, but also used to rollback to previous values if a failure
             /// occurs on other entities in the same SubmitChanges batch.
             /// </summary>
             /// <param name="autoSyncBehavior">
-            /// If AutoSyncBehavior.ApplyNewAutoSync, the current value of the property is saved before the sync occurs. This is used for normal synchronization after a successful update/insert.
-            /// Otherwise, the current value is not saved. This is used for rollback operations when something in the SubmitChanges batch failed, rendering the previously-sync'd values invalid.
+            /// If AutoSyncBehavior.ApplyNewAutoSync, the current value of the property is saved before the [....] occurs. This is used for normal synchronization after a successful update/insert.
+            /// Otherwise, the current value is not saved. This is used for rollback operations when something in the SubmitChanges batch failed, rendering the previously-[....]'d values invalid.
             /// </param>
-            [SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies", Justification="Microsoft: FxCop bug Dev10:423110 -- List<KeyValuePair<object, object>> is not supposed to be flagged as a violation.")]
+            [SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies", Justification="[....]: FxCop bug Dev10:423110 -- List<KeyValuePair<object, object>> is not supposed to be flagged as a violation.")]
             private void AutoSyncMembers(object[] syncResults, TrackedObject item, UpdateType updateType, AutoSyncBehavior autoSyncBehavior) {
                 System.Diagnostics.Debug.Assert(item != null);
                 System.Diagnostics.Debug.Assert(item.IsNew || item.IsPossiblyModified, "AutoSyncMembers should only be called for new and modified objects.");
index 0affa3cb60ade99aa0ed6733d62098a248a26775..4eaa79b5a0653269074164b9568df0d63c9a792c 100644 (file)
@@ -115,9 +115,9 @@ namespace System.Data.Linq {
 
             // if we have accumulated any failed updates, throw the exception now
             if (conflicts.Count > 0) {
-                // First we need to rollback any value that have already been auto-sync'd, since the values are no longer valid on the server
+                // First we need to rollback any value that have already been auto-[....]'d, since the values are no longer valid on the server
                 changeDirector.RollbackAutoSync();
-                // Also rollback any dependent items that were sync'd, since their parent values may have been rolled back
+                // Also rollback any dependent items that were [....]'d, since their parent values may have been rolled back
                 foreach (TrackedObject syncDependentItem in syncDependentItems) {
                     Debug.Assert(syncDependentItem.IsNew || syncDependentItem.IsPossiblyModified, "SynchDependent data should only be rolled back for new and modified objects.");
                     syncDependentItem.SynchDependentData();
index 4e850afa9b44a583e96a82b53eb0a75101baf534..76d80426bb193e16689d5bfd248baafb14eec7cc 100644 (file)
@@ -560,7 +560,7 @@ namespace System.Data.Linq {
                     }
                 }
 
-                // Return value indicates whether or not any data was actually sync'd
+                // Return value indicates whether or not any data was actually [....]'d
                 internal override bool SynchDependentData() {                    
                     bool valueWasSet = false;
 
index ee789b785f3afbc8afe908eb3659cc4fe717f46c..275883b022728ae47170e6e5641ffd4368b58f3c 100644 (file)
@@ -31,7 +31,7 @@ namespace System.Data.Linq {
             get { return this.query; }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TResult> Compile<TArg0, TResult>(Expression<Func<TArg0, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -44,7 +44,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TResult> Compile<TArg0, TArg1, TResult>(Expression<Func<TArg0, TArg1, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -57,7 +57,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TResult> Compile<TArg0, TArg1, TArg2, TResult>(Expression<Func<TArg0, TArg1, TArg2, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -70,7 +70,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -83,7 +83,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -96,7 +96,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -109,7 +109,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -122,7 +122,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -135,7 +135,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -148,7 +148,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -161,7 +161,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -174,7 +174,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -187,7 +187,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -200,7 +200,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TArg13, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TArg13, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TArg13, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -213,7 +213,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TArg13, TArg14, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TArg13, TArg14, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TArg13, TArg14, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
@@ -226,7 +226,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
         public static Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TArg13, TArg14, TArg15, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TArg13, TArg14, TArg15, TResult>(Expression<Func<TArg0, TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9, TArg10, TArg11, TArg12, TArg13, TArg14, TArg15, TResult>> query) where TArg0 : DataContext {
             if (query == null) {
                 Error.ArgumentNull("query");
index 822c6ea1bef2abddadfd5f019ebc643e2a9b52d3..5d7fb47e71fddd81df1bc158ac965da871c0bcff 100644 (file)
@@ -352,7 +352,7 @@ namespace System.Data.Linq {
         /// <typeparam name="TEntity">The type of the entity objects. In case of a persistent hierarchy
         /// the entity specified must be the base type of the hierarchy.</typeparam>
         /// <returns></returns>
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         public Table<TEntity> GetTable<TEntity>() where TEntity : class {
             CheckDispose();
             MetaTable metaTable = this.services.Model.GetTable(typeof(TEntity));
@@ -483,7 +483,7 @@ namespace System.Data.Linq {
         /// You can override this method to implement common conflict resolution behaviors.
         /// </summary>
         /// <param name="failureMode">Determines how SubmitChanges handles conflicts.</param>
-        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Microsoft: In the middle of attempting to rollback a transaction, outer transaction is thrown.")]
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "[....]: In the middle of attempting to rollback a transaction, outer transaction is thrown.")]
         public virtual void SubmitChanges(ConflictMode failureMode) {
             CheckDispose();
             CheckNotInSubmitChanges();
@@ -718,7 +718,7 @@ namespace System.Data.Linq {
         /// <param name="query">The query specified in the server's native query language.</param>
         /// <param name="parameters">The parameter values to use for the query.</param>
         /// <returns>An IEnumerable sequence of objects.</returns>
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         public IEnumerable<TResult> ExecuteQuery<TResult>(string query, params object[] parameters) {
             CheckDispose();
             if (query == null) {
@@ -786,7 +786,7 @@ namespace System.Data.Linq {
         /// <param name="methodInfo">The reflection MethodInfo for the method to invoke.</param>
         /// <param name="parameters">The parameters for the method call.</param>
         /// <returns>The returned query object</returns>
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         internal protected IQueryable<TResult> CreateMethodCallQuery<TResult>(object instance, MethodInfo methodInfo, params object[] parameters) {
             CheckDispose();
             if (instance == null) {
@@ -884,7 +884,7 @@ namespace System.Data.Linq {
         /// <typeparam name="TResult">The element type of the resulting sequence</typeparam>
         /// <param name="reader">The DbDataReader to translate</param>
         /// <returns>The translated sequence of objects</returns>
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         public IEnumerable<TResult> Translate<TResult>(DbDataReader reader) {
             CheckDispose();
             return (IEnumerable<TResult>)this.Translate(typeof(TResult), reader);
@@ -999,7 +999,7 @@ namespace System.Data.Linq {
     /// ITable is the common interface for DataContext tables. It can be used as the source
     /// of a dynamic/runtime-generated query.
     /// </summary>
-    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification="Microsoft: Meant to represent a database table which is delayed loaded and doesn't provide collection semantics.")]
+    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification="[....]: Meant to represent a database table which is delayed loaded and doesn't provide collection semantics.")]
     public interface ITable : IQueryable {
         /// <summary>
         /// The DataContext containing this Table.
@@ -1102,7 +1102,7 @@ namespace System.Data.Linq {
     /// persisted in the database. Use it as a source of queries and to add/insert and remove/delete entities.
     /// </summary>
     /// <typeparam name="TEntity"></typeparam>
-    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification="Microsoft: Meant to represent a database table which is delayed loaded and doesn't provide collection semantics.")]
+    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification="[....]: Meant to represent a database table which is delayed loaded and doesn't provide collection semantics.")]
     public sealed class Table<TEntity> : IQueryable<TEntity>, IQueryProvider, IEnumerable<TEntity>, IQueryable, IEnumerable, ITable, IListSource, ITable<TEntity> 
         where TEntity : class {
         DataContext context;
@@ -1156,7 +1156,7 @@ namespace System.Data.Linq {
             return (IQueryable)Activator.CreateInstance(dqType, new object[] { this.context, expression });
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         IQueryable<TResult> IQueryProvider.CreateQuery<TResult>(Expression expression) {
             if (expression == null) {
                 throw Error.ArgumentNull("expression");
@@ -1171,7 +1171,7 @@ namespace System.Data.Linq {
             return this.context.Provider.Execute(expression).ReturnValue;
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         TResult IQueryProvider.Execute<TResult>(Expression expression) {
             return (TResult)this.context.Provider.Execute(expression).ReturnValue;
         }
@@ -1680,7 +1680,7 @@ namespace System.Data.Linq {
         }
     }
 
-    [SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Justification = "Microsoft: Types are never compared to each other.  When comparisons happen it is against the entities that are represented by these constructs.")]
+    [SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Justification = "[....]: Types are never compared to each other.  When comparisons happen it is against the entities that are represented by these constructs.")]
     public struct ModifiedMemberInfo {
         MemberInfo member;
         object current;
index 940b746fa2dce7eec6da186a73d4dc95c4fb5b06..e46bb6ee15c6df13a30d1a291659e2f998ae1992 100644 (file)
@@ -17,8 +17,8 @@ namespace System.Data.Linq {
         /// <summary>
         /// Describe a property that is automatically loaded when the containing instance is loaded
         /// </summary>
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
-        [SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters", Justification = "Microsoft: Need to provide static typing.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters", Justification = "[....]: Need to provide static typing.")]
         public void LoadWith<T>(Expression<Func<T, object>> expression) {
             if (expression == null) {
                 throw Error.ArgumentNull("expression");
@@ -41,8 +41,8 @@ namespace System.Data.Linq {
         /// <summary>
         /// Place a subquery on the given association.
         /// </summary>
-        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "Microsoft: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
-        [SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters", Justification = "Microsoft: Need to provide static typing.")]
+        [SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "[....]: Generic types are an important part of Linq APIs and they could not exist without nested generic support.")]
+        [SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters", Justification = "[....]: Need to provide static typing.")]
         public void AssociateWith<T>(Expression<Func<T, object>> expression) {
             if (expression == null) {
                 throw Error.ArgumentNull("expression");
@@ -234,7 +234,7 @@ namespace System.Data.Linq {
                 }
                 edges = newEdges;
             }
-            throw new InvalidOperationException("Bug in ValidateTypeGraphAcyclic"); // Getting here means a 
+            throw new InvalidOperationException("Bug in ValidateTypeGraphAcyclic"); // Getting here means a bug.
         }
 
         private static Type GetIncludeTarget(MemberInfo mi) {
index 7d21b20de9b1d350a3d988e93db50f27cf954276..03af1adc404c1e866f92b776657d2977aeba2a7d 100644 (file)
@@ -15,12 +15,12 @@ namespace System.Data.Linq {
     public static class DBConvert {
         private static Type[] StringArg = new Type[] { typeof(string) };
 
-        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+        [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
         public static T ChangeType<T>(object value) {
             return (T)ChangeType(value, typeof(T));
         }
 
-        [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "Microsoft: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
+        [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "[....]: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
         [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
         public static object ChangeType(object value, Type type) {
             if (value == null)
index dbc4eae8f3d584bbf8a065c7b6b798083036221e..414c1934337c8be5750f84cafd74ce5131746d3f 100644 (file)
@@ -97,8 +97,8 @@ namespace System.Data.Linq {
 
             #region Nested type definitions
             // These types are internal rather than private to work around
-            // CLR 
-
+            // CLR bug #117419 related to type visibility under partial trust
+            // in nested class scenarios.
 
             internal abstract class KeyManager {
                 internal abstract Type KeyType { get; }
index 68b69b3defc7a9e8777e007621aba1eb9cdf8782..d07e222bafdd17475a6b219db28e819f3cd7c255 100644 (file)
@@ -501,7 +501,7 @@ namespace System.Data.Linq.Mapping {
         /// </summary>
         /// <param name="instance">The instance to set the value into.</param>
         /// <param name="value">The value to set.</param>
-        [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification="Microsoft: Needs to handle classes and structs.")]
+        [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification="[....]: Needs to handle classes and structs.")]
         [SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", Justification="Unknown reason.")]
         public abstract void SetBoxedValue(ref object instance, object value);
         /// <summary>
index 98438415b0c9a01915d459d7546e015af13d421f..56eccaa93be04d225c8fc435f727bce56f69b330 100644 (file)
@@ -140,8 +140,8 @@ namespace System.Data.Linq.Provider {
         /// <param name="item"></param>
         /// <param name="resultSelector"></param>
         /// <returns></returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")]
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "resultSelector", Justification = "Microsoft: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "[....]: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "resultSelector", Justification = "[....]: The method is being used to represent a method signature")]
         public static TResult Insert<TEntity, TResult>(TEntity item, Func<TEntity, TResult> resultSelector) {
             throw new NotImplementedException();
         }
@@ -152,7 +152,7 @@ namespace System.Data.Linq.Provider {
         /// <typeparam name="TEntity"></typeparam>
         /// <param name="item"></param>
         /// <returns></returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "[....]: The method is being used to represent a method signature")]
         public static int Insert<TEntity>(TEntity item) {
             throw new NotImplementedException();
         }
@@ -166,9 +166,9 @@ namespace System.Data.Linq.Provider {
         /// <param name="check"></param>
         /// <param name="resultSelector"></param>
         /// <returns></returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")]
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "check", Justification = "Microsoft: The method is being used to represent a method signature")]
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "resultSelector", Justification = "Microsoft: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "[....]: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "check", Justification = "[....]: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "resultSelector", Justification = "[....]: The method is being used to represent a method signature")]
         public static TResult Update<TEntity, TResult>(TEntity item, Func<TEntity, bool> check, Func<TEntity, TResult> resultSelector) {
             throw new NotImplementedException();
         }
@@ -181,8 +181,8 @@ namespace System.Data.Linq.Provider {
         /// <param name="item"></param>
         /// <param name="resultSelector"></param>
         /// <returns></returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")]
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "resultSelector", Justification = "Microsoft: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "[....]: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "resultSelector", Justification = "[....]: The method is being used to represent a method signature")]
         public static TResult Update<TEntity, TResult>(TEntity item, Func<TEntity, TResult> resultSelector) {
             throw new NotImplementedException();
         }
@@ -194,8 +194,8 @@ namespace System.Data.Linq.Provider {
         /// <param name="item"></param>
         /// <param name="check"></param>
         /// <returns></returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")]
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "check", Justification = "Microsoft: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "[....]: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "check", Justification = "[....]: The method is being used to represent a method signature")]
         public static int Update<TEntity>(TEntity item, Func<TEntity, bool> check) {
             throw new NotImplementedException();
         }
@@ -206,7 +206,7 @@ namespace System.Data.Linq.Provider {
         /// <typeparam name="TEntity"></typeparam>
         /// <param name="item"></param>
         /// <returns></returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "[....]: The method is being used to represent a method signature")]
         public static int Update<TEntity>(TEntity item) {
             throw new NotImplementedException();
         }
@@ -218,8 +218,8 @@ namespace System.Data.Linq.Provider {
         /// <param name="item"></param>
         /// <param name="check"></param>
         /// <returns></returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")]
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "check", Justification = "Microsoft: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "[....]: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "check", Justification = "[....]: The method is being used to represent a method signature")]
         public static int Delete<TEntity>(TEntity item, Func<TEntity, bool> check) {
             throw new NotImplementedException(); 
         }
@@ -230,7 +230,7 @@ namespace System.Data.Linq.Provider {
         /// <typeparam name="TEntity"></typeparam>
         /// <param name="item"></param>
         /// <returns></returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "Microsoft: The method is being used to represent a method signature")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "item", Justification = "[....]: The method is being used to represent a method signature")]
         public static int Delete<TEntity>(TEntity item) {
             throw new NotImplementedException();
         }
index 87d874585ce5e0a0238a9895f855e8a38bec7fa2..9f35835e42904b42cf9b00cb09c5bda61c76b6b5 100644 (file)
@@ -9,7 +9,7 @@ namespace System.Data.Linq.SqlClient {
         int nDepth;
  
         // Visit a SqlNode
-        [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification="Microsoft: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
+        [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification="[....]: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
         [SuppressMessage("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
         [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
         internal virtual SqlNode Visit(SqlNode node) {
index 50ccc2c6d099820465bb2e2fbd30978117c36f6e..57d09b761adc741b3cf9f46da533bc26194e8ba1 100644 (file)
@@ -142,7 +142,7 @@ namespace System.Data.Linq.SqlClient {
         }
 
         [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
-        [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "Microsoft: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
+        [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "[....]: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
         internal virtual Expression Visit(Expression exp) {
             if (exp == null)
                 return exp;
index a9135481d56b670cb96d8798bd482357c1b2cd30..55ae51ee9571e225d66d051c088e676a1ee4f3e6 100644 (file)
@@ -143,7 +143,7 @@ namespace System.Data.Linq.SqlClient {
             return result;
         }
 
-        [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "Microsoft: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
+        [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "[....]: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
         [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
         private SqlNode VisitInner(Expression node) {
             if (node == null) return null;
index 6d5c6e6156bb2335171bf5ab98994ace51d05c55..26645270af20074ae8a34374a15f576b61c41067 100644 (file)
@@ -1266,7 +1266,7 @@ namespace System.Data.Linq.SqlClient {
                 throw Error.UnexpectedNode(node.NodeType);
             }
 
-            [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "Microsoft: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
+            [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "[....]: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
             [SuppressMessage("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
             [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
             internal SqlExpression ConvertToFetchedExpression(SqlNode node) {
index d70c0becbe9d92b6dd50df23dac321ff25a94c18..06a76c701a1cbecbe04912cfb2e6a2d5a9be7fb8 100644 (file)
@@ -13,7 +13,7 @@ namespace System.Data.Linq.SqlClient {
         internal SqlComparer() {
         }
 
-        [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "Microsoft: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
+        [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "[....]: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
         [SuppressMessage("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
         [SuppressMessage("Microsoft.Maintainability", "CA1505:AvoidUnmaintainableCode", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
         [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
index ed4f0e66eca28017c2cb52d515f8137aa50027cd..b290c007cd7702a8839eb9ae064390f1250f95e5 100644 (file)
@@ -236,7 +236,7 @@ namespace System.Data.Linq.SqlClient {
                 return select;
             }
 
-            [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification="Microsoft: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
+            [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification="[....]: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
             private void CheckJoinCondition(SqlExpression expr) {
                 switch (expr.NodeType) {
                     case SqlNodeType.And: {
index 9717a97a0cce46f48d4c0081720d81998dc5ed3f..9b7d7de01af35c455906e59e4ea92d00782ea9f9 100644 (file)
@@ -20,7 +20,7 @@ namespace System.Data.Linq.SqlClient {
         }
 
         class Visitor : SqlVisitor {
-            [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification = "Microsoft: part of our standard visitor pattern")]
+            [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification = "[....]: part of our standard visitor pattern")]
             SqlFactory sql;
             SqlColumnizer columnizer;
             bool isTopLevel;
index 79be6fe37eb380b36e1b72a1cf7c623b39964556..ddbca5a93db3b40896c13eb12fd79c5262f0a810 100644 (file)
@@ -939,7 +939,7 @@ namespace System.Data.Linq.SqlClient {
 
                     //Recognized pattern has set return value so return
                     if (returnValue != null) {
-                        // Assert here to verify that actual translation stays in sync with
+                        // Assert here to verify that actual translation stays in [....] with
                         // method support logic
                         Debug.Assert(GetMethodSupport(mc) == MethodSupport.Method);
                         return returnValue;
@@ -973,7 +973,7 @@ namespace System.Data.Linq.SqlClient {
                         returnValue = TranslateDateTimeOffsetInstanceMethod(mc);
                     }
                     if (returnValue != null) {
-                        // Assert here to verify that actual translation stays in sync with
+                        // Assert here to verify that actual translation stays in [....] with
                         // method support logic
                         Debug.Assert(GetMethodSupport(mc) == MethodSupport.Method);
                         return returnValue;
@@ -2159,7 +2159,7 @@ namespace System.Data.Linq.SqlClient {
                 throw GetMethodSupportException(mc);
             }
 
-            [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "Microsoft: These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
+            [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "[....]: These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
             internal override SqlNode VisitMember(SqlMember m) {
                 SqlExpression exp = this.VisitExpression(m.Expression);
                 MemberInfo member = m.Member;
index 70507c2459696b274393412e2a3044c4491491f1..44139f927c2c7e86f11847768cc2daed9e85dd37 100644 (file)
@@ -35,18 +35,18 @@ namespace System.Data.Linq.SqlClient {
         [SuppressMessage("Microsoft.Design", "CA1012:AbstractTypesShouldNotHaveConstructors", Justification = "Unknown reason.")]
         public abstract class ObjectMaterializer<TDataReader> where TDataReader : DbDataReader {
             // These are public fields rather than properties for access speed
-            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "Microsoft: This is a public type that is not intended for public use.")]
+            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "[....]: This is a public type that is not intended for public use.")]
             public int[] Ordinals;
             [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Globals", Justification = "Spelling is correct.")]
-            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "Microsoft: This is a public type that is not intended for public use.")]
+            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "[....]: This is a public type that is not intended for public use.")]
             public object[] Globals;
-            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "Microsoft: This is a public type that is not intended for public use.")]
+            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "[....]: This is a public type that is not intended for public use.")]
             public object[] Locals;
-            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "Microsoft: This is a public type that is not intended for public use.")]
+            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "[....]: This is a public type that is not intended for public use.")]
             public object[] Arguments;
-            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "Microsoft: This is a public type that is not intended for public use.")]
+            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "[....]: This is a public type that is not intended for public use.")]
             public TDataReader DataReader;
-            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "Microsoft: This is a public type that is not intended for public use.")]
+            [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Justification = "[....]: This is a public type that is not intended for public use.")]
             public DbDataReader BufferReader;
 
             public ObjectMaterializer() {
@@ -57,16 +57,16 @@ namespace System.Data.Linq.SqlClient {
             public abstract void SendEntityMaterialized(int globalMetaType, object instance);
             public abstract IEnumerable ExecuteSubQuery(int iSubQuery, object[] args);
 
-            [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+            [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
             public abstract IEnumerable<T> GetLinkSource<T>(int globalLink, int localFactory, object[] keyValues);
 
-            [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+            [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
             public abstract IEnumerable<T> GetNestedLinkSource<T>(int globalLink, int localFactory, object instance);
             public abstract bool Read();
             public abstract bool CanDeferLoad { get; }
 
             [SuppressMessage("Microsoft.Design", "CA1000:DoNotDeclareStaticMembersOnGenericTypes", Justification = "xiaoruda: The method has to be static because it's used in our generated code and there is no instance of the type.")]
-            [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Microsoft: Generic parameters are required for strong-typing of the return type.")]
+            [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "[....]: Generic parameters are required for strong-typing of the return type.")]
             public static IEnumerable<TOutput> Convert<TOutput>(IEnumerable source) {
                 foreach (object value in source) {
                     yield return DBConvert.ChangeType<TOutput>(value);
@@ -717,7 +717,7 @@ namespace System.Data.Linq.SqlClient {
                 return this.Generate(node, null);
             }
 
-            [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "Microsoft: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
+            [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "[....]: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
             [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "These issues are related to our use of if-then and case statements for node types, which adds to the complexity count however when reviewed they are easy to navigate and understand.")]
             private Type Generate(SqlNode node, LocalBuilder locInstance) {
 #if DEBUG
@@ -2212,7 +2212,7 @@ namespace System.Data.Linq.SqlClient {
                 }
             }
 
-            [SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", Justification = "Microsoft: The variable tc for which the rule fires is used in both a Debug.Assert and in a switch statement")]
+            [SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", Justification = "[....]: The variable tc for which the rule fires is used in both a Debug.Assert and in a switch statement")]
             private void GenerateArrayAssign(Type type) {
                 // This method was copied out of the expression compiler codebase.  
                 // Since DLINQ doesn't currently consume array indexers most of this 
@@ -2263,7 +2263,7 @@ namespace System.Data.Linq.SqlClient {
                 }
             }
 
-            [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "address", Justification = "Microsoft: See comments in source. Usage commented out to improve code coverage test")]
+            [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "address", Justification = "[....]: See comments in source. Usage commented out to improve code coverage test")]
             private Type GenerateArrayAccess(Type type, bool address) {
                 // This method was copied out of the expression compiler codebase.  
                 // Since DLINQ doesn't currently consume array indexers most of this 
@@ -2517,7 +2517,7 @@ namespace System.Data.Linq.SqlClient {
                 get { return this.BufferReader != null; }
             }
 
-            [SuppressMessage("Microsoft.Globalization", "CA1306:SetLocaleForDataTypes", Justification = "Microsoft: Used only as a buffer and never used for string comparison.")]
+            [SuppressMessage("Microsoft.Globalization", "CA1306:SetLocaleForDataTypes", Justification = "[....]: Used only as a buffer and never used for string comparison.")]
             internal void Buffer() {
                 if (this.BufferReader == null && (this.hasCurrentRow || !this.hasRead)) {
                     if (this.session.IsBuffered) {
@@ -2801,7 +2801,7 @@ namespace System.Data.Linq.SqlClient {
                 get { return this.buffer != null; }
             }
 
-            [SuppressMessage("Microsoft.Globalization", "CA1306:SetLocaleForDataTypes", Justification = "Microsoft: Used only as a buffer and never used for string comparison.")]
+            [SuppressMessage("Microsoft.Globalization", "CA1306:SetLocaleForDataTypes", Justification = "[....]: Used only as a buffer and never used for string comparison.")]
             public void Buffer() {
                 if (this.buffer == null) {
                     if (this.currentReader != null && !this.currentReader.IsBuffered) {
index da3696d31d1eb3385b373a700268eb7f67d4d3fb..e11bca1e8a56b1d2cc9edcf915adb6e029de2a5c 100644 (file)
@@ -562,8 +562,8 @@ namespace System.Data.Linq.SqlClient {
         /// <param name="match_expression">The string that is to be matched.</param>
         /// <param name="pattern">The pattern which may involve wildcards %,_,[,],^.</param>
         /// <returns>true if there is a match.</returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "pattern", Justification = "Microsoft: Method is a placeholder for a server-side method.")]
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "matchExpression", Justification = "Microsoft: Method is a placeholder for a server-side method.")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "pattern", Justification = "[....]: Method is a placeholder for a server-side method.")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "matchExpression", Justification = "[....]: Method is a placeholder for a server-side method.")]
         public static bool Like(string matchExpression, string pattern) {
             throw Error.SqlMethodOnlyForSql(MethodInfo.GetCurrentMethod());
         }
@@ -576,9 +576,9 @@ namespace System.Data.Linq.SqlClient {
         /// <param name="pattern">The pattern which may involve wildcards %,_,[,],^.</param>
         /// <param name="escape_character">The escape character to use in front of %,_,[,],^ if they are not used as wildcards.</param>
         /// <returns>true if there is a match.</returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "pattern", Justification = "Microsoft: Method is a placeholder for a server-side method.")]
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "matchExpression", Justification = "Microsoft: Method is a placeholder for a server-side method.")]
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "escapeCharacter", Justification = "Microsoft: Method is a placeholder for a server-side method.")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "pattern", Justification = "[....]: Method is a placeholder for a server-side method.")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "matchExpression", Justification = "[....]: Method is a placeholder for a server-side method.")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "escapeCharacter", Justification = "[....]: Method is a placeholder for a server-side method.")]
         public static bool Like(string matchExpression, string pattern, char escapeCharacter) {
             throw Error.SqlMethodOnlyForSql(MethodInfo.GetCurrentMethod());
         }
@@ -591,7 +591,7 @@ namespace System.Data.Linq.SqlClient {
         /// </summary>
         /// <param name="value">The string to take the length of.</param>
         /// <returns>length of the string</returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "value", Justification = "Microsoft: Method is a placeholder for a server-side method.")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "value", Justification = "[....]: Method is a placeholder for a server-side method.")]
         internal static int RawLength(string value) {
             throw Error.SqlMethodOnlyForSql(MethodInfo.GetCurrentMethod());
         }
@@ -602,7 +602,7 @@ namespace System.Data.Linq.SqlClient {
         /// </summary>
         /// <param name="value">The byte array to take the length of.</param>
         /// <returns>length of the array</returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "value", Justification = "Microsoft: Method is a placeholder for a server-side method.")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "value", Justification = "[....]: Method is a placeholder for a server-side method.")]
         internal static int RawLength(byte[] value) {
             throw Error.SqlMethodOnlyForSql(MethodInfo.GetCurrentMethod());
         }
@@ -613,7 +613,7 @@ namespace System.Data.Linq.SqlClient {
         /// </summary>
         /// <param name="value">The Binary value to take the length of.</param>
         /// <returns>length of the Binary</returns>
-        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "value", Justification = "Microsoft: Method is a placeholder for a server-side method.")]
+        [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "value", Justification = "[....]: Method is a placeholder for a server-side method.")]
         internal static int RawLength(Binary value) {
             throw Error.SqlMethodOnlyForSql(MethodInfo.GetCurrentMethod());
         }
index 437759cb900e786adf8e02bbfeb7669b903e3705..f3dce0d1cfc98c382c8a75bd65d557aebc3ec575 100644 (file)
@@ -738,7 +738,7 @@ namespace System.Data.Linq.SqlClient {
             }
         }
 
-        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification="Microsoft: Code needs to return false regarless of exception.")]
+        [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification="[....]: Code needs to return false regarless of exception.")]
         [ResourceExposure(ResourceScope.None)] // Exposure is via other methods that set dbName.
         [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)] // File.Exists method call.
         bool IProvider.DatabaseExists() {
@@ -1779,7 +1779,7 @@ namespace System.Data.Linq.SqlClient {
             IObjectReaderSession session;
             int iReturnParameter = -1;
             object value;
-            [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification = "Microsoft: used in an assert in ReturnValue.set")]
+            [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification = "[....]: used in an assert in ReturnValue.set")]
             bool useReturnValue;
             bool isDisposed;
 
index f71e8659778743ee30e9d281db6f0633a4ce1697..06bb4d3af7caf2ce5b7c91a9e8ab323024f777c7 100644 (file)
@@ -1316,7 +1316,7 @@ namespace System.Data.Linq.SqlClient {
                 }
             }
 
-            [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "Microsoft: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
+            [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Justification = "[....]: Cast is dependent on node type and casts do not happen unecessarily in a single code path.")]
             internal override ProviderType GetBestType(ProviderType typeA, ProviderType typeB) {
                 // first determine the type precedence
                 SqlType bestType = (SqlType)(typeA.ComparePrecedenceTo(typeB) > 0 ? typeA : typeB);
index d132e20d55e07258a19a1caaa08eea96782f6555..c6d89a01061d3ac2c5972ab61a842e4f960c0a56 100644 (file)
@@ -17,7 +17,7 @@ namespace System.Data.Linq {
         internal static readonly IEnumerable<T> Assigned = (IEnumerable<T>)new T[] { };
     }
 
-    [SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Justification = "Microsoft: Types are never compared to each other.  When comparisons happen it is against the entities that are represented by these constructs.")]
+    [SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Justification = "[....]: Types are never compared to each other.  When comparisons happen it is against the entities that are represented by these constructs.")]
     public struct Link<T> {
         T underlyingValue;
         IEnumerable<T> source;
@@ -80,7 +80,7 @@ namespace System.Data.Linq {
         }
     }
 
-    [SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Justification="Microsoft: Types are never compared to each other.  When comparisons happen it is against the entities that are represented by these constructs.")]
+    [SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Justification="[....]: Types are never compared to each other.  When comparisons happen it is against the entities that are represented by these constructs.")]
     public struct EntityRef<TEntity>
         where TEntity : class {
         IEnumerable<TEntity> source;
@@ -146,7 +146,7 @@ namespace System.Data.Linq {
         }
     }
 
-    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification="Microsoft: Naming chosen to represent a different concept from a collection because it is delayed loaded.")]
+    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification="[....]: Naming chosen to represent a different concept from a collection because it is delayed loaded.")]
     public sealed class EntitySet<TEntity> : IList, IList<TEntity>, IListSource
         where TEntity : class {
         IEnumerable<TEntity> source;
@@ -213,7 +213,7 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "Microsoft: Naming the parameter entity makes it more discoverable because it is clear what type of data should be added to this collection.")]
+        [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "[....]: Naming the parameter entity makes it more discoverable because it is clear what type of data should be added to this collection.")]
         public void Add(TEntity entity) {
             if (entity == null) {
                 throw Error.ArgumentNull("entity");
@@ -279,7 +279,7 @@ namespace System.Data.Linq {
             OnListChanged(ListChangedType.Reset, 0);
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "Microsoft: Naming the parameter entity makes it more discoverable because it is clear what type of data should be added to this collection.")]
+        [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "[....]: Naming the parameter entity makes it more discoverable because it is clear what type of data should be added to this collection.")]
         public bool Contains(TEntity entity) {
             return IndexOf(entity) >= 0;
         }
@@ -311,13 +311,13 @@ namespace System.Data.Linq {
             }
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "Microsoft: Naming the parameter entity makes it more discoverable because it is clear what type of data should be added to this collection.")]
+        [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "[....]: Naming the parameter entity makes it more discoverable because it is clear what type of data should be added to this collection.")]
         public int IndexOf(TEntity entity) {
             Load();
             return entities.IndexOf(entity);
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "1#", Justification = "Microsoft: Naming the parameter entity makes it more discoverable because it is clear what type of data should be added to this collection.")]
+        [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "1#", Justification = "[....]: Naming the parameter entity makes it more discoverable because it is clear what type of data should be added to this collection.")]
         public void Insert(int index, TEntity entity) {
             Load();
             if (index < 0 || index > Count)
@@ -406,7 +406,7 @@ namespace System.Data.Linq {
             isModified = true;
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "Microsoft: Naming the parameter entity makes it more discoverable because it is clear what type of data should be added to this collection.")]
+        [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "[....]: Naming the parameter entity makes it more discoverable because it is clear what type of data should be added to this collection.")]
         public bool Remove(TEntity entity) {
             if (entity == null || entity == onRemoveEntity) return false;
             CheckModify();
@@ -758,7 +758,7 @@ namespace System.Data.Linq {
         }
     }
 
-    [SuppressMessage("Microsoft.Naming", "CA1724:TypeNamesShouldNotMatchNamespaces", Justification = "Microsoft: The name clearly describes function and the namespace is under a DLinq namespace which will make the distinction clear.")]
+    [SuppressMessage("Microsoft.Naming", "CA1724:TypeNamesShouldNotMatchNamespaces", Justification = "[....]: The name clearly describes function and the namespace is under a DLinq namespace which will make the distinction clear.")]
     [DataContract]
     [Serializable]
     public sealed class Binary : IEquatable<Binary> {
index e4ede4374f489ff81e9c074a2864aa44c00bf630..66211b4ac05d18e3d97b497ff2a9e09df3aa2e23 100644 (file)
@@ -8,11 +8,11 @@
  */
 
 
-#if Microsoft_NAMESPACE
+#if WINFORMS_NAMESPACE
     namespace System.Windows.Forms
 #elif DRAWING_NAMESPACE
     namespace System.Drawing
-#elif Microsoft_PUBLIC_GRAPHICS_LIBRARY
+#elif WINFORMS_PUBLIC_GRAPHICS_LIBRARY
     namespace System.Internal
 #elif SYSTEM_NAMESPACE
     namespace System
@@ -137,7 +137,7 @@ namespace System.Windows.Forms
             return Activator.CreateInstance(type, flags, null, args, null);
         }
 
-#if (!Microsoft_NAMESPACE)
+#if (!WINFORMS_NAMESPACE)
 
         /// <devdoc>
         ///     This helper method provides safe access to Activator.CreateInstance.
index 39335876220ff2b6bb013abf6d3b586d490f72cb..6490ddfb9d561c6095ee360e70d5b342bf4228ef 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="GenerateHelper.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Globalization;
index 3f284be5aa5e565fdad30a8f20c4ce3369260934..c99ee63ec1a7b0746862faa98a26f930c5250d60 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="IteratorDescriptor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 064edcd75464b63bbef1ee39d459df885c1f68ca..85589508b48ee722712b0f21bbd568c4088a777b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="OptimizerPatterns.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index c04cebf1e9c0d3cc8b87aba16e5e1e1644c5c502..366f26d8d410cef628b5c19eee1847dc07af7054 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="StaticDataManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index 86ab9c3a27a0a1fbca9f668b570bd037c5829275..343293ebbeacf625e228d4f6a8127c2ab6cf8406 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TailCallAnalyzer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 5c339d4f0edc10d3c44ee824806942e0539d1d39..d029da0d72daa1cd458b240eafcfabba0e5e6daf 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlILAnnotation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Reflection;
index 26daac8b9ab535f8d2f5d309f3794d27a779fefc..c2c530141d09967251bbc2fcc518eeb102f42ec2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlILConstructAnalyzer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index e47912e447c176d841c1d5105ffaade2df46cced..2df1e23e2eefed0136fed9483b24a0d1bfd3bc48 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XmlILModule.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index 21d44654cb209b570dc129081218f1efc22a9a0b..e1c869221fa43552e2ba4aeda158583a553d307c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlILOptimizerVisitor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Diagnostics;
index 3bb04f749cf9ec56e47877e60fd503088af9e90f..90b2c09d0b6d3638997f193edb6c438f275d57c9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlIlTypeHelper.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index f33d6a9c58c64e88057ec352474000f0617dae12..786be8983fcf729e04fe03010b521bd7b8ee8d84 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlIlVisitor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index 9e9364891bb0a98d17123d0bb9725c8fc1dec203..dbabda6f90456c44808963104eed122619390bd9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ListBase.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index 46a8ad5e5aadfbb15d6c43254eeef59a00b62bef..4cc21c06adb5fd63d8c54746f6dee02a02201ce0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Pair.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index c1982324c232e1db935677cd5bcf895ce6f4984a..1121c090b9d7b09a6eab9363cadd8f6e76d992c2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilBinary.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 25139afcd5f3180d358623743480615f92c57103..b9645a0c1675cdcd8a3032ba9ee479c87eb94ca8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilLoop.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 540ef9b57fac333ba36ce5141ae8b334034a0d5b..12da6caa44b4277fd29f2bef1f3392b69abf077b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilCloneVisitor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index ae4964e2c4a07c15b2871adfa0488fb45b777171..49f29d1d4b68952f58cf66cce39549f48c86c55c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilDataSource.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 08aacbff040fe9f2d50dccf5f03a22f2008a6249..f2050d46d5e3ec3d4ecc463f080dc9028fae2130 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilExpression.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 8d941c65971cbbc8f20dde986db297095a5680b8..743ae9829e11080325bed024fd3f02e6b26deafb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilFactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 6cbfabcc8ef35758dec49083a116572106ab4e63..c08b149dc3f10c13c11cab26172be63ee8a5033e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilFunction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 4d8970b40c523a0b3eda59a5059521e5dbc5e389..a99d6b5ed13be0594d27eeeaa66ed67380ede53e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilInvoke.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 4a880719157397aa47e3ded6e96cd9e9b4d41910..4acb8d3e5949d6844e2d50452824137bb0e3ba46 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilInvokeEarlyBound.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 33b9dd55c47c95c71eca25a03a5bcd2809b54658..57ffa6189678b89be73ce5382799744f5b1080ea 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilInvokeLateBound.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 51eafb5339af0c43b442b26030fa1d8e69fa6206..04e1cdb890f79db9f31ed50693a310d7fc71c2f8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 63f8858680b79a0bc75e384cecc72ac121a63b66..8ac1d26c98906d6a4b8cab2cc7f86aa5af1122f0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilList.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index ac2480a4a296f324a49185d4a2e9b34b83b859ad..b20c678d8a310b75852618b6ce689713a81621a9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilLiteral.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index aeb4e0274a94802001666d09feccc0345a213821..73702017f5e247a231e51ff42d7ff1635d81a094 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilLoop.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 7387507ce8f94888aeabb968c8c4946fd223d753..1558795a5ed23ab5a63c54f71c7f6b79fe563d03 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilName.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 6eefb53f22a1b810186d58575419d68e7b2f34a4..40201b07105b8d7bdc18d67ab48018f6a18ebbf2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 3fdcf6c02256de457bcc21bc1cfd95e6859f5dd3..357800ea0cbacacb047d4dcb0ea748338ea400e6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilParameter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 28cdbe3359d36d2e897c2dbf6c2be5a3731a6806..5798d4c337bed21bddb45cf4bf2a799f9ee0670e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilPatternFactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index bdd237a488d472b794de9d80bca1eead472b6aec..4b86398a2bc95e8c807f5e15c9e2d52927977c60 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilPatternVisitor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index f06089201a6dff4cc4a38534a64a8c9f07c59ed0..bf28cf11f9fa0fc99de23ce84654227150ac6427 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilReference.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 3c422a89197c47db744b98c6c7397ba33a3d7414..e335154607bcf6df92b50af335d1e88d4c6736c0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilReplaceVisitor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 556a6d331271f5b58ab23642231184baf213001b..a3bcfd59df99573622cc8973c4c5a7d5b4035eab 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilScopedVisitor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index c4b8b9211b9aef2a6c3f9c12bf5f803814f2c592..a7d76b24256c7debe59d0c67395086992f9d917a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilSortKey.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 17395597416bba97e980fcd9eb9a24522f8fdaf9..011075c452dee9db85a68f594d0416163ee5a3b4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilStrConcat.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index de1bcc1e61aaa8caec48aa33f93a2081d3de213d..ae27ad547ca73c433d477184688ed1bc7bbfd02f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilTargetType.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 493f12eaf9fd82cc0fa121aeca52a082dab22166..317891a507e3eefb03626292c410111412d35aed 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilTernary.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 0d10556e9a98d649cfa56780abb25ae411ca0772..850c4c8d8ad300d4a02408ce7fd47649693efb2d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilTypeChecker.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 4d1fbed67ae4c57cfd04deb65302f97bcc2df329..4980715effab105c0bf1c134f7b19e6d6d3ffc11 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilUnary.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 9ebe9a2dca22f7e9dcbc99d0afa6161cb6e7cb98..678bf547f28739ca47e06b26a0d8289e8c721be3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilValidationVisitor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index 5e5b5543e0212680ce5ff9530c18ef2f2fd63163..ce86057f34905156acc15b6a0f85598ca5b8eee5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilVisitor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index eebd0d843f52ac79f7c8d27d06493ffb8ecf1eb5..5a53a3e95f4775c89415b9b626173f37b4e43deb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilXmlReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index e53c663f9b62d0565daa1837f9e8dd317ecea19b..83253ea5a4426ec3c55fc97393158080eb0fbe33 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilXmlWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 32868e6a185c514490b4b51d85f716668d57122f..223e5fbafc47a3ee16649248bd38b7b56f922852 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SubstitutionList.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 914f12963d3e6e06dac91fdf262af6691ec4192e..ca7ed1811ddadbf5eb042ae71e74a4b090e7da9d 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="WhitespaceRule.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index 26cd3fc5d166a0e34d8157c34f7305a94fa8308f..d8ed8752b9891efdd5684a6c5db03c65d14e2cbc 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QueryReaderSettings.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index 02b7678ee77d2f878ac8d21cfccb41612f4ecfac..e13600336e4340aec4d4a9e571341f5e2aadb0a6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ContentIterators.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index 43f6ee62986b65e1b8286b0d848e891d40e25b22..0662261d1441c39b7aa8218f0f43c1df7d22f492 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DecimalFormatter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index 0d074a55dff50b4b708cc5e63109e46777edd76b..07abd470b521d945c9fcb4becb268e061f215b89 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DocumentOrderComparer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 89d2300054663677e83e6a1b6f40bdecdbbacb05..39928a7b4501e44edffecfa9b0a1651022721f1f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DodSequenceMerge.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 790cf997728a9b66d23aeed52c8515ad2a56493a..e6e31f979fef0fce074c32128e5f243d53b918c5 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="EarlyBoundInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index 500a168de43adee899add8dcb447a4f418700214..2aef5b0dad1bdcd307256e3ddc8ef3e422a956a4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NumberFormatter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index 42e3c1960c39878045b3d02ff2d6e4b4dd4b8fb2..f31249e1657e024b9b9d226b020fea46c8683de5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="RtfNavigator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Threading;
index dbf8c20c85d25d6f1a7f40ce93b6557461a07f8b..62a4e859263adf42cca8e7e106f3b651b22399cf 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SetIterators.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index 06c38ce39e571e5113ce2054ab5ab26f3ce9dcd0..d48459e9edfafaeb7f47b5e2bced00fcebd713c8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SiblingIterators.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index b20f293db2336cab63dfcaa6b81367ea0cbea4b2..6b41ec7c66c4770bd21ae59eb717e3fb1042dbfe 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="StringConcat.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 05afae41b5db122f90b78b62b22429d3a68ca8a7..a3cdf490311eabac8f4d4a7e76e59edf64efd285 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TreeIterators.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.ComponentModel;
index 5a7dea1a30a2b70cf2510bcbddc326e48179b69a..3aa9ab535056c10564e3b7f5785d22f682409696 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="WhitespaceRuleLookup.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index 17207a41823af4e74bb29dd1ddf6091a1885cd95..4668e15222d52876c2e58ca06eb887942d057af5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="WhitespaceRuleReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.IO;
index 7c4d0394b175b7bea463d7247168b7f272d2e116..902ffdf86e3dd301d2e3473958180d390a887e11 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAggregates.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index c35eb8fc2fa410ef654888e306f55baeceb30ecd..6f39cb3e4deb7393317c83130d275c44acccfa8a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAttributeCache.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.Runtime {
index e06f6d90279a9b7ffcca710103943cd7e020462e..956c2a654bf4971cc810db68181590508028e497 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlCollation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index 0425c8e83bbfc2b9cb6709d1fa82e74f0ebfab9c..d51ded1fa4784e0fc67c8bbe434fc4d24062e823 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlExtensionFunction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 679637e171fb4c63242623368133030791f2c0d4..f039045732356d734dfa903eb4b73e8debb10b02 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlILIndex.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index ad7f029edc7039eeeac76a55ec4a5710746eb5d4..222ec5c050630eac98bc1d559ff432f52715ffd0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlILStorageConverter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index d5f189c21d700d648b62b2b06cf88d4aa0654011..24e3a96a89cabecbffd8638487567b27b31182a5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlIterators.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index 2e91ddc8a3b0e304c300b382aa00110bbf43c866..6b8eb8264cbec395ff8770a92d98767fe2141841 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNavigatorFilter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System.Xml;
 using System.Xml.XPath;
index ab5d5cdc8b4f3d97a96215fb3bfd1427eefd49e9..214b75582dedb3d0df5b1461af9ad8b176231085 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNavigatorStack.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index 644bfa8c254b03db6a9d6ac5b3ac73b9feeaf688..ca621b66b06070903f27b362c19308675238abb0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlQueryContext.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 275b9e2bc7c97022de42d5da8e206ef9f063d04b..6fd3ce9e508c24282ffde7ca8aa9efb7c27de9b8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlQueryOutput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System.Collections.Generic;
 using System.ComponentModel;
index 15d5db990d9d44bf7cad46c729262544e6856f95..782a2e12caabfd28730b379f07ef930d7863931f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlQueryRuntime.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.IO;
index 727040cd6b01b670e799dcb91ec841fd81b889d8..2c01291b697fcba791a2f88f42118bcb378ded67 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlQuerySequence.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 7ca2d40b9f9c8ab99b66c6d01555c4e431e326e4..b3bae005fa0d2c9e56d31822c6ee8f654e8fb838 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlQueryStaticData.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index f08e0effed0bb304a794473724ec624e05ad3bc2..c8766cfd044442459a5cc81dcb5a291b1ddd13fb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlRawWriterWrapper.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.IO;
index 1b974e927d7e5c2e8801539e2d878aeebc8f2ad6..f5538b75e470255b9c2aaae7eb20f297b7f7b369 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSequenceWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections.Generic;
index 793d287c5aae29636cf41e5a5dae937ae7a4f619..772ffd6b440ab7b10c2d8c5430c4137c111812f3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSortKey.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index d1f241b3a8ebf113ef89eaf0934babd9c7a710ec..3516c67242cf5b6564aea74b3d41f10abe5a623f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSortKeyAccumulator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 631232ac84ad1788726677331affdd484ed3d1d7..343dd36d75f9efffa0b0c22df76b02e04aee76fc 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XslNumber.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index 93752e860db86c935a2b680bbf5ccbd356c680a2..885ccaca9f7396ce4a03c61fb15c53821a604670 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltConvert.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 032279a4bce9763a795b797a2a9e727e66684ff3..473cef5a4d39dc0357d1c24587fff1e0b17b0c2b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltFunctions.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.IO;
index 0f148d6ee3254f3c3aab4a8a59246b8535b4f56e..6f9b8236b0e3c6c4eb34c7d72edfed210edfb525 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltLibrary.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Specialized;
index 46f24679de5db334d1c1c6ff9fcdaad360603f9d..0e66590905571e7f1ff56e5e62edde2a10fe9aa9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SourceLineInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index 8f78d159c115d134f28126286b193a1c832ac98f..b2ef65f8cc8a0cffe262de677717f462831169e5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
@@ -294,7 +294,7 @@ namespace System.Xml.Xsl.XPath {
                 //    </xsl:template>
                 //</xsl:stylesheet>
 
-                // ToDo: remove this code when IlGen 
+                // ToDo: remove this code when IlGen bug will be fixed.
                 if (qilAxis.NodeType == QilNodeType.Filter) {
                     QilLoop filter = (QilLoop) qilAxis;
                     filter.Body = f.And(filter.Body, 
index 81e25627a1e3c1eab52ee1f55929ec46abb5f110..570a32cf4e55a7130009099bf4ffaa64fbe3a13c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathCompileException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Runtime.Serialization;
index 7b6b554295dfa1e61d8f5fdfc358b0df87442ba1..5167754890a3ce97f7f45b6201250896a6261764 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathParser.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 1bfc274411e5a3d1c69d6d10bce4c69c1be6bbb6..6afc15b2f28d79e9226f54d70aa4bb5259fb9e2a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathQilFactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index 11f966e07f3be0ec0d334c3d3f23e5af5a0a7ee9..996dbaa4e10f18cdfc0975b40e99c802f6770f67 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathScanner.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <spec>http://www.w3.org/TR/xpath#exprlex</spec>
 //------------------------------------------------------------------------------
 
index d6ffff1e9eb3a9ed89eab69865a6649106f04908..3da6285802412e9b02a79d4e157e1c084410e0de 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathConvert.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 /**
@@ -2678,7 +2678,7 @@ namespace System.Xml.Xsl {
                     }
                     break;
                 default:
-                    // MSXML has a 
+                    // MSXML has a bug, we should not allow whitespace after a minus sign
                     if (IsWhitespace(ch) && sign > 0) {
                         pch = SkipWhitespace(pch);
                         goto LRestart;
index f0117615d416959379f072dcb0c286e3bd4b7ec4..684b75fea5b2c1d5a4d61118280888e5934b1784 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XmlILCommand.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false">[....]</owner>
 // <spec>http://webdata/xml/specs/querylowlevel.xml</spec>
 //------------------------------------------------------------------------------
 
index 5952f556beead678714b7573aca82d2729c51752..4075e22a22c73075828c422e3f5df97fc266acd2 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XmlIlGenerator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index d82d7ad716297adde4e4f3906eb02ee560c21399..394d5273ae6540b5539cf628b623310fbe94b732 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlQualifiedNameTest.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index c8131e706a10a7d4b5f115a482d84995d3d5c3cb..7c65546306186dfc1b47151440e0e5e9cb65e8eb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlQueryCardinality.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index 84692be81c7334418ec7c520c8e5c94365111eeb..4e7c0eb74479f57343eb42664f02133862676c18 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XmlQueryType.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 2548bb2d53f0867d53d514ec93290cfa77d78c60..14cd425cb0661af7fad7ffda640b9127eea17a8d 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XmlQueryTypeFactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index d76797354b655be1951221bce3278b935fb72999..e0016a461aba063b74b626c92d2d1f8f6826c199 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XslException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.CodeDom.Compiler;
index 68fb7af2a6010227fb3b9d2980fb23dac1c4cc49..624f7b9d05d493708dba83ca5179b36d759c7c58 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Compiler.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.CodeDom.Compiler;
index 4704df6db04a06ed6eb53539cc3e3a267466d371..c8bd252ef5eaebe1e03f0317bf1f7f35cf14df84 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CompilerScopeManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index a110803de28bc9abde898b61e1779b73cd2076a9..d93962dbb7e4001ea671711d132ff2d213e4dab0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Focus.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index a323e01e8d88a9e4efb936c8427b9a1dc0a98b13..0f82b468ebc0678543c82c335c52693ef9f95857 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="InvokeGenerator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 4417d0be015620519467e3083be7a120b167c0e4..404e153aec1353c4c5a66b682241095dac66a25b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="KeyMatchBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index 0ab7f5dcd0ce1a64da686436b4497faa9002ee75..66d1532a19147c132d114a3e31faede43f56bc0a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Keywords.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Xml;
index 22715a24743777b137fa4c2035eace3bc87617bf..70f110b6f57ebafdef4927ffb4b7d7d22b7524ad 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="MatcherBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 07506f5586124913d1884ca08e779d0c829a7ff6..4bdfe9285a9dadcb81c8306e1ae0f3e3771a73b4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="OutputScopeManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index f73f9ab588b130f8a6cb5f6a084608d4275d037b..d29bc0ca3bfac5ac64dab6111fbe9b18fbf1a03d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilGenerator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <spec>http://www.w3.org/TR/xslt.html</spec>
 // <spec>http://www.w3.org/TR/xslt20/</spec>
 //------------------------------------------------------------------------------
index 2f606d8cfbbdd10e762fac2dae85da0cd2b7f096..7f0d17f22ed2cf02559b6d8635f4e22ed0c71ce0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilGeneratorEnv.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index fe1f4dd31089b08e6ecf479f1c111f2c77677490..ba2c0dc228c31ed1de85b734afee3d19a5af95bc 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="QilStrConcatenator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System.Diagnostics;
 using System.Xml;
index e1f52082528966d0f3116c14f365148e1a8be9a5..45359ba4bf30ae6de01a13539c6c8a38640d8936 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Scripts.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <spec>http://devdiv/Documents/Whidbey/CLR/CurrentSpecs/BCL/CodeDom%20Activation.doc</spec>
 //------------------------------------------------------------------------------
 
@@ -305,7 +305,7 @@ namespace System.Xml.Xsl.Xslt {
 
             // If GenerateInMemory == true, then CodeDom loads the compiled assembly using Assembly.Load(byte[])
             // instead of Assembly.Load(AssemblyName).  That means the assembly will be loaded in the anonymous
-            // context (http://blogs.msdn.com/Microsoft/archive/2003/05/29/57143.aspx), and its dependencies can only
+            // context (http://blogs.msdn.com/[....]/archive/2003/05/29/57143.aspx), and its dependencies can only
             // be loaded from the Load context or using AssemblyResolve event.  However we want to use the LoadFrom
             // context to preload all dependencies specified by <ms:assembly href="uri-reference"/>, so we turn off
             // GenerateInMemory here.
index 96f094bd7691feb79e3b7c6da43139f2bb0c776f..d2b5a731c8d832a45c54f61c1358979dc2ae88ca 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Stylesheet.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index efad6709d853b291c801daced7493153c05494f2..8143836c49588886c761616d659708e059ffe2e1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathPatternBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index 4a88b7656cd5c6c8e5b0eed2add9f1259f0ce039..ad786e07fa447c83ecc6fef00e9937d92ea5482b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathPatternParser.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index b1dc09df06e4a2d5548f312d1ac38f8e5350b99a..758047ceff6844c8d3cf1b12bec050196e470f2e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XslAst.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Text;
index 87f96419f905237d98fcfbded5a4d57ee320a28c..e94a5891aae7e470fc8e4c261c600f9b93456362 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XslAstAnalyzer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Globalization;
@@ -668,7 +668,7 @@ namespace System.Xml.Xsl.Xslt {
             if (node.Select != null) {
                 if (node.Content.Count != 0) {
                     // In case of incorrect stylesheet, variable or parameter may have both a 'select' attribute and non-empty content
-                    // NOTE: This code must be in sync with recovery logic in QilGenerator
+                    // NOTE: This code must be in [....] with recovery logic in QilGenerator
                     result = xpathAnalyzer.Analyze(node.Select) | VisitChildren(node) | XslFlags.AnyType;
                     typeDonor = null;
                 } else {
index 28c95f3a31d8bd19124c279e56d6d64b5c017690..5311a8321ad7cb78881e5c5193152ac918bc32b6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XslVisitor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.Xslt {
index b50961a437882e2c3558e48ccc87df732ab1a5a5..931285174185ee7f349513ee85e464f2dcb7e1bf 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltInput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 //#define XSLT2
index c2037e36f1d423a51d14b1e959261ae592d6f8ce..1bf0ee63a8340fe80b488bc927993b25795b6d55 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltLoader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 //#define XSLT2
index 78e9e6db9e280f508bf8520d17a6ccedb01198b3..4fcca15bf414d19f8e84230c7435f18ba9f441b2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltQilFactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 31c38905c80b61bcac9810e4521374e89ab89ee1..ead808b5fb22336c2f0ff8a6b2b0a2d82226808a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Action.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index d76ef09966791c5b1dd99aa10c588b850e970713..21f5fb062edaa8dd9ff1f404e0ff64115ee02970 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ActionFrame.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index db9430ed1a0646bd3085ba964bb05c123daf5bdd..fada5fa3053dbeef7b214bc2899b00ad3662d71b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ApplyImportsAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 0cecb4220cd7a51d28a44ce3269b820d4251efb1..a81dd223fd6e68fcba661c578504d034b4b4a55e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ApplyTemplatesAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index c26a03b4428fa7ae486f01d7d31dc09220578295..f85ccb333487e4c6225cc513acf9e02794c7e1e3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="AttributeAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index ede0aef75095385c14d88275c6ee95db1e32a140..c227f0287a8193c1d9a8016af2b851026b45a462 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="AttributeSetAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 282c31f4b243e04101cc5c541960732387c2cbe5..6b2cdcac86fa046ac0a045e97182aedd49756ffa 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Avt.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 687eaad3e6eb0c74a2ecce8f73fad420ac3ff17b..f88243fafc17647ca41191df4cbcfe68fe84cfba 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="AvtEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 95ca244b9a975cc0465f5cc97ad05af40354d3db..2cf53f05f8efddbff012ee411640f10a25b0158c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="BeginEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 3f0644ff70d923f371c5d13d8dd297f5d3515696..20886ec8cbd56d5d9464593a9c6aeae3811c1dd2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="BuilderInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 70354f28d14c8e14208fa48b2393181e68411916..b21604d00c6c58273bdd18068c4c86a1110d8802 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CallTemplateAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 85cc21906ab94fa43fdece25e4f30bbbb0d4cc9f..0bc9707586964ac87dae6ed198565db7df9960a4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ChooseAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 67c7503bf0151b8098c2f8ac64560cc1e419c41e..32dabbf8bc98cb87725823353a7032f29191297a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CommentAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index c6476fe60549a3fdc0560158b1c42ebb773902cc..51ae00815e3489ba00a58db0bcf7f2361282b9ac 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CompiledAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index cb02a285e405e9365829172453eb2672c9aaf9e4..f13e16ea9a2f8ddb8a96bf5d82fbf588e55029b7 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Compiler.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 52af349a1347ca49e5c9953451c851d47a0ff286..35fb38f4b1312f6f7ffac157bc5f540ac065ed6c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ContainerAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index cb7d325be0eb7fc3152084dceb5c368c471fa25e..12f1ed03fef92abbb0d80f8d4d6e7b0510254573 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CopyAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index ed717e944f091605034c39e0f8d3ac4ef49055a9..47f8d3cd614ad64b8f3b2f1c7606b4c1da655209 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CopyAttributesAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index b46cf13ded39eb9c2222a13115654b91d9034091..073e16956f01e0a48fd914ccf696f3f02e730a62 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CopyCodeAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index cebaadebf1ca1261123e805299de2abe7b26179f..b3e3e34abfe4139233792c3d2963b0b3df94ce22 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CopyNamespacesAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 4c7457f01b28d8e9016a893cb18b068bc818867f..3d9a487a570620333ce550d79840f4e4c31aed3e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CopyNodeSetAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index e316fd82df841bbd4769111717d62d809e838084..5207f98bda8d17b33702f29c3300b9c60a0ae747 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CopyOfAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
@@ -48,8 +48,8 @@ namespace System.Xml.Xsl.XsltOld {
                 object result = query.Evaluate(frame.NodeSet);
 
                 if (result is XPathNodeIterator) {
-                    // we cash this query because otherwise current() works incorrectly. 
-
+                    // we cash this query because otherwise current() works incorrectly. Bug#382166.
+                    // To be perfect we should use frame.NewNodeSet here
                     processor.PushActionFrame(CopyNodeSetAction.GetAction(), new XPathArrayIterator(query));
                     frame.State = NodeSetCopied;
                     break;
index c39c6d2b7fd7e50216a7ada8f1e4eac407d90020..8190e5578fc51146c6134ce6bd004b0a89db1a73 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DbgCompiler.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 8a47aa8262abee4e20a0c35bc27df08b9aec55ac..61089758161b3bef77368e34a7b1cb8b75a573b1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DocumentScope.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 26ff1bc9f4852ac2211bb843046f8cb5e61c3274..0df55f379b7391b99875025b3e88d9333fe70fe5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ElementAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 70f1c8d33ad6bd6c6f95bf74414f0997964548d7..266f2177a6b428e1d8cb415f1d86834fea591d10 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="EndEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 62b638fe044e3881311c14e054bdded7fea2a1b1..d97f6440d879547742039c9e7d2351ca0c05c724 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Event.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index bc12dbe72dfbe7b609799a79507f741bdb1be472..a932cab372fa0d300183a6439365860ac69617e5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ForEachAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index e60a2f88030f46e6b47293bb28aa3fb05c046ac5..81eac3d356e72cd4f5e4d25c49e353a043db3539 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="HtmlProps.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 71001f3a27584e9353a8c647f5794c53737d7000..c224c066157ee449c649e7bbc82ee6bf89df470c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="IfAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 66b85807e711154b69eaf5f8599821f4fabab4f7..39236053db8e1913d08bd5683e10d6a154a5530b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="InputScope.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 2cbbdc32fa0dc048593bf85977ceafc8b0eede1f..b1c1afae2b84743adc0ee065244d45a4a4bf7db2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="InputScopeManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index d8da70f8c54baf3a00dd2734f556e11b6d8fd15b..e2807e7fba5da61ca18b97ed0c41446f243f211b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="MessageAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 9329cbfef2098f586127c9be67a7c3a6bdd64263..71dab6766c1ebe253431f0271c8a06a7e012c2c9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NamespaceDecl.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index eeeeb6faf265e3108a2332144b14be8185900084..1420c525b7395f87556a17e0197dcebedb844863 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NameSpaceEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index ce6688e4d1d552eee8ea11e6ac7b2c747462452e..563aaf5f2b0e0ba5ce1cceddd9bf643660572feb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NavigatorInput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index f29c63dd60d27649e08cd5bc2ef2f65fe9dfc59d..d722905f14247f85544ef3c0f53bf85e06eb23ea 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NavigatorOutput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 53769e706768d273265b653acf05545e8b31e368..5f84c647b8fce1ba0228a39e6dbd39a4f25dab04 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="newinstructionaction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 85038e93bad0c191ad3ad120a1a623a9b760b210..553b74574bd03a8022d61a1d1a179c7abb72356c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NumberAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
@@ -417,7 +417,7 @@ namespace System.Xml.Xsl.XsltOld {
             }
         }
 
-        // Microsoft: perf.
+        // [....]: perf.
         // for each call to xsl:number Format() will build new NumberingFormat object.
         // in case of no AVTs we can build this object at compile time and reuse it on execution time.
         // even partial step in this d---- will be usefull (when cFormats == 0)
index 266ce00384fee092dfa15a7c5310104f4e63e791..dadea9c702dea863192ead0bf4184773e6c5a400 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="OutKeywords.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index e27e57e040a63de8c6d944a6eb046bc13e937a87..7de7e8bfb0c063eca29146d304d43176c9f17df3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="OutputScope.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index a5e152603496e667e2db7b35e804a08f326858e2..dfefae8392df8dd04a23b3cc28dbae31a7c34d34 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="OutputScopeManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index ed1beb49ea4ecb98f8361980b434f9d69743dc6c..062f765e95522296a41b1aa02da4753453cb0f09 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="PrefixQName.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 4bcf3d01a10c3c7a4eb27e8c83c22a1381cc9077..40a5ae886baf4611376c3b9c0b5a05f92c499b4f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ProcessingInstructionAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 9a86ec723bd0e52bfcad6483928b6f7162f8274b..740dc7db76c2b49171453116d13dea16371e7792 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Processor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 4829e224ddcdb3dfc8e25170ed838494fca40b34..b8f45d089fa1fd17bc390bdb7262a2934833c6db 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ReaderOutput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index ff1e8bb684521d1abe79a0bfce3603b946f29351..1ca00932541d29dfe259651ad2cdac9a0eae28b1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="RecordBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 72cc4990b29f17774d780fb74730eb8a44f68d6b..f1fc2fcf3d755f2f144e2db7548259ec6505b4ba 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="RootAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 11ada9cad93ae3be11c9162ecca1fac008d924e1..1f376524722f634791a3107802f1e17d952573b4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SequentialOutput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index deebec1923b3e77a7a48660ae7fee4676c82c3aa..7eac8559c3d24dde16794974ff37c188eb9e3f47 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SortAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index a8c602bb2565c95cfc0b5e00f8b93a88591fa62d..bf0e413c9dc2e79a092a3f47b76e495f5cce19cf 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="StateMachine.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index b4c69f80cccb746e93ccff824f9f9c68939c0df1..4a1f20f78060669a17cf40029e42543a7995460e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="StringOutput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 0bf9d41dfc8d13fd7bf65199e3a721e3c3e9335d..9cc9876d6039690e0cd538d2f0c3df48410ae421 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Stylesheet.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index f728fec60e7d18da218cdd0b81c16559602bf69b..b4eedce6b4b034845f50d8a9b76e4d48d7f77078 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TemplateAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 3ac17a2ddcfb55b29544a13a0ea2bd6a25a5f037..bdd82f3b872df8228b293d2bcf0f62e50d6cd14d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TemplateBaseAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 063d58991c4377f3ff6e67fb614fa2461855c760..d8168cbd654da1282a06034ef8871a314f5ff9ac 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TemplateLookupAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 36811a5b4837db5f29fba8b46bb9b7decb34ff79..b54551b6c09eb3ec8cd86e6481803dd7403448d0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TemplateManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index f93e6025ef9f69f709b1668b73f388a3b10c9df1..d7b207870563f8aae7df6258f6ccd57e7c75727c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TextAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 480f72fcb42c1f58db33ae327cd26276e8643544..7f57aaa93290c67e0d13f48ef75636bf83a55bee 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TextEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index e4a18741d46d0d6b527f76587580514e4f176427..cf608ab7232656db8fa7045d695d316fc49bf651 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TextOnlyOutput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 2fa2cb546e6d41f8779177b5e8fd5bae80e128f6..ca039a1740ee4313dbff8475e75f2b7e99a6625e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TextOutput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 08238b490b9abfbd4a39835fc2c4ce98ccd7248c..206b6dbd5ccdc0926c488e1b3e3aa7f90543a92e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TheQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 6d1838f9e40497c1e0336f8a9858886d680e03c0..fbc2388129682d49664ecf5aac31baa07a2e9e96 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="UseAttributeSetsAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index ac4d48f695413e79d19c25558acbe5e387c59cde..d0fc7e3b70abeff1aeef37dbb63c9e7d3a222617 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ValueOfAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index e57a259996860cfef920b548303a94c052efd686..95f60635325bcd975dbfb151969ff0723f8a77d2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="VariableAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index c02c45ea8dc01c5a8fad8896469b19be5b941762..175d2409f547b7226dab528a787a406923c7fe2b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="WithParamAction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 57a02cfa1e5271ad374ce4c8216a059e4cf30717..3778c9dc2e881f2151a43c42dc47325c9bb16f7d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="WriterOutput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 6e7a9a33be2350e955764d69a4e5f0494f46a5ce..a6c74c175da2d91e768dc46faa18cca13fe6b1dd 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltCompileContext.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
@@ -467,7 +467,7 @@ namespace System.Xml.Xsl.XsltOld {
                 if (typeof(XPathNodeIterator).IsAssignableFrom(type)) {
                     return XPathResultType.NodeSet;
                 }
-                // Microsoft: It be better to check that type is realy object and otherwise return XPathResultType.Error
+                // [....]: It be better to check that type is realy object and otherwise return XPathResultType.Error
                 return XPathResultType.Any;
             case TypeCode.DateTime :
                 return XPathResultType.Error;
index 0df2f0ab5d186a18c277d8c59b6916f22da346bf..45197e4c25ba3ac01f3dbe4ef98224c19fe55fc2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltOutput.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl.XsltOld {
index 54c1f5b0433fe05a7ecd77464476c584d964ba7b..1a7317d87fd548278190ad897fe11e60e5e5ee5b 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="MemoryRecordBuffer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 776bc2cfcc71836f735a88875e05fdc59d243b55..2a267bd1220dea4cf2cc59d111886d2022738487 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="MetaDataUtilsSmi.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 7907a61aa49930f1534284d73703a2cd8a414763..593b27447a45f0ef3ddc5eeba68a3006a29beab7 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiConnection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 5c500135f66d9a66d26b04be5ac479c24583dbde..413e2a2cfd5c9f6c582d74ab53297904b4b01074 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiContext.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index df636c2956135c8fa29bf3573576315879064b53..7554c93938ea5293187b1f77201d8b8ab50b327d 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiContextFactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 4c2822539752eca7b1df84ac139622c3d146bd93..c7d2556b17e45fa59565ba0819b689ce27c0ef55 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiEventSink.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 8a0dfdae53f67481a2cbaec7c9e34dd8ebe17ebe..089ced09eb50507220347c4732dee2b86dc75073 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiEventSink_Default.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 80f1b99bbff40c96e15e47082d0d1b6d1109a7a7..624a6dfa11668fd77ce6205d14f75ebb02ec5cf6 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiEventSink_DeferedProcessing.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 9daeb29c4f9d5a46cb1cf183409412d365b66349..baaeda5c04428d4db8842f6ab1ca554e75ec8919 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiEventStream.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index f81df24681cb4b0407bc5e2b3494e08b50f3a837..c904b107b97064f4c593280d18e11d24787ff8e1 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiGettersStream.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 49b2e68c10a2bc955a94a2adf98561835c3de805..ed861e021c3c8c84ff4460e52a330de13d10fbc9 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiMetaData.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 1ea6845ef9c742fcdc64f2ff3e227af4cde6e6ec..b4fc70fd1144946339046fe6ab3e5d9117e81ec9 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiMetaData.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 3be8d9974294ffe44dcb53acc3da93993012c465..8221833271a3eca267f10f674b81e8de86c2dbd3 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiRecordBuffer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 947907293cf84e5af403f5d40af66444e1b0d9cf..4bf089f22723403a0713ce7bdde401283cc53511 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiRequestExecutor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 95428f6d851d407da0d42fde830b5dacea7fe1ba..c32aa7f2793abae4a8a8fe354a48174eb440df0c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiSettersStream.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 14a25627a83c3aa67385d0d2c46d91da8fb92bbc..ca6a630fde2c9c096ea86f86e5bb94efe5b301cb 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiTypedGetterSetter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index d782ff587f8d6783bc567210ed21187779ffbac0..075099219c9670cea87727728fa6b21024b96b7c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SmiXetterAccessMap.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index eba515f8e55c86b99418c33c9d4b37662df35da4..9bb16a1e57f1feb0fe583a21ab8725d3d70b2c08 100644 (file)
@@ -2,10 +2,10 @@
 // <copyright file="SmiMetaData.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 2882b8fe9e546336accf6f62c338b6fe6d284c5d..b719507e84b191d4345d571afcf558a58ce9612b 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlRecordBuffer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index f89c1a83b21d1bab294d9ebe6279ae8981accf91..4ab4a259ee906b2b1baf947ceaef245951d6cd34 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlTriggerContext.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">daltodov</owner>
 //------------------------------------------------------------------------------
 
index 0e143e18663811f55910c556c8de63581e928422..6d9b8cbe2f913e23267e9bb2e29e3f483136d321 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="ValueUtilsSmi.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
@@ -1830,8 +1830,8 @@ namespace Microsoft.SqlServer.Server {
                             // In order for us to get here we would have to have an 
                             // invalid instance of SqlDbType, or one would have to add 
                             // new member to SqlDbType without adding a case in this 
-                            // switch, hence the assert - it must be 
-
+                            // switch, hence the assert - it must be bug in our code 
+                            // not invalid user parameters.
                             Debug.Assert( false, "unsupported DbType:" + metaData[i].SqlDbType.ToString() );
                             throw ADP.NotSupported();
                             
@@ -2022,8 +2022,8 @@ namespace Microsoft.SqlServer.Server {
                             // In order for us to get here we would have to have an 
                             // invalid instance of SqlDbType, or one would have to add 
                             // new member to SqlDbType without adding a case in this 
-                            // switch, hence the assert - it must be 
-
+                            // switch, hence the assert - it must be bug in our code 
+                            // not invalid user parameters.
                             Debug.Assert(false, "unsupported DbType:" + metaData[i].SqlDbType.ToString());
                             throw ADP.NotSupported();
 
index 5634702a714d30c5415ea8304720919bd1a4b380..0696bedbbebf47c43d3dcea67001be4d72cef660 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlContext.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">daltodov</owner>
 //------------------------------------------------------------------------------
 
index a8abcbd16f65902ca0f2ecb95bd2dcdcd8932a25..d1b39923ff63d93a8c49a9a6a76d9ebf85550e10 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlPipe.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">daltodov</owner>
 //------------------------------------------------------------------------------
 
index 90a3c41bfda146600cb799532184e2af37e6654b..af0bc90efa7eb11686b901ec5196dd80bf0a2a5e 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="BaseCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                         
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 1141adebe128cc6c93e2e484cff61467253d0f58..62eb1dcc3f870757e03d70d408281fbd5f2dad9e 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="StrongTypingException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index dc0705b2609ce8f4e4b46b70f923de153de99682..26f3d320a38f9046091bf83d86e21c625e4b698c 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="datacache.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -351,7 +351,7 @@ namespace System.Data {
             }
             dataTableClass.Members.Add(constructor);
 
-            //\\ internal <TableName>DataTableClass(DataTable table) : base(table.TableName) { // Microsoft : Assuming incoming table always associated with DataSet
+            //\\ internal <TableName>DataTableClass(DataTable table) : base(table.TableName) { // [....] : Assuming incoming table always associated with DataSet
             //\\ if (table.CaseSensitive != table.DataSet.CaseSensitive)
             //\\    this.CaseSensitive = table.CaseSensitive;
             //\\ if (table.Locale.ToString() != table.DataSet.Locale.ToString())
index c3fb2cbdf26ada1b98cc98897f411cb049262a1e..69df720e1840ad0c96a2aee8c19dcde5ba7a6afb 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="ColumnTypeConverter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 /*
index e40cbc2c505d3cad2313d021499ceee931dc2574..4fc17b4ebdd50149d77be24bd6157d7063214116 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ActivityCorrelator.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common
index 8fdd50b67a811c195cf7fb4b6535e2a64bd8af8f..8103f0fce6e26a6c2e6ce8987157ed229da0a861 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="AdapterUtil.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -78,7 +78,7 @@ namespace System.Data.Common {
         }
 
         // NOTE: Initializing a Task in SQL CLR requires the "UNSAFE" permission set (http://msdn.microsoft.com/en-us/library/ms172338.aspx)
-        // Therefore we are lazily initializing these Tasks to avoid forcing customers to use the "UNSAFE" set when they are actually using no Async features (See Dev11 
+        // Therefore we are lazily initializing these Tasks to avoid forcing customers to use the "UNSAFE" set when they are actually using no Async features (See Dev11 Bug #193253)
         static private Task<bool> _trueTask = null;
         static internal Task<bool> TrueTask {
             get {
@@ -1852,6 +1852,7 @@ namespace System.Data.Common {
         internal const int DefaultCommandTimeout = 30;
         internal const int DefaultConnectionTimeout = DbConnectionStringDefaults.ConnectTimeout;
         internal const float FailoverTimeoutStep = 0.08F;    // fraction of timeout to use for fast failover connections
+        internal const int FirstTransparentAttemptTimeout = 500; // The first login attempt in  Transparent network IP Resolution 
 
         // security issue, don't rely upon static public readonly values - AS/URT 109635
         static internal readonly String StrEmpty = ""; // String.Empty
index e26e965964b11156c0a76ccf6c0d3b27824ccf0c..d3544903d863e5ef147b567b199f06b2e13275fa 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="BigIntStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index cc64c9506dae20ee875218bd34e4b5a492809b02..de174a86bbc265806b0d47cfc904ac2c78564604 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="BooleanStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index d41d1576bc77cf37d32437b3ee06166239785745..12a9df123c7e13e9f634a74f39ac7aa0ecf9efd0 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="ByteStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index f1baf809a6c821e77b4c3d54635873823cc29e1b..b03c0df2c2ba8007b49a8c7bd8d77b243ddb1c63 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="CharStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index cc4399fe3859a153b7fdd56f8587dd045f355caa..3a2e01b2620f2c45621cce4df23a198d3412e546 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbCommand.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 4205f95998adf283b6d8d31c130bd82edac317d0..9744b25b2cfa4a6c3cc8807a8b78cf8001747353 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="CommandBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 52f04500598f61454de2ffbbc41c5680e77d6861..e9967e0c0b1ffcf56338bfb77744ec70bc7ddad2 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DbConnection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 42e1b6bb1f16cf6cea7716f18ad1ff1c9a798b72..ed7b7b4c5d1c02ff0fba43ea712a1a476c508c9a 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DBConnectionString.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -251,7 +251,7 @@ namespace System.Data.Common {
                 //Debug.WriteLine("14/15/16 this AllowOnly and entry AllowOnly but no restrictions");
             }
 
-            // verify _hasPassword & _parsetable are in sync between Everett/Whidbey
+            // verify _hasPassword & _parsetable are in [....] between Everett/Whidbey
             Debug.Assert(!_hasPassword || ContainsKey(KEY.Password) || ContainsKey(KEY.Pwd), "OnDeserialized password mismatch this");
             Debug.Assert(null == entry || !entry._hasPassword || entry.ContainsKey(KEY.Password) || entry.ContainsKey(KEY.Pwd), "OnDeserialized password mismatch entry");
 
index ed6140309e9665e30e20dfadecf75aec1b338a9a..46c2906efacf7ea254040c4d0e379dc35420804c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DBDataPermission.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 518e2c5215b47096476cae8d3092a029ce6188d3..0d22095d6b5bca6f1e5cecb44d721632097649e3 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DBDataPermissionAttribute.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 4a0ba35742cc4cb3686aae3057a08773a6d9c6cc..be9208922d468b84ccf649c796ac93c2fbabd504 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbParameter.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 25850cffe0ceac3ac044ca05cc7fc7af3bbc402b..06cf3ac1477061fe3c410a102f8e7a1fe473a01d 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DBSchemaRow.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index c6c8917273ad68d9bb8fe45fe9f4690efd1602e1..8a548a5fa94598759cc12eb1ef61acb4d93469db 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DBSchemaTable.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index e36220920bd71a6455575a776b5e28c3e45e01f1..1dbda974752d18ddad52e669a21d3c6480ec55c1 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataAdapter.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index f6a843e2cb2187a48d717c8498f18a33fd06b964..acaf957c51a6374523aea4d65701dc9ae108b83b 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataColumnMapping.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index b37e756032918b70dd537794fc8b93e7720fc15b..6156160922bcf07b769eff4bea35f7808a2fbab6 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataColumnMappingCollection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 659db8d52fdd1d8df784dde0f072692c47562f66..9c8a7d31ece56925dc5b24faf7ab13ff135cba32 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataRecordInternal.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index cf66ff06e917b4128a5b42e02aa5ff1c554335b3..69087c233be908af4850bb96d442ea2f68406aea 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index bbb0276ca4ae780cab6e4ef2e00f28de2a649995..96567755f36bdc62814b0bb31bdf5c221866c4b4 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataTableMapping.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index a235804a3aeb84e3b713cf2afd634dd3851a6e40..9ef08940450650043d30a57d692d5ec3ebf2d9b0 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataTableMappingCollection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 457dc17f2a14ccbd1247b25ad3de704674dbca71..b92e6fc6fa5c43e1215f286f55d62a3aa3285365 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DateTimeOffsetStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 4ff7014c5b1070446248a3b902423b8f2bf0dd27..cce489890e5f98728fed92ed125d9cd3243f3bfd 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DateTimeStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 43b8e22a34090ff963ff6ea6c3d4d1fb270f2c25..11257cc6dea9b8de67dbe9f4e2c387041bb40660 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DBConnectionOptions.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 6ab3ddbb13b5007265f0d91468084cee83bffd77..9142ef6dd15d53c2d9a388ff0730f8a073b50e4c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="ConnectionPoolKey.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common
index 5192551a19a59f394a3c001be24a466cc0fbfb0b..780bd97c98ab243bcc9e25749ef6c37afd86d127 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbConnectionStringBuilder.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -382,7 +382,7 @@ namespace System.Data.Common {
                 }
 
                 // all keywords in Keys list that do not have strongly typed property, ODBC case
-                // ignore 'Workaround Oracle 
+                // ignore 'Workaround Oracle Bug 914652' via IsFixedSize
                 if (!IsFixedSize) {
                     attributes = null;
                     foreach(string keyword in Keys) {
index f943f272b3aafe995a9f8ca42bb4ef9f7f1d7a80..e1981b6b9dea8edd2177c16996131f8e9714e3a6 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbConnectionStringBuilder.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
     using System;
@@ -716,39 +716,40 @@ namespace System.Data.Common {
         internal const bool   OmitOracleConnectionName  = false;
 
         // SqlClient
-        internal const ApplicationIntent ApplicationIntent = System.Data.SqlClient.ApplicationIntent.ReadWrite;
-        internal const string ApplicationName            = ".Net SqlClient Data Provider";
-        internal const bool   AsynchronousProcessing     = false;
-        internal const string AttachDBFilename           = "";
-        internal const int    ConnectTimeout             = 15;
-        internal const bool   ConnectionReset            = true;
-        internal const bool   ContextConnection          = false;
-        internal const string CurrentLanguage            = "";
-        internal const string DataSource                 = "";
-        internal const bool   Encrypt                    = false;
-        internal const bool   Enlist                     = true;
-        internal const string FailoverPartner            = "";
-        internal const string InitialCatalog             = "";
-        internal const bool   IntegratedSecurity         = false;
-        internal const int    LoadBalanceTimeout         = 0; // default of 0 means don't use
-        internal const bool   MultipleActiveResultSets   = false;
-        internal const bool   MultiSubnetFailover        = false;
-        internal const int    MaxPoolSize                = 100;
-        internal const int    MinPoolSize                = 0;
-        internal const string NetworkLibrary             = "";
-        internal const int    PacketSize                 = 8000;
-        internal const string Password                   =  "";
-        internal const bool   PersistSecurityInfo        = false;
-        internal const bool   Pooling                    = true;
-        internal const bool   TrustServerCertificate     = false;
-        internal const string TypeSystemVersion          = "Latest";
-        internal const string UserID                     = "";
-        internal const bool   UserInstance               = false;
-        internal const bool   Replication                = false;
-        internal const string WorkstationID              = "";
-        internal const string TransactionBinding         = "Implicit Unbind";
-        internal const int    ConnectRetryCount          = 1;
-        internal const int    ConnectRetryInterval       = 10;
+        internal const ApplicationIntent ApplicationIntent   = System.Data.SqlClient.ApplicationIntent.ReadWrite;
+               internal const string ApplicationName                = ".Net SqlClient Data Provider";
+               internal const bool   AsynchronousProcessing         = false;
+               internal const string AttachDBFilename               = "";
+               internal const int    ConnectTimeout                 = 15;
+               internal const bool   ConnectionReset                = true;
+               internal const bool   ContextConnection              = false;
+               internal const string CurrentLanguage                = "";
+               internal const string DataSource                     = "";
+               internal const bool   Encrypt                        = false;
+               internal const bool   Enlist                         = true;
+               internal const string FailoverPartner                = "";
+               internal const string InitialCatalog                 = "";
+               internal const bool   IntegratedSecurity             = false;
+               internal const int    LoadBalanceTimeout             = 0; // default of 0 means don't use
+               internal const bool   MultipleActiveResultSets       = false;
+               internal const bool   MultiSubnetFailover            = false;
+               internal const bool   TransparentNetworkIPResolution = true;
+               internal const int    MaxPoolSize                    = 100;
+               internal const int    MinPoolSize                    = 0;
+               internal const string NetworkLibrary                 = "";
+               internal const int    PacketSize                     = 8000;
+               internal const string Password                       =  "";
+               internal const bool   PersistSecurityInfo            = false;
+               internal const bool   Pooling                        = true;
+               internal const bool   TrustServerCertificate         = false;
+               internal const string TypeSystemVersion              = "Latest";
+               internal const string UserID                         = "";
+               internal const bool   UserInstance                   = false;
+               internal const bool   Replication                    = false;
+               internal const string WorkstationID                  = "";
+               internal const string TransactionBinding             = "Implicit Unbind";
+               internal const int    ConnectRetryCount              = 1;
+               internal const int    ConnectRetryInterval           = 10;
         internal static readonly SqlAuthenticationMethod Authentication = SqlAuthenticationMethod.NotSpecified;
         internal static readonly SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting = SqlConnectionColumnEncryptionSetting.Disabled;
     }
@@ -791,31 +792,33 @@ namespace System.Data.Common {
         internal const string OmitOracleConnectionName  = "Omit Oracle Connection Name";
 
         // SqlClient
-        internal const string ApplicationIntent         = "ApplicationIntent";
-        internal const string ApplicationName           = "Application Name";
-        internal const string AsynchronousProcessing    = "Asynchronous Processing";
-        internal const string AttachDBFilename          = "AttachDbFilename";
-        internal const string ConnectTimeout            = "Connect Timeout";
-        internal const string ConnectionReset           = "Connection Reset";
-        internal const string ContextConnection         = "Context Connection";
-        internal const string CurrentLanguage           = "Current Language";
-        internal const string Encrypt                   = "Encrypt";
-        internal const string FailoverPartner           = "Failover Partner";
-        internal const string InitialCatalog            = "Initial Catalog";
-        internal const string MultipleActiveResultSets  = "MultipleActiveResultSets";
-        internal const string MultiSubnetFailover       = "MultiSubnetFailover";
-        internal const string NetworkLibrary            = "Network Library";
-        internal const string PacketSize                = "Packet Size";
-        internal const string Replication               = "Replication";
-        internal const string TransactionBinding        = "Transaction Binding";
-        internal const string TrustServerCertificate    = "TrustServerCertificate";
-        internal const string TypeSystemVersion         = "Type System Version";
-        internal const string UserInstance              = "User Instance";
-        internal const string WorkstationID             = "Workstation ID";
-        internal const string ConnectRetryCount         = "ConnectRetryCount";
-        internal const string ConnectRetryInterval      = "ConnectRetryInterval";
-        internal const string Authentication            = "Authentication";
-        internal const string ColumnEncryptionSetting   = "Column Encryption Setting";
+               internal const string ApplicationIntent              = "ApplicationIntent";
+               internal const string ApplicationName                = "Application Name";
+               internal const string AsynchronousProcessing         = "Asynchronous Processing";
+               internal const string AttachDBFilename               = "AttachDbFilename";
+               internal const string ConnectTimeout                 = "Connect Timeout";
+               internal const string ConnectionReset                = "Connection Reset";
+               internal const string ContextConnection              = "Context Connection";
+               internal const string CurrentLanguage                = "Current Language";
+               internal const string Encrypt                        = "Encrypt";
+               internal const string FailoverPartner                = "Failover Partner";
+               internal const string InitialCatalog                 = "Initial Catalog";
+               internal const string MultipleActiveResultSets       = "MultipleActiveResultSets";
+               internal const string MultiSubnetFailover            = "MultiSubnetFailover";
+               internal const string TransparentNetworkIPResolution = "TransparentNetworkIPResolution";
+               internal const string NetworkLibrary                 = "Network Library";
+               internal const string PacketSize                     = "Packet Size";
+               internal const string Replication                    = "Replication";
+               internal const string TransactionBinding             = "Transaction Binding";
+               internal const string TrustServerCertificate         = "TrustServerCertificate";
+               internal const string TypeSystemVersion              = "Type System Version";
+               internal const string UserInstance                   = "User Instance";
+               internal const string WorkstationID                  = "Workstation ID";
+               internal const string ConnectRetryCount              = "ConnectRetryCount";
+               internal const string ConnectRetryInterval           = "ConnectRetryInterval";
+               internal const string Authentication                 = "Authentication";
+               internal const string Certificate                    = "Certificate";
+               internal const string ColumnEncryptionSetting        = "Column Encryption Setting";
         
         // common keywords (OleDb, OracleClient, SqlClient)
         internal const string DataSource                = "Data Source";
index 0950ab8f2c365b83f352f27b7436a8f5a0423b9a..2db8231111062f10c0949209eb487fd33629bee3 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbDataAdapter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index c4c8318d0c4712e2af3f31fc2764d4cf3a61d295..abee96850cb822d162cddb5a8aac46bf2a28c1d7 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbDataReader.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 4071a35a8d966d9cf8884661efa05f6ef1b3b759..8b2f5d6e1a711529aaffb09f838f017b6a202b82 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbDataSourceEnumerator.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 0a912d5528376f94e95541cb90b4624bfe02626c..f113037622f648a28282c2f5e6d07bba8b87ea01 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 2f400cca1a46ce4839b1b48da3f9b2769d20c61a..b4e5bb234fb55f820b90ba8874c1cb5af8d8c803 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbParameterCollection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 92ec37fcd53dcb1a7cd84fee1eb000b28dde9e8d..6411c47e8b130872d73a2e4ea1209972cd7330da 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbProviderConfigurationHandler.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 9d3253620efbebb65016990c0de27545e967f0e4..7490e8ac3b8a5cdeb108a4a7e46f0941fb47da26 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbProviderFactories.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 4ad569cd8d5eb1dde05168897e40e2c69b3bd2cd..505e734cef0069e176ec1fcc6f3c531a91ded025 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbProviderFactoriesConfigurationHandler.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -17,9 +17,9 @@ namespace System.Data.Common {
     using System.Xml;
 
     // VSTFDevDiv # 624213: System.Data.Common.DbProviderFactories.GetFactoryClasses() still gets OracleClient provider in ClientSku environment.
-    // NOTES: As part of this 
-
-
+    // NOTES: As part of this bug fix, the decision was taken to make it consistent and to remove all the framework 
+    //      providers from the list in the machine.config file. The DbProviderFactories section of the machine.config will contain only
+    //      custom providers names and details.
     internal enum DbProvidersIndex : int
     {
         Odbc = 0,
index f0c8fd478807e8989159eeddb4477b0147daf652..4235679cc6badaf97e4155cec174c90c221015b4 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbProviderFactory.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 1f13d32d66a5e9ca4a3ab8345304c6158607bfbb..a213939a24da23e86ab948b780c5287c0ed54e73 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DBProviderSupportedClasses.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 8a3ae90461152aa60f7722b9f085f907b805fc96..467e740f820d0dbdd869f2d5cdf77bbf8d280478 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbTransaction.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index b8aeda1b8529d63d496f463d6f09d97691726cc0..b9f8f6784932196f23da3d8acda4edc5cf61a59a 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DecimalStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index b11514c7dc8d2201c2bed744751a148c83899a49..15af90c023e1f84cde05ef0db99fca59f30b6373 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DoubleStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 5ae728795998d04846385c417110a7d373d0a5be..41df2b1aa242671b9ccab0a0bf4864400641fee5 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="FieldNameLookup.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index ced5a58d80a412b40893d818691c115a78534bab..8aff41ed34eac7acd9acb547e9941acc4df91840 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="GreenMethods.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 3762aa488366b0605a2ebaf95dab5200b63e3309..99945fe78ce8d1107e163d9c94caceb9e1a65cae 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="HandlerBase.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 0c62a2043fb6998747d659a2ddb2ea11b59188a8..8d1d0b2a075ce1d66ed490b2ba7991d9709508f4 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="Int16Storage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 1a59d7e12ae0d3714fe8f1767b0e8af081ac352f..870bd1093f9ad2fbb0d8b3f2e367b3b3b2da5635 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="Int32Storage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 26a81b6fa17216eb8f5bf34a6ed6efc9f08733ae..f500629921775b4e4da6f5afecb150b8619ee9b2 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="Int64Storage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index a2a0770434f4a6bc0c531c315a484b89e928d3b8..531dfa1dfa68868674e2a743129efa9c92f5e0ee 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="CommandBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index f0b7cdc17f41c2970ff7ab621e206da702ee8eea..bcf18890893f1ace89ced2a7b5ddc15eb1ed000a 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="NameValuePair.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index f2088dba955eae658a1327e5b8b66c084f34ca62..9f705d2568838f2cc0c2d20262e9fe4461bdf4e1 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="NameValuePermission.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index eb3a09d9cc07465cb2c5edd4225fd87654b63eeb..f4c90546b0a023f49bc660904d18d5a56e8845cf 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="ObjectStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 132952ed7691886d43d28ca4eb1e735ec116cca4..04af7fa7e776948bd6d4aabb865ca0eb55c1dbae 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="RowUpdatedEventArgs.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 50c8c04927749f3bfa9eac14d1a7ca4cc1d7582c..1f6c6918c18139e1b25ec7e68c906623dfac6f3f 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="RowUpdatingEventArgs.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 66b54659780f533c11536c3710c972ff7608d8bb..0ef3d5edb0702fca32ec04a80f0f5f889969f7c7 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SByteStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 19b823a39f842a3eeb30c82a335ca87e5d53d043..4c1b691fc06dd89f01aeb3ce6c722b4d2a85097c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SQLConvert.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 namespace System.Data.Common {
 
index 578f222bd1e0465154ac35074a02351e9352b597..752435570897813c288a0744eb3bdade183c0cc2 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLBinaryStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -90,7 +90,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlBinary newValue = new SqlBinary();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index 23c9b8c0109009e04da6ba513de377b0d23ddbcf..d8f70c87ad3c4dfc7149d8c897920df9ee2fb32e 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLByteStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -188,7 +188,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlByte newValue = new SqlByte();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index 4cbce35faba34f994c7d754ec014092dd816e7f7..da7d794b73caee79d01856dac57a7885971d2871 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLBytesStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -89,7 +89,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlBinary newValue = new SqlBinary();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index 3bdfb3698dd5e1bf91e09b0b4d6dd2e6ef8feec6..c8af7abb43381f17b1472f32879ddd08d81290f7 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLCharsStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -91,7 +91,7 @@ namespace System.Data.Common {
         override public object ConvertXmlToObject(string s) {
             SqlString newValue = new SqlString();
 
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index 39a1fd72ee3d8c79e8579561a01b96e1d74f48d7..60753ae432acda1a81e8a17c76582e531f0c6817 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLDateTimeStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -121,7 +121,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlDateTime newValue = new SqlDateTime();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index 18ff107280d3fe58dde2831fa055c188f0c339c5..e6a92bf1bff46f7196488f789919c5d5ca9bf855 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLDecimalStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -186,7 +186,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlDecimal newValue = new SqlDecimal();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index bf09c21e22978485014628738675b21e448ef619..8833b829fddbd0d5a081ecc62b72065fb4362ae0 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLDoubleStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -187,7 +187,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlDouble newValue = new SqlDouble();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index 497364a79ced46324a924be2a140581b5e7dffac..79c8180603840e66420990bc1e122d7aea380420 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLGuidStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -90,7 +90,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlGuid newValue = new SqlGuid();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index 37fd532da60d594370c338210dfc7d1dd5ff6248..aff67bae5293084c153f9a73b567a1d1cabcecf3 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLInt16Storage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -187,7 +187,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlInt16 newValue = new SqlInt16();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index b8a2c0eb351f62b8c119b1194ee0367d8c9173f0..4a31af610c8485b60ff6f6ddfe9583486a8cfb9c 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLInt32Storage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -187,7 +187,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlInt32 newValue = new SqlInt32();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index 5c1b344e0acb8a095410847f9f3f4ca6b9214902..eb608d338423f0e6f1616e4bc6db5226d2469b45 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLInt64Storage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -188,7 +188,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlInt64 newValue = new SqlInt64();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index e50b9d5a6e2764eec51d22f8e169f7e1512da4a7..fc4a344a326227d103eea1370ba3b509fb8eca7e 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLMoneyStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -187,7 +187,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlMoney newValue = new SqlMoney();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index f946bd63217eeef8a9bc4741daa1502dcb84fdc0..d6c69725ea200ed72ffd547e21cb2481bb7110a3 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLSingleStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -188,7 +188,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlSingle newValue = new SqlSingle();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index c822097f38774d8e2cae2918053141592b06889c..7201b55c57ff3dd01158d4c351efd4504d1d47d0 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLStringStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -144,7 +144,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlString newValue = new SqlString();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index 8c07aa8648cb3791b8562d96e5320171fc3df0ae..53fd2a92aacebf6829781301de91a994722e9442 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SQLBooleanStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -119,7 +119,7 @@ namespace System.Data.Common {
 
         override public object ConvertXmlToObject(string s) {
             SqlBoolean newValue = new SqlBoolean();
-            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+            string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
             StringReader strReader = new  StringReader(tempStr);
 
             IXmlSerializable tmp = newValue;
index 1817b74d4b6892229eec3742cde1b6baf60f7c3a..1637442fe717947a180dd6d26308badb0aedc1bf 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlUDTStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
@@ -140,7 +140,7 @@ namespace System.Data.Common {
             if (implementsIXmlSerializable) {
                 object Obj = System.Activator.CreateInstance (DataType, true);
 
-                string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, 
+                string tempStr =string.Concat("<col>", s, "</col>"); // this is done since you can give fragmet to reader, bug 98767
                 StringReader strReader = new  StringReader(tempStr);
 
                 using (XmlTextReader xmlTextReader = new XmlTextReader(strReader)) {
index 8f3a03926eea6f90f46973fc12f67c82987aa5f7..be6cc6e520866727962734fab7572180a6631b43 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlXmlStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 5e1c0ffc3211455eb16abcefdfec9c759562b95d..5f8bf6d36ce40a002943b58d38309765de7ceb1d 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SafeNativeMethods.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 3995656fb8fc7efd2b5902b549a22c92980332e6..69df0612c08d434cb83284aa8f1cbdcce2b2fb5f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaTableColumn.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index c4ab9bc5a16ed566ccffaeb34d628642b52ac657..80a96191906b99bcc58573f1a939f820d8d41d0b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaTableOptionalColumn.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 2379ea7583a217097f2168984f73258d0809b27e..1f1c8b4511b5790aaca48e07824c88054eda5d53 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SingleStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 2885f9b9ac79de553368a5095ba934d4b589c3df..7125e5d8561dca3675a904903f1606479cf97aeb 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="StringStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 887445584315fedaba0b6e6143cb6111dcba1d7b..c95844c82a82efbecd9aba0a91827f07157dfdc3 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="System.Data_BID.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //-----------------------------------------------------------------------------------------------
 
 using System;
index b46bf5fb2eb581963aae9d19f97ce0db054a80b6..bf931fc47440813cafaeb26b84d31a30eeeeadc7 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="TimeSpanStorage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 3b44d9adac8e31501f103b60bbea590a1a5b8de6..5bafd626be968d44d804e660be22c93cca241335 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="UInt16Storage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 19d2d3f72f4507cb8a35e30f0254561d9cefa598..d2701c49d7e29c0f1fa963a19ece8476b32af5d2 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="UInt32Storage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 8b727fdde42833203bb0b8256a1435df1ce8a24b..1242f279c0e1c61e13375bf6736bc828036c66f5 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="UInt64Storage.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 7fc1d8bc0a00dca2e78203e44fa967f83bd11867..0c368cfcabed92023220f1af767d164ef6ee3192 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="UnsafeNativeMethods.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 2f56981aa41a7b77037167008323068dc85113d5..7c140b1afd597eb760c9c632f428cdcc98697962 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbDataRecord.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 5377586b7de9564d6faa9cdb2e243228decebb6f..758d6062953db13f43eb97abb9c98828a5df87c7 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="dbenumerator.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 0d9bd2e24e4ef380da60349c1769901b0b3b8f66..ff25eb8f650fe9881765cf6b8f81312ee03f12da 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="Constraint.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index a387337887a2fc5361350f9f86f9d011d8646e71..357723bae1bec4cde696161c3f5ade77a5172ef9 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="ConstraintCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 1564f89dd0b803c56c34edd8c9727c6ca9fefac1..176866fa5f74cf68f45f3acc259e61188ce40e5f 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="ConstraintConverter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 8e4c2b9913f4337eeead12fa95a3aa2f0740c545..72c20a474333cb74994c681b85660f4f08319fc7 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="ConstraintEnumerator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 5197faec73001e38b0a7cbeb2c6468d99d9d2a6b..a7724df44d8892bba20bc03472a42866359840da 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DBConcurrencyException.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index e6894dff02fd748aa8cdf31cdde545c4d4f8aa45..cacc19d4e390ba307fdc4c72c0eca677310d172b 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataColumn.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -1822,7 +1822,7 @@ namespace System.Data {
     }
 
     /// <summary>the auto stepped value with Int64 representation</summary>
-    /// <remarks>use unchecked behavior for Dev10 
+    /// <remarks>use unchecked behavior for Dev10 Bug 568510</remarks>
     internal sealed class AutoIncrementInt64 : AutoIncrementValue {
         /// <summary>the last returned auto incremented value</summary>
         private System.Int64 current;
index 2c05d2f253bd70cc4e04633cd6b2d067ab138ad6..080d166c7cacece9555a9efa4a391a4ae6700589 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataColumnChangeEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index d486143a9ab245bb583947d4480c2c59fcd2c5a2..4a8f8119c9d7e9148957df8123b8aa5bab31e7b2 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataColumnCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index e99ccf43b8d87d2e17947fa7dc8efa5f870473ea..48d581f5730a35c37e48041a5c1e501931118046 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataColumnPropertyDescriptor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 5cd3c802253a9ba3b6e56aff69e6220c29492852..ca3cae694e2d86f046a15dcd560dfe4d19631b45 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataError.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>               
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 50f42cbe7328bdfe2d66a6f9f8dbda7530a9aeb5..f8de1c1bfffc62f73f7d22d996c6d982f40c02e0 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -13,7 +13,7 @@ namespace System.Data {
     using System.Globalization;
     using System.Runtime.Serialization;
 
-    // Microsoft: This functions are major point of localization.
+    // [....]: This functions are major point of localization.
     // We need to have a rules to enforce consistency there.
     // The dangerous point there are the string arguments of the exported (internal) methods.
     // This string can be argument, table or constraint name but never text of exception itself.
index 6581279d49033bacdf181eab9dfb3b2492ed619f..a5f4cb57a5f1e8ab1affc7028da03e8086e08623 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataKey.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index e63034c1113069b364a1334c417303f2cf646e40..3838ca9adfbacb3236936082810e22f765171ada 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataRelation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 /*****************************************************************************************************
index 44a1d6d2b2ceb3daa47964cb529baff87bb86c3b..baec5ee449381423cb07bb0aebf821a9e1b501f9 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataRelationCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -250,7 +250,7 @@ namespace System.Data {
                 OnCollectionChanging(RefreshEventArgs);
                 for (int i = count - 1; i >= 0; i--) {
                     inTransition = this[i];
-                    RemoveCore(inTransition); // Microsoft : No need to go for try catch here and this will surely not throw any exception
+                    RemoveCore(inTransition); // [....] : No need to go for try catch here and this will surely not throw any exception
                 }
                 OnCollectionChanged(RefreshEventArgs);
                 inTransition = null;
index b3885050e4952ded3518c44b757dcb02b3dfaa75..c80abf5a9f7b092b08f3138c244aaecb55bd814a 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataRelationPropertyDescriptor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 06f510b31f9e6caec2924e436d80da3984ab2996..557f5e448879d1fc8b80d83dc3e8ed2a076eb6b1 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataRow.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -1307,9 +1307,9 @@ namespace System.Data {
                     version = DataRowVersion.Current;
                 }
                 // There are various known issues detected by this assert for non-default versions, 
-                // for example DevDiv2 
-
-
+                // for example DevDiv2 bug 73753
+                // Since changes consitutute breaking change (either way customer will get another result), 
+                // we decided not to fix them in Dev 11
                 Debug.Assert(valueFromStorage.Equals(column.DataExpression.Evaluate(this, version)),
                     "Value from storage does lazily computed expression value"); 
             }
index 01a56d236e1a6657b6cca99b2e8bd914b5d08a06..444f9360264f23ca534ee46f39dd0b1710437ba8 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataRowChangeEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index dbed8bf40080b74c8f17e416ce51a133dd1df35f..81d040e4287a17bce43e6b9bb7e10d0050782586 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataRowCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 0597645639ac3af74b1ae9d93c0912e71d6ce1b3..64eb89f9ac317df61a9d4341ee3f8ee4facb8510 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataRowView.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 4234c0604ba7189d6ab50de7f1ca1e88c22c1b4a..cb0c072a6596823dda1c71424cf7f7567719a28b 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataSet.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -684,7 +684,7 @@ namespace System.Data {
                             continue;
                         if ((dt.NestedParentRelations.Length == 0) ||
                             (dt.NestedParentRelations.Length == 1 && dt.NestedParentRelations[0].ChildTable == dt)) {
-                            //                            dt.SelfNestedWithOneRelation) { // this is wrong 
+                            //                            dt.SelfNestedWithOneRelation) { // this is wrong bug it was previous behavior
                             if (Tables.Contains(dt.TableName, value, false, true))
                                 throw ExceptionBuilder.DuplicateTableName2(dt.TableName, value);
                             dt.CheckCascadingNamespaceConflict(value);
@@ -1106,7 +1106,7 @@ namespace System.Data {
             try {
                 DataSet ds = (DataSet)Activator.CreateInstance(this.GetType(), true);
 
-                if (ds.Tables.Count > 0)  // Microsoft : To clean up all the schema in strong typed dataset.
+                if (ds.Tables.Count > 0)  // [....] : To clean up all the schema in strong typed dataset.
                     ds.Reset();
 
                 //copy some original dataset properties
@@ -3064,7 +3064,7 @@ namespace System.Data {
             }
         }
 
-        // Microsoft: may be better to rewrite this as nonrecursive?
+        // [....]: may be better to rewrite this as nonrecursive?
         internal DataTable FindTable(DataTable baseTable, PropertyDescriptor[] props, int propStart) {
             if (props.Length < propStart + 1)
                 return baseTable;
index 6022e8f8bfb1fa52f59b4d88181183bf1f7c30c4..c0763fca757c0aa547e817d31288786c37a96890 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataSysAttribute.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 /*
index 19c99cad97ec21879842120f67c1de8193f74174..637816ef0c379f684e5e1133aca1e168b9896e41 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataTable.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -1893,7 +1893,7 @@ namespace System.Data {
                     }
                 }
             }
-            fInitInProgress = false; // Microsoft : 77890. It is must that we set off this flag after calling FinishInitxxx();
+            fInitInProgress = false; // [....] : 77890. It is must that we set off this flag after calling FinishInitxxx();
             if (delayedSetPrimaryKey != null) {
                 PrimaryKey = delayedSetPrimaryKey;
                 delayedSetPrimaryKey = null;
@@ -2150,7 +2150,7 @@ namespace System.Data {
             Bid.ScopeEnter(out hscp, "<ds.DataTable.Clone|INFO> %d#, cloneDS=%d\n", ObjectID, (cloneDS != null) ? cloneDS.ObjectID : 0);
             try {
                 DataTable clone = CreateInstance();
-                if (clone.Columns.Count > 0) // Microsoft : To clean up all the schema in strong typed dataset.
+                if (clone.Columns.Count > 0) // [....] : To clean up all the schema in strong typed dataset.
                     clone.Reset();
                 return CloneTo(clone, cloneDS, false);
             }
@@ -2225,8 +2225,8 @@ namespace System.Data {
             clone._caseSensitiveUserSet = _caseSensitiveUserSet;
 
             clone.displayExpression = displayExpression;
-            clone.typeName = typeName; //Microsoft
-            clone.repeatableElement = repeatableElement; //Microsoft
+            clone.typeName = typeName; //[....]
+            clone.repeatableElement = repeatableElement; //[....]
             clone.MinimumCapacity = MinimumCapacity;
             clone.RemotingFormat = RemotingFormat;
 //            clone.SerializeHierarchy = SerializeHierarchy;
@@ -3548,7 +3548,7 @@ namespace System.Data {
 
             bool equalValues = false;
             if (DataStorage.IsTypeCustomType(dc.DataType) && newValue != dc[record]) {
-                // if UDT storage, need to check if reference changed. See 
+                // if UDT storage, need to check if reference changed. See bug 385182
                 equalValues = false;
             }
             else {
@@ -3924,12 +3924,12 @@ namespace System.Data {
                 }
             }
 
-            // Dev10 
-
-
+            // Dev10 Bug 688779: DataRowView.PropertyChanged are not raised on RejectChanges
+            // if the newRecord is changing, the propertychanged event should be allowed to triggered for ListChangedType.Changed or .Moved
+            // unless the specific condition is known that no data has changed, like DataRow.SetModified()
             if (!suppressEnsurePropertyChanged && !row.HasPropertyChanged && (row.newRecord != proposedRecord)
-                && (-1 != proposedRecord) // explictly not fixing Dev10 
-                && (-1 != row.newRecord)) // explictly not fixing parts of Dev10 
+                && (-1 != proposedRecord) // explictly not fixing Dev10 Bug 692044: DataRowView.PropertyChanged are not raised on DataTable.Delete when mixing current and original records in RowStateFilter
+                && (-1 != row.newRecord)) // explictly not fixing parts of Dev10 Bug 697909: when mixing current and original records in RowStateFilter
             {
                 // DataRow will believe multiple edits occured and
                 // DataView.ListChanged event w/ ListChangedType.ItemChanged will raise DataRowView.PropertyChanged event and
@@ -3942,7 +3942,7 @@ namespace System.Data {
                 // Check whether we need to update indexes
                 if (LiveIndexes.Count != 0) {
 
-                    // Dev10 
+                    // Dev10 bug #463087: DataTable internal index is currupted: '5'
                     if ((-1 == currentRecord) && (-1 != proposedRecord) && (-1 != row.oldRecord) && (proposedRecord != row.oldRecord)) {
                         // the transition from DataRowState.Deleted -> DataRowState.Modified
                         // with same orginal record but new current record
@@ -3971,8 +3971,8 @@ namespace System.Data {
                         this.recordManager[proposedRecord] = row;
                 }
 
-                // Dev10 
-
+                // Dev10 Bug 461199 - reset the last changed column here, after all
+                // DataViews have raised their DataRowView.PropertyChanged event
                 row.ResetLastChangedColumn();
 
                 // SQLBU 278737: Record manager corruption when reentrant write operations
@@ -4043,7 +4043,7 @@ namespace System.Data {
                 // Check whether we need to update indexes
                 if (LiveIndexes.Count != 0) {
 
-                    // Dev10 
+                    // Dev10 bug #463087: DataTable internal index is currupted: '5'
                     if ((-1 == originalRecord) && (-1 != proposedRecord) && (-1 != row.newRecord) && (proposedRecord != row.newRecord)) {
                         // the transition from DataRowState.Added -> DataRowState.Modified
                         // with same current record but new original record
@@ -4349,7 +4349,7 @@ namespace System.Data {
 
             if (position == -1)
                 Columns.Add(key);
-            else { // we do have a problem and Imy idea is it is 
+            else { // we do have a problem and Imy idea is it is bug. Ask Enzo while Code review. Why we do not set ordinal when we call AddAt?
                 for(int i = Columns.Count -1; i >= position; i--) {
                     this.Columns[i].SetOrdinalInternal(i+1);
                 }
@@ -5526,8 +5526,8 @@ namespace System.Data {
                             throw ExceptionBuilder.DataTableInferenceNotSupported();
                         }
 
-    // Microsoft                    xmlload.InferSchema(xdoc, null);
-    // Microsoft                    xmlload.LoadData(xdoc);
+    // [....]                    xmlload.InferSchema(xdoc, null);
+    // [....]                    xmlload.LoadData(xdoc);
                     }
                 }
                 RestoreConstraint(originalEnforceConstraint);
@@ -5741,7 +5741,7 @@ namespace System.Data {
                     currentTable = ds.Tables[CurrentTableName, CurrentTableNamespace];
                 }
 
-                if (currentTable == null) { // 
+                if (currentTable == null) { // bug fix :99186
                     string qTableName = string.Empty;
                     if (!Common.ADP.IsEmpty(this.tableName)) {
                         qTableName = (this.Namespace.Length > 0)? (this.Namespace + ":" + this.tableName):this.tableName;
index 30233029196cc731f9a124aef95b00deea4e18fe..a942a9336c3f77ef5cf39c4df3b60816046b9197 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataTableClearEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index a05d7d4570a473743566b841f0b49e2d538316f2..abe20b7f93074be4561040f493ce8cfba344ff77 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataTableCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -398,7 +398,7 @@ namespace System.Data {
 
                 for (ChildForeignKeyConstraintEnumerator constraints = new ChildForeignKeyConstraintEnumerator(dataSet, table); constraints.GetNext();) {
                     ForeignKeyConstraint constraint = constraints.GetForeignKeyConstraint();
-                    if (constraint.Table == table && constraint.RelatedTable == table) // 
+                    if (constraint.Table == table && constraint.RelatedTable == table) // bug 97670
                         continue;
 
                     if (!fThrowException)
index db994c7c2b6d2ac8183cd16c8dac9f96da0a6fb9..bfd0fcd7ae3d68ab1962277ad1a60a0d1052b01d 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataTableNewRowEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 3d9f30c6397662ecfed15a00cf38a52f37c8ed76..a5ffd176ba481fe0b5a20b47503a32efe960c8bc 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataTablePropertyDescriptor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 475e6f7215577996baee4e5be11c689bd84fcca4..90d9af9f04fab9a9f96f60b1adc4f37764831e9e 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataTableReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 545909a4fe0a3246fd314a1d212d524364302da7..66b1c720d51ce788fe996a9ffccf65ca52746c7c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataTableReaderListener.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index dc1425682eb0d95a36fbecea5c054e68395a3dfd..b5a9ed888ee31aa51158f8ebe75cbf8051fa0f68 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataTableTypeConverter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 69c0ce2b66265be31433bcd479f7a9fedd3105b7..fb93c55a2906f8ebba4b7d0fbdd3be34f6551008 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataView.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -166,7 +166,7 @@ namespace System.Data {
         /// <summary>
         /// Allow construction of DataView with <see cref="System.Predicate&lt;DataRow&gt;"/> and <see cref="System.Comparison&lt;DataRow&gt;"/>
         /// </summary>
-        /// <remarks>This is a copy of the other DataView ctor and needs to be kept in sync</remarks>
+        /// <remarks>This is a copy of the other DataView ctor and needs to be kept in [....]</remarks>
         internal DataView(DataTable table, System.Predicate<DataRow> predicate, System.Comparison<DataRow> comparison, DataViewRowState RowState) {
             GC.SuppressFinalize(this);
             Bid.Trace("<ds.DataView.DataView|API> %d#, table=%d, RowState=%d{ds.DataViewRowState}\n",
@@ -1294,7 +1294,7 @@ namespace System.Data {
             if (ListChangedType.Reset != e.ListChangedType) {
                 OnListChanged(e);
             }
-            if (addNewRow != null && index.RecordCount == 0) { // Microsoft : 83032 Clear the newly added row as the underlying index is reset.
+            if (addNewRow != null && index.RecordCount == 0) { // [....] : 83032 Clear the newly added row as the underlying index is reset.
                 FinishAddNew(false);
             }
             if (ListChangedType.Reset == e.ListChangedType) {
@@ -1511,7 +1511,7 @@ namespace System.Data {
                     dataViewManager.nViews++;
                     DataViewSetting dataViewSetting = dataViewManager.DataViewSettings[table];
                     try {
-                        // Microsoft: check that we will not do unnesasary operation here if dataViewSetting.Sort == this.Sort ...
+                        // [....]: check that we will not do unnesasary operation here if dataViewSetting.Sort == this.Sort ...
                         applyDefaultSort = dataViewSetting.ApplyDefaultSort;
                         DataExpression newFilter = new DataExpression(table, dataViewSetting.RowFilter);
                         SetIndex(dataViewSetting.Sort, dataViewSetting.RowStateFilter, newFilter);
index 0821be330dc440c579ea006245f88bc68ceb9981..32fb4fbf6a02f01bf5c67cfdb36a82f8c0cc8d91 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="Select.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 29d032803920c6b8a276aba2de7288e825b5ece2..f597b87e80ed96b92b9e802535eab098de5c83d7 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataViewManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -300,7 +300,7 @@ namespace System.Data {
         }
         */
 
-        // Microsoft: GetListName and GetItemProperties almost the same in DataView and DataViewManager
+        // [....]: GetListName and GetItemProperties almost the same in DataView and DataViewManager
         string System.ComponentModel.ITypedList.GetListName(PropertyDescriptor[] listAccessors) {
             DataSet dataSet = DataSet;
             if (dataSet == null)
index b9ed419b403c0bd77f74885fde9fd6e19eb3c7c7..60d96cc86b378f61edaa29a9a4b03524f7529723 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataViewManagerListItemTypeDescriptor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 1072ce26384692dc1a6182e88bdba5e9d7c10567..d2d4b86f44c14eed201bba4cb0c5128ea6d0907f 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataViewSetting.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index cbdfa92f2a78843f34f6a5c3aea90a7722b768cc..fc91e196becdd7d7778b4d9e044ba6d157db4acd 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataViewSettingCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 977867402d537360cf8cc4828fad335d41ad0cff..092a27b246dd007b52e05a0f768e81d9ade6bfb4 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DefaultValueTypeConverter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 /*
index 83c581a835e058084e4c8f7e97c4980e74b6e70a..ea0f9b7d9451054b25cd22bfc9bd2d94058047f8 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="FillErrorEventArgs.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data { // MDAC 59437
index 2fe5c8136689a475d4936a92e85ba1e2c07fda9e..0515908cc22ce937dab2786fbe46c840c9a969a2 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="AggregateNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 808ad90076dc5833d017e1f6374e0c0cf96760f3..1e2691c822f8c65ef1c1f3f833c5fd462aa906dc 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="BinaryNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index ae40e2269cfb2665a94d5527ac286e561bb48942..3d3215329f488b51439a65684d6da1d05fdd11d9 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="ConstNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index a61417462df9820b36c9db18faeff7d88fe6eccb..2a13366e59e4a4cd34096a6246d0432cd6c9aa91 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="DataExpression.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 049e98aa8f2dcb88dd1c464690cbc387cf482b3a..bbd59d3c850f38aab85f351ec7bb28282b0de184 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="ExpressionNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index c040e8e4f0cd8f173fe5ae73c387d7474c930379..0cbd98ec98ac8082d2946d6fa0e5d726608e1c18 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="ExpressionParser.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 11165c62e2ff684388d352406a05b65312cadcf7..643744062b5d4b7fb2bc0673811a0f8f35f46bd7 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="FilterException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 7d53c49343bd4ceeaeb12e9feb334a323f2610a3..97580e2d9452fd81fe92d4d46234297c58588566 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="FunctionNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index e709a44a3ae13ec8a6807883c6a29f0396bec088..3b75a801cef46f53a8ec004d905a5ad910a3feb8 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="LookupNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -92,7 +92,7 @@ namespace System.Data {
             if (parent == null)
                 return DBNull.Value;
 
-            return parent[column, parent.HasVersion(version) ? version : DataRowVersion.Current]; // Microsoft : 
+            return parent[column, parent.HasVersion(version) ? version : DataRowVersion.Current]; // [....] : Bug 76154
         }
 
         internal override object Eval(int[] recordNos) {
index efc3b139eb8a1a32a10567b66b1db5b6c1b759c4..4ec71c0e7d9a4b7643d0600a2b2765cd9c70dac5 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="NameNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 863a0c0f00d76e0330e1ce0f5f96b773e0bd78d9..ef806e204ef091329de9a0586b5bac4e9c608429 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="Operators.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 2bc95711750b11f699ecaa1b206bed23655a0618..21f4fec0c798ee60c58b1f29095558f97b11d6ce 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="UnaryNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 21e318aa4943fbde201c9168a1df52d7ca580f40..e9c0ad4fad5248334075c9cffba133d72c1bfe83 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="ZeroOpNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index a343d699d5a57576451eb3c34cf7d8c7588eadd7..5afa2ecbd13d4371bd2528761ad3d5db388d6271 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="ForeignKeyConstraint.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -343,7 +343,7 @@ namespace System.Data {
             Index childIndex = childKey.GetSortIndex(      row.RowState == DataRowState.Deleted  ? DataViewRowState.OriginalRows : DataViewRowState.CurrentRows);
             object[] key     = row.GetKeyValues(parentKey, row.RowState == DataRowState.Modified ? DataRowVersion.Current        : DataRowVersion.Default      );
 
-            // 
+            // Bug : This is definitely not a proper fix. (Ref. MDAC Bug 73592)
             if (IsKeyNull(key)) {
                 return;
             }
index 3de377905f856cc313993ff23318cb7fb69bf718..880119a6716332370480d86edfc288aaf83494a7 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="MergeFailedEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 0d01c4987f58a5f97a6282e5990962ef04f13e77..091a03a2a0b4a0dff33182d3516ef509224a7441 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="Merger.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index ea81451b667acc2dad6acbe4493254cde3fedcae..ac00f0d0e55594100dc9e67e7a55fe7967fd20b5 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbDataRecord.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 4fddaba8713337ec997bd02f18467212e09cc60c..63a7a6e29657346bb49bab94c7b1e68399996dd9 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="Odbc32.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index 2c1f531f26b228efc2c2ce6baa822fccb4f96a21..a5b4cbdf0efe0efac3276640f65f5c0589ad12ab 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcCommand.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index e94f58756bb158c9b5ad80d8f27cf36d9e0d5585..955c786fddf1a1a1381ed0ab705476bea0212405 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcCommandBuilder.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 7a35ef87c8399f4d378e2453b3fc9e936454655b..bf56cc81f02dca22c55d7be954fbedc0ac7fb9e2 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcConnection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index e72fc109f19fc79d068e65f36f29cdebf2ba3729..956635682f05f605c0413e87031d8e125fce7469 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcConnectionFactory.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Odbc
index fd0b3598c41dca122fff48b166a7dff191e15fd8..fc645f7e74ea34a96bb4b2183a6c09b4fdad85a8 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcConnectionHandle.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 42c134450bc62b86859e36c9dff7875e0ff317ac..cbfb7691d3bdeec0bae3e1acfab4d530325f8796 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcConnectionOpen.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index a48d5d7415f93e1d4a416c395ac7d0976b387a72..b631eabdb24f0b6c8e35a9b81ecd890e5a8caa8b 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcConnectionPoolProviderInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Odbc
index f9d7a4654f2f0884a42f478460ca3dc431c790ac..8214495463e481863238d6fc33c9a1869509f7f5 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcConnectionString.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Odbc {
index 13193c544a909e0ddcbab57c1ef9a5c853f6cde5..224cf99840fcd4d4d3bf7adb28b4635c3ae63f4a 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcConnectionStringBuilder.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
     using System;
index b3bbbe12901f2dcd306283070d488d1d17cfc9ac..c05c0b67f0eb121a7dd3c61754f87dc796e798de 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcDataAdapter.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index c22353954090067872972c5ee7699310821504a3..2428b5e4901324f1ae0fa38fc81536ebb2c3cdb2 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcDataReader.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
@@ -545,12 +545,12 @@ namespace System.Data.Odbc
             //  item for GetInt32.  This actually improves perf anyway, (even if the driver could
             //  support it), since we are not making a seperate interop call...
             
-            // 
-
-
-
-
-
+            // Bug SQLBUVSTS01:110664 - available cases:
+            // 1. random access - always cache the value (as before the fix), to minimize regression risk 
+            // 2. sequential access, fixed-size value: continue caching the value as before, again to minimize regression risk 
+            // 3. sequential access, variable-length value: this scenario did not work properly before the fix. Fix
+            //                                              it now by calling GetData(length = 0).
+            // 4. sequential access, cache value exists: just check the cache for DbNull (no validations done, again to minimize regressions)
 
             if (!IsCommandBehavior(CommandBehavior.SequentialAccess))
                 return Convert.IsDBNull(GetValue(i)); // case 1, cache the value
@@ -1012,7 +1012,7 @@ namespace System.Data.Odbc
                 if (dataIndex >= cachedObjectLength)
                 {
                     // no more bytes to read
-                    // see also MDAC 
+                    // see also MDAC bug 73298
                     return 0;
                 }
 
@@ -1021,7 +1021,7 @@ namespace System.Data.Odbc
 
                 // silently reduce the length to avoid regression from EVERETT
                 lengthOfCopy = Math.Min(lengthOfCopy, buffer.Length - bufferIndex);
-                if (lengthOfCopy <= 0) return 0;                    // MDAC 
+                if (lengthOfCopy <= 0) return 0;                    // MDAC Bug 73298
 
                 if (isCharsBuffer)
                     ((string)cachedObj).CopyTo((int)dataIndex, (char[])buffer, bufferIndex, lengthOfCopy);
@@ -1944,7 +1944,7 @@ namespace System.Data.Odbc
             columns.Add(new DataColumn("BaseTableName",     typeof(System.String)));
             columns.Add(new DataColumn("BaseColumnName",    typeof(System.String)));
 
-            // MDAC 
+            // MDAC Bug 79231
             foreach (DataColumn column in columns) {
                 column.ReadOnly = true;
             }
@@ -2197,8 +2197,8 @@ namespace System.Data.Odbc
             // devnote: this test is already done by calling method ...
             // if (IsClosed) return;   // protect against dead connection
 
-            // MDAC 
-
+            // MDAC Bug 75928 - SQLStatisticsW damages the string passed in
+            // To protect the tablename we need to pass in a copy of that string
             String tablename1 = String.Copy(qualifiedTableName.GetTable(quoted));
 
             // Select only unique indexes
index e2f228c2140a8f0a93faaa6b443e4c290ee4cbe8..86685f8d238ee9e72507d84bdeea4018832a7ae7 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcEnvironment.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 78d9cb709f4df4da44596cf9a61b70e0a21811c9..a01fa82c98ae1a3b26586ff554abdb73662e46e5 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcEnvironmentHandle.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 2a1c944113d35a3415bef35c0e2d882d751be121..08fbed4a12eb2415e1dec3361f72b0c6a22e3aa6 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcError.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 00f464349ef4ce003a4c018f6a067cec755e323b..1358b94a3c883fc6097e64d1cefbd25e0331ae25 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcErrorCollection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Odbc {
index 3ec043ec5089a11024a4c3dd5e80f0c7b0380d39..ef8ebabb000c635a493a1687cde043cf855dc413 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcException.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
@@ -66,7 +66,7 @@ namespace System.Data.Odbc {
             base.GetObjectData(si, context);
             }
 
-        // mdac 
+        // mdac bug 62559 - if we don't have it return nothing (empty string)
         override public string Source {
             get {
                 if (0 < Errors.Count) {
index da89d9bac762916d07a47aa547c99c2dfa0205d2..4637f0924e167c15a814d9b3a7f123c66687f9ac 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcFactory.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index f4deea79fac8b8091d75dfed11ec2d22d01c88eb..cf4362005334e4d518f61414973bec9dec0a389a 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcHandle.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index fed1a56fcbdbce81a905c1fa030217e92aa72cee..18ea6b2f89503062f127d943e9166948ab780ece 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcInfoMessageEvent.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 081d5a80f6ef5a1c75beeadd65a69215c8fd29fe..013a65cb2e883a8611b01d3acd804e4c3221e7bc 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcParameter.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 
@@ -326,12 +326,12 @@ namespace System.Data.Odbc {
                             // the following code causes failure against SQL 6.5
                             // ERROR [HY104] [Microsoft][ODBC SQL Server Driver]Invalid precision value
                             //
-                            // the code causes failure if it is NOT there (remark added by Microsoft)
+                            // the code causes failure if it is NOT there (remark added by [....])
                             // it causes failure with jet if it is there
                             //
                             // MDAC 76227: Code is required for japanese client/server tests.
-                            // If this causes regressions with Jet please doc here including 
-
+                            // If this causes regressions with Jet please doc here including bug#. ([....])
+                            //
                             if ((ODBC32.SQL_TYPE.CHAR == _bindtype._sql_type)
                                 || (ODBC32.SQL_TYPE.VARCHAR == _bindtype._sql_type)
                                 || (ODBC32.SQL_TYPE.LONGVARCHAR == _bindtype._sql_type)) {
@@ -707,8 +707,8 @@ namespace System.Data.Odbc {
             if (ODBC32.SQL_C.NUMERIC == sql_c_type) {
 
                 // for input/output parameters we need to adjust the scale of the input value since the convert function in
-                // sqlsrv32 takes this scale for the output parameter (possible 
-
+                // sqlsrv32 takes this scale for the output parameter (possible bug in sqlsrv32?)
+                //
                 if ((ODBC32.SQL_PARAM.INPUT_OUTPUT == sqldirection) && (value is Decimal)) {
                     if (scale < _internalScale) {
                         while (scale < _internalScale) {
@@ -720,8 +720,8 @@ namespace System.Data.Odbc {
                 SetInputValue(value, sql_c_type, cbValueSize, precision, 0, parameterBuffer);
 
                 // for output parameters we need to write precision and scale to the buffer since the convert function in
-                // sqlsrv32 expects these values there (possible 
-
+                // sqlsrv32 expects these values there (possible bug in sqlsrv32?)
+                //
                 if (ODBC32.SQL_PARAM.INPUT != sqldirection) {
                     parameterBuffer.WriteInt16(_preparedValueOffset, (short)(((ushort)scale << 8) | (ushort)precision));
                 }
index feb30a5f5dc7b68ae648b65f73ce5ea66ecc661e..8231d988df4ba2ff8480bd3ee4afa23aa342fcf8 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcParameterCollection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Odbc {
index d1560e285a7cee917a13411891820440db4a5c34..b173351f678b56e8c5eeb22b9c7ad6da8343e751 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcPermission.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 namespace System.Data.Odbc {
 
index 16636e5d2728087b140073a83ed128e21ee5ff79..a6e6c14220d27713f103ca69d325e7699249810a 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcReferenceCollection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 7e36ad5e1b6d8aec6478f65111ef353fce9aade5..1f33d71aed7e44e9792ab06217446506d2515660 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcRowUpdatingEvent.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 9000d8ea8aa2c78669534bbdcbfadabd199979dd..04d1157b724566adc65036477e1b80b684058db4 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcStatementHandle.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 25dbd7179841ce314e68672ea1ae0e1bc3d58a68..610dfdb7c967a007d5a54e7569f366ea794088ae 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcTransaction.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index b5d23b8aae40fcaaf1e29bda470fc7b53696748d..5c6f11ad1542a2225e0c73fbb1f4999fbf0f9460 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcUtils.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index a7cafce8aba2c6d84b7018df960db983a221fe63..ab10d4aa0cf36cd113d4ceec63a6dbde19460926 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcMetaDataCollectionNames.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Odbc {
index bbd591fb16268548d5c8c7edb507fde7b133c350..513cf0f35b36098a3add9c0c2897eaadccb1bd8c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OdbcMetaDataColumnNames.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Odbc {
index 7b48811f66aaa130ef349aab3eef693d681b297a..87281ad3bf74ab14660de59771d8a8e75eb597a5 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //
 //------------------------------------------------------------------------------
 
@@ -579,7 +579,7 @@ namespace System.Data.Odbc{
             dataSourceInformation[DbMetaDataColumnNames.DataSourceProductVersionNormalized] = ServerVersionNormalized;
 
             
-            // values that are the same for all ODBC drivers. See 
+            // values that are the same for all ODBC drivers. See bug 105333
             dataSourceInformation[DbMetaDataColumnNames.ParameterMarkerFormat] =  "?";
             dataSourceInformation[DbMetaDataColumnNames.ParameterMarkerPattern] =  "\\?";
             dataSourceInformation[DbMetaDataColumnNames.ParameterNameMaxLength] = 0;
index 89b83e35c7638167a28e5e269d8825e3d504d7b4..05a211e2cb392dadeef0ee1864ed3862a819a001 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="ColumnBinding.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 4b802a209a0b869d3fe47a7c90a2040ce15bf9fb..60350f4689f1f0b31b61cb716d981a3f4de9285c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DBBindings.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index f6128fcf3c61d1b13d69f557f95b4cc5509ee103..7157e6c7e357d85d7c6e4428f22a9a9b54885522 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DBPropSet.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 9eaa3c0e0bbc46dc63753538808cf5be0f8c404d..40d7250e08438934f8c52267cda9d44b7be56a87 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OLEDB_Enum.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 9a5c4818b9405c4a8e338558554ed79416291e21..66c7ead9d2710faefc1c1bb6e616e2a21c0be91d 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OLEDB_Util.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 34c26ef0f0fdf91d3f3228f8f7ac98c88868b678..a835d94e7cc52a80db8fd0baa59bfe2ac0a8caf9 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbCommand.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 7e6b55777df9197f4189780bf0fa28d1e869cd9a..f7e15dd4f22bb33331a1434b96426ed0952183a2 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbCommandBuilder.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 251146a92fe9eb40d051d4cbbdd3392880d86d42..b721af209c8bb4fcdfb69eaa342639386130a34b 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbConnection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 28815c8557ca6d50bbe8a1f905175c59dd126e0a..81a53960832313b9012ac8dce91df9c00fd46f1f 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbConnectionFactory.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb
index 67e120b14008a7d44b6a2d7ddb7dc5fb3d261f96..83b463ed43a7e0d2d2de42967ab15a16e0300d55 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbConnectionInternal.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 6c48b25650df60e9b62d8d36296ca81df7886f83..88200afbaac7accb998c1f094656e95de22fe9f8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="OleDbConnection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb
index f9e2e640cb40e5cc75969e036e6dc61fd5e3cc73..c1301ded63cf6f04d0dfcce609327cd6ed35a370 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbDataAdapter.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 55fdaa58bd95c726b701ce4572123c4b09ab23b2..16a4393ed5762012302059ec041292a53945c623 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbDataReader.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
@@ -1168,7 +1168,7 @@ namespace System.Data.OleDb {
         static private void NextResultsInfinite() { // MDAC 72738
             Bid.Trace("<oledb.OleDbDataReader.NextResultsInfinite|INFO> System.Data.OleDb.OleDbDataReader: 2000 IMultipleResult.GetResult(NULL, DBRESULTFLAG_DEFAULT, IID_NULL, NULL, NULL) iterations with 0 records affected. Stopping suspect infinite loop. To work-around try using ExecuteReader() and iterating through results with NextResult().\n");
 
-            // Microsoft's suggestion is that we debug assert so that users will learn of MSOLAP's misbehavior and not call ExecuteNonQuery
+            // [....]'s suggestion is that we debug assert so that users will learn of MSOLAP's misbehavior and not call ExecuteNonQuery
             Debug.Assert(false, "<oledb.OleDbDataReader.NextResultsInfinite|INFO> System.Data.OleDb.OleDbDataReader: 2000 IMultipleResult.GetResult(NULL, DBRESULTFLAG_DEFAULT, IID_NULL, NULL, NULL) iterations with 0 records affected. Stopping suspect infinite loop. To work-around try using ExecuteReader() and iterating through results with NextResult().\n");
         }
 
index fdd83b9c030d60e3841b2a16c33c4e8295e3803d..25b0e27658a32526412330a7fbf1742279bd178b 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbEnumerator.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index c46ab4271d919113e5d49dff9340ac115356e12f..7bd40b391014e9e2282e44ff96c4a27616fbad9b 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbError.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index a7410a8e317cfdf18af425ad161f5afef5593ab8..c2e0e14f924d79af123d74d369b506fa5a112134 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbErrorCollection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 1b310bb8b7bdc80a64f55bdb6a8ee6b3bf43e429..b34faca19aa2985984762af0f3b883f4e8838a50 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbException.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 190c0019d3d25f67dc77485259f455104634b932..a8977023409da0e87ec73c2f15e0bb2a316d3c85 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbFactory.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 87936250c710fe02b6d5168b2b409aa641152260..1af769a72fe9cc49018ceeb547f106de52854673 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbInfoMessageEvent.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 7189c9f86b4f942373afdd86348d2e7e23b8a738..99651fe5e91e28a526ef7eb1ead235bec22fe4f4 100644 (file)
@@ -3,7 +3,7 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">Mugunm</owner>
 //
 //------------------------------------------------------------------------------
index ad824e1a7ddffdf5af8fae5e4888ccdd42e352ad..7454366930b4c9c6a900ef81f9b5cadd6e66a23d 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbParameter.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 40a2107151b92f545ca42ed61c6164abac3b98c4..2ab175f7cc2ce29e650c90fc6d47ab445e741e61 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbParameterCollection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index a1a313100c75f5d141a6d8213fecfd114a6f8754..d7ca1aa88c043177ee0ad3625710c1274d5d0ee9 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbPermission.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 4be4655a888428cecbd689f3846cb39afe05118f..75e6fae1311751d1a4372e65fb717c2701620165 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbPropertySetGuid.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index ad3750c95292cb7765acd65b4d2b6730e9b932f4..45f347b78fb3c974ba4be1a19b21c7109efd84c5 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbReferenceCollection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 043e585d0924c9c9a71d51f93f9fe5411ac927ad..d4c3ccf53cb39825677a5f4e2f9fad50caffbf5c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbRowUpdatedEvent.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 4b20a71e36c5cd4377c311ec28a9862433a105ec..ea1d58df0f78ebfeba2999b8b65533ade0404461 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbRowUpdatingEvent.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 69bac32ad93a62569f13791173181ad3519eb408..eb0b45c119a68ae4b5f539158b61342b2838e1cb 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbSchemaGuid.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 8683055b54d29a669042e274c7086977ac73f0f6..49f83271bbb792b79380f0ae1c87d85228f9d9c4 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbStruct.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 14881edbcff5e09a942a547d173934c59be2b387..a5653b5a7d2944fe8a0421cc63cb43cc324dcc2b 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbTransaction.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 433d6d4996de17332d776285f85e190699e56c30..c4a71c07154dcf8f5772b8eab4b07b40d0e99701 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbWrapper.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 9b9eb17174bec26c9a8ac6123c63e770f1cba11d..bb021752ed4b27c2e27eff8d371e6c3b5cdcc516 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbConnectionStringBuilder.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
     using System;
index 048b30508b25e42267729fcdd3d4e3f3dd113658..92d8e4bfbfdd61c00cf92c3848bbda637752c936 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="PropertyIDSet.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 8f0bbf8871b78efa1899f2789bd8b4de8c5368ce..fb15d85b3d502329b1b174a67c6006d9a3bfa022 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="PropertyInfoSet.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 71b80127acee4fc391dd87ac9011723aee18fd00..eb93e1ae3892a799b534bbbfaf537c44bf05dcee 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="RowBinding.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 1351f3b11f6498111f8be9e3e35afb7902bdc1ab..39e1958f5a498f978f0911566121839275adb319 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SafeHandles.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index e1406cfc2a1f10cd1f7824c44dfb11aed1c0379f..bb12e5de732e6583ae1ac49bc901e7e125f92d7e 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="oledbconnectionstring.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 9c0600b28e9fb86cb58da8e816691eefe190575e..629e25ab995c721137c41dbabee62d790d37fc05 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbMetaDataCollectionNames.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 741e79769a4942f64ceb4825f40e543b2f72ec7e..3e260632562e777bc2fdb93576e773f6af34f306 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OleDbMetaDataColumnNames.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.OleDb {
index 3eda086c7033ba47cd4b4c2adcc0942daee9d56e..539b0e3c114e6599e423a5143d0561fcac6f18c8 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="OperationAbortedException.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index b57494291b1ed7b56e68a86ce971833e704b1662..431f2ba83d8de39db23dfae519976a306f2054bf 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="PrimaryKeyTypeConverter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index e0532236dfad073f8cbb4f1906a7db8506e8002f..0b014fd3adbe3cb99d92c5806034322c83f3d838 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="PropertyCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 181017f55e9da355695dea95f89d4065844c3439..b6864fb8d66075abee5c20340f34c25d6ce54901 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DataReaderContainer.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index 390d8cd51d4da0789fd75f997f83e960d642017f..82c4df382728f192b7cca9a8dd2607a5a26009be 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DbBuffer.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase
index a47c0532b341c3a9bbbcea45d7b1688b913c1f7f..fee86a2e3fa39d28e0363a1ce27a2925016d45b6 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbConnectionClosed.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index 835b18d97a6e88b9b947df7f61f9c7be4df5f1ff..6832381eb7c7078914760959de4a48b86b89a961 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbConnectionFactory.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index 8f3f01b838685c529978ecf39b1afa1069606698..8c09bbc4c0824f09a5544e4db94abecf78cb5e5a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DbConnectionHelper.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace NAMESPACE {
index 41fb92bccc82b0675eed062d2bee7bb92eef8ac3..b55df0aecd23df5a5c669804a2780c01fd51fe63 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbConnectionInternal.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
@@ -58,7 +58,7 @@ namespace System.Data.ProviderBase {
         private SysTx.Transaction _enlistedTransactionOriginal;     
 
 #if DEBUG
-        private int                      _activateCount;            // debug only counter to verify activate/deactivates are in sync.
+        private int                      _activateCount;            // debug only counter to verify activate/deactivates are in [....].
 #endif //DEBUG
 
         protected DbConnectionInternal() : this(ConnectionState.Open, true, false) { // V1.1.3300
@@ -259,15 +259,15 @@ namespace System.Data.ProviderBase {
                 //
                 // That means that:
                 //
-                //    _pooledCount > 1    connection is in the pool multiple times (this is a serious 
-
-
-
-
-
-
-
-
+                //    _pooledCount > 1    connection is in the pool multiple times (this is a serious bug...)
+                //    _pooledCount == 1   connection is in the pool
+                //    _pooledCount == 0   connection is out of the pool
+                //    _pooledCount == -1  connection is not a pooled connection; we shouldn't be here for non-pooled connections.
+                //    _pooledCount < -1   connection out of the pool multiple times (not sure how this could happen...)
+                //
+                // Now, our job is to return TRUE when the connection is out
+                // of the pool and it's owning object is no longer around to
+                // return it.
 
                 bool value = !IsTxRootWaitingForTxEnd && (_pooledCount < 1) && !_owningObject.IsAlive;
                 return value;
@@ -323,7 +323,7 @@ namespace System.Data.ProviderBase {
             get;
         }
 
-        // this should be abstract but untill it is added to all the providers virtual will have to do Microsoft
+        // this should be abstract but untill it is added to all the providers virtual will have to do [....]
         virtual public string ServerVersionNormalized {
             get{
                 throw ADP.NotSupported();
index cf435133ac26bc357e5f4e75b1e45ffd8abf970c..5b5743725f9af7606751f7ce84d20a29cabc57f5 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbConnectionPool.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
@@ -1163,7 +1163,7 @@ namespace System.Data.ProviderBase {
                 return true;
             }
             else if (retry == null) {
-                // timed out on a sync call
+                // timed out on a [....] call
                 return true;
             }
 
index e0484c2f89be75de62e69eec362697bce7da40d3..03ab70dbe1c036da14070096017f985099f89247 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DbConnectionPoolCounters.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index 126ced9adea11b377c45709808c576a24a5066ea..91fb7aacb908766942fb51509fb23c1c40b0e4d6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DbConnectionPoolGroup.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index dfd1796b93ecc5332447eafcc90510630fa5c294..32a8ebfb2980bceb41288c5df902de088b428eae 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbConnectionPoolGroupProviderInfo.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index b7876128be1fd52ffa7a706bb4372240aa47b6a9..846ff67f2c22b510f2ff40ddda65f70f8b9dc9ff 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DbConnectionPoolIdentity.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index 33610b61804dac9d3aaeca277ad8627b6760bed8..fa3f82e553a2bde014541c2d3d66f9cef7d80684 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DbConnectionPoolGroupOptions.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index 118800f7cf7d3264ceb95344cebda04ac39c5c35..2408d5f4a36b99ad2664207ac7a499c62f82b430 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbMetaDataCollectionNames.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 6d12c91692dafcd4c6e6d2931827b9e7219ac92c..c8237455efd57a46ea2f48c1e376499c51651ef0 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbMetaDataColumnNames.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Common {
index 67025f4b56f5655072de27312fa6cd03a7945341..5267928dd0dc344fa26192e59c489a871c34ddf8 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="dbmetadatafactory.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index d28d3414eff82b949213904b19bf4105dd897c29..33266444b1b757a14992a81fb988149b339cd4e8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DbParameterCollectionBase.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace NAMESPACE
index b968d12dc694245278c5a1ebf4014ad5858fedeb..7efd67b6a33f1a11be73ce72f201954601f82c43 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DbParameterHelper.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace NAMESPACE {
index 1f55090b42ae95c77c05c6e8f675af35bc5a7717..8a1baeec7cfc93401712ca67e413fa34a5dfb9e3 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DbReferenceCollection.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index 0118a9a644ebf0228bc3118f3878b5e246877103..9c0e435130bcc2a4697ab75ef5da1a30f8f56955 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaMapping.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index 24172d3bdaef397139903b888c182214d1969405..8c89bab8e4bcf4ca0e6808eb0a4f8e7358545434 100644 (file)
@@ -5,8 +5,8 @@
 //
 //  Class used to manage timeouts in complex system operations.
 //
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase
index 2fdb479788800d119aaad4be89952901a20499a3..c1501a0d289bad44d11ea34818160b0b35dcbee8 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="WrappedIUnknown.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.ProviderBase {
index 6c3ea0a9c217e6cbb6d22d10f1f542379a011bb2..790bf3055f35aed19cf9c78a5199456d3deb772b 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="Range.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 57ab5bfa1eeb727e798b80e2d565c8b90d5fbcf3..4048974b984937898b39f3d618427676c8a60f4e 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="Selection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 #if DEBUG
index 608f79c6f9deb0b9d0391df0071d22e4d22beb90..106bfafe0548151b264c3d2a2b5d697e51c22006 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="RecordManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 82322d9618ac2c2aa0d0dc0a372261a60923a587..9f2c8aef1abd3ed28af2aef7c620ee42c8818e53 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="StatementCompletedEventArgs.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index e1aed175ae116cd2a7ed47683bc4869336b25efb..7493a8b56ae1a5015790744415497d1178b01e7f 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="RelatedView.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 2fec1c69e2677542cd075ba52f37fe376ab28230..dbddce219e308980f7807cfc31286311d7bc9ab8 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="RelationshipConverter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index e9df08a601d4877affb4367df12b0a84e8aa1eca..114fd109a6e5742e3641d31c7895c405f2d4ae15 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index 21f2b3df4da42049d9bbcf67346ca7399bd83347..300eb2914f0f3eeffdc7a8cbb9ca511e97c1fea6 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index bf0be8953b1e1a922bac2327a15b2875b955664c..f72b2e84388817c43b0f19417cae0c1069525256 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index c8bf25e0af9f1825770908407e7810e781bf4f75..1c7dd76f46f7e1efa7fe1120c9532388b32f2719 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>                                                                                                                               
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
 //     112296 AZA  07/06/02 Seal SqlAccess classes.
 //     107151 AZA  04/18/02 Track byte array buffer as well as SqlBytes in 
 //                          sqlaccess.
-//     107216 JXF  04/17/02 
-
-
-
-
-
-
-
-
-
-
+//     107216 JXF  04/17/02 Bug 514927
+//     106854 JXF  04/15/02 Fix http suites due to SqlChars
+//     106448 JXF  04/12/02 Bugs on sqlchars
+//     106242 JXF  04/09/02 Bugs on SqlBytes/SqlChars
+//     105715 JXF  04/05/02 Handle NULL properly in SqlBytes.SetLength
+//     91128 JXF  10/17/01 Make SqlBytes not unsafe
+//
+//   04/20/01  JunFang Created.
+//
+// @EndHeader@
+//**************************************************************************
 
 namespace System.Data.SqlTypes {
     using System;
index 4fc5106f14c019e2fb038bdb70279efbadda1318..0bd0bd5d0f87cfb4c300f7dc93dba547c50d3200 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>                                                                                                                               
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
 //     112296 AZA  07/06/02 Seal SqlAccess classes.
 //     107151 AZA  04/18/02 Track byte array buffer as well as SqlBytes in 
 //                          sqlaccess.
-//     107216 JXF  04/17/02 
-
-
-
-
-
-
-
-
-
+//     107216 JXF  04/17/02 Bug 514927
+//     106854 JXF  04/15/02 Fix http suites due to SqlChars
+//     106448 JXF  04/12/02 Bugs on sqlchars
+//     105715 JXF  04/05/02 Handle NULL properly in SqlBytes.SetLength
+//     91128 JXF  10/17/01 Make SqlBytes not unsafe
+//
+//   04/20/01  JunFang Created.
+//
+// @EndHeader@
+//**************************************************************************
 
 
 namespace System.Data.SqlTypes {
index 32695a2d2b31521c879bd5167b93870cff664eb9..6217081b98f2a33169b370504d2d9ad9289e134d 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
@@ -198,9 +198,9 @@ namespace System.Data.SqlTypes {
                 // ISSUE: Is this code reachable?  For this code to be reached there
                 //    must be a value for dblVal such that:
                 //        dblVal - (long)dblVal = 1.0
-                //    This seems odd, but there was a 
-
-
+                //    This seems odd, but there was a bug (51261) that resulted because
+                //    there was a negative value for dblVal such that dblVal + 1.0 = 1.0
+                //
                 day ++;
                 time -= SQLTicksPerDay;
             }
index 29c4f869a8b3d5b291800787b1855480e399096c..a992e479ef831a3f734b9189eacdcaf6ed0692e0 100644 (file)
@@ -3,9 +3,9 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index 5e25a2fc0ce3b6b7c0920a81b41ae455bff305da..3aace9925ae116745ac09abbcb377596012ae94b 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index c9c4c29df33d3dd72ed3cd50ac54effa2ac36176..05bb96edc14df350da3f1e542e3e64805d5576dc 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlFileStream.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
@@ -550,8 +550,8 @@ namespace System.Data.SqlTypes
             if (pathTooLong)
             {
                 // SQLBUVSTS bugs 192677 and 203422: currently, FileIOPermission does not support path longer than MAX_PATH (260)
-                // so we cannot demand permissions for long files. We are going to open 
-
+                // so we cannot demand permissions for long files. We are going to open bug for FileIOPermission to
+                // support this.
 
                 // In the meanwhile, we agreed to have try-catch block on the permission demand instead of checking the path length.
                 // This way, if/when the 260-chars limitation is fixed in FileIOPermission, we will not need to change our code
index 5db792cd77cee0a8be62bcce3379c8da3c5ac1a9..46e62e8440b77fe683440b9f5885348ff93211ae 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>                                                                
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index c4eb46df412214c5482e96e5ddbcfe662653ee1e..276862274cfc71358d428aecda6580b85316c95c 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index 01ace91dc5fba303bd45b35dea03a8055cbdcd87..70667a2d6f775e70dace953413e4cdcb01fa5436 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index 31b03d704692f77e9627a6bec12b3429990365bd..523433c9b8bcc8c7ebf9320f8079c558f1482567 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index 37ad68576a7421d4126090111d4a71f69c2359f8..e64f46118b1577ddf9a5256e40ab2cf1e706af1a 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index 3ce29437d2f05625cbb120ec934ce381d11afe41..679bc8ff87aef90b00f6bdc0778b2fb795a671ee 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index 124a7fe13e62f87df0b88f89ff51d2cf6cdc0439..5e7aa6869594073297e531437ebaf4d27ca70845 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index be82ca4779de9f2c5ce7d3884a7226b377ed8689..4bc110c4c53620b80d5ed5c68faf338ba1b0ee76 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index 253b85477f1fee741121f3049211fd3c12a8ff56..5a8e648115dd181d9cb92420c72543b7840aaba9 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index e270bc00b86b1cc4621587f93ade23751adda0df..3d77065fc845726a571aca3358e96e96584570b9 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>                                                                
 // <owner current="true" primary="true">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
index 6b390b537ed4e810c6dd829b83b75f2630f405f7..0d65de3b2051ce4c53e7b54aa3d2dafa833c9783 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 // <owner current="true" primary="true">dondu</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index 9509cd62514e60b3ac71471f7b7563bacd27e495..d05ed2c80a24f4fd00490edd60999deade86c8d5 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlXmlReader.cs" company="Microsoft">
 //        Copyright (c) Microsoft Corporation.  All rights reserved.
 //     </copyright>                                                                                                                            
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //**************************************************************************
@@ -114,8 +114,8 @@ namespace System.Data.SqlTypes
             try {
                 return sqlReaderDelegate(stream, settingsToUse, null);
             }
-            // Dev11 
-
+            // Dev11 Bug #315513: Exception type breaking change from 4.0 RTM when calling GetChars on null xml
+            // For particular callers, we need to wrap all exceptions inside a TargetInvocationException to simulate calling CreateSqlReader via MethodInfo.Invoke
             catch (Exception ex) {
                 if ((!throwTargetInvocationExceptions) || (!ADP.IsCatchableExceptionType(ex))) {
                     throw;
@@ -244,9 +244,9 @@ namespace System.Data.SqlTypes
                        }
                        else 
             {
-                // VSTFDevDiv 
-
-
+                // VSTFDevDiv Bug 197567 - [SqlXml Column Read from SQL Server 2005 Fails to XML Serialize (writes raw binary)]
+                // Instead of the WriteRaw use the WriteNode. As Tds sends a binary stream - Create a XmlReader to convert 
+                // get the Xml string value from the binary and call WriteNode to pass that out to the XmlWriter.
                 XmlReader reader = this.CreateReader();
                 if (reader.ReadState == ReadState.Initial)
                     reader.Read();
index 7c847edace31b882d0681e4a314a13b90716f227..c1639481477591b693d9063d9999106b02e0d26f 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SafeNativeMethods.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index f9c8b70667f9108f970fedccbe7ab8885cde50f7..afac088726eabecf0406ce914249cae073b8421f 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="Select.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -52,7 +52,7 @@ namespace System.Data {
             return ((op >= Operators.EqualTo && op <= Operators.LessOrEqual) || op == Operators.Is || op == Operators.IsNot);
         }
 
-        // Microsoft : Gathers all linear expressions in to this.linearExpression and all binary expressions in to their respective candidate columns expressions
+        // [....] : Gathers all linear expressions in to this.linearExpression and all binary expressions in to their respective candidate columns expressions
         private void AnalyzeExpression(BinaryNode expr) {
             if (this.linearExpression == this.expression)
                 return;
@@ -355,7 +355,7 @@ namespace System.Data {
                         matchedCandidates = 0;
                         if (this.linearExpression != this.expression) {
                             IndexField[] fields = index.IndexFields;
-                            while (matchedCandidates < j) { // Microsoft : j = index.IndexDesc.Length
+                            while (matchedCandidates < j) { // [....] : j = index.IndexDesc.Length
                                 ColumnInfo canColumn = candidateColumns[fields[matchedCandidates].Column.Ordinal];
                                 if (canColumn == null || canColumn.expr == null)
                                     break;
@@ -417,7 +417,7 @@ namespace System.Data {
                     }
                 }
             }
-//            Debug.Assert(this.linearExpression != null, "BuildLinearExpression : How come there is nothing to search linearly"); 
+//            Debug.Assert(this.linearExpression != null, "BuildLinearExpression : How come there is nothing to search linearly"); bug 97446
         }
 
         public DataRow[] SelectRows() {
@@ -459,7 +459,7 @@ namespace System.Data {
                 return table.NewRowArray(0);
 
             Range range;
-            if (matchedCandidates == 0) { // Microsoft : Either dont have rowFilter or only linear search expression
+            if (matchedCandidates == 0) { // [....] : Either dont have rowFilter or only linear search expression
                 range = new Range(0, index.RecordCount-1);
                 Debug.Assert(!needSorting, "What are we doing here if no real reuse of this index ?");
                 this.linearExpression = this.expression;
index 0250a6a1ef460fa6f31f7665974075babe1e5a83..6ef2dd1eabac05db0985e6662c55b8de095de28f 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="Selection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -855,7 +855,7 @@ namespace System.Data {
                     OnListChanged(ListChangedType.ItemAdded, newIndex, oldIndex);
                 }
                 else  if (newIndex == -1) { // its deleted
-                    // Do not fix this. see 
+                    // Do not fix this. see bug Bug 271076 for explanation.
                     OnListChanged(ListChangedType.ItemDeleted, oldIndex);
                 }
                 else {
index e5840ccaed398901fdfbbcf1bb61f963c708b053..13ecfc5b7fef599261d25042458d68cd2fd58b5f 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SimpleType.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -38,7 +38,7 @@ namespace System.Data {
         string maxInclusive = "";
         string minExclusive = "";
         string minInclusive = "";
-        //REMOVED: encoding due to Microsoft 2001 XDS changes
+        //REMOVED: encoding due to [....] 2001 XDS changes
 
         // 
         internal string enumeration = "";
@@ -267,7 +267,7 @@ namespace System.Data {
                             type.SetAttribute(Keywords.BASE, baseSimpleType.Name);
                         }
                     }
-                    else { // Microsoft
+                    else { // [....]
                         type.SetAttribute(Keywords.BASE, baseSimpleType.Name);
                     }
                 }
@@ -290,48 +290,48 @@ namespace System.Data {
                 constraint.SetAttribute(Keywords.VALUE, maxLength.ToString(CultureInfo.InvariantCulture));
                 type.AppendChild(constraint);
             }
-/*        // removed due to MDAC 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+/*        // removed due to MDAC bug 83892
+            // will be reactivated in whidbey with the proper handling
+            if (pattern != null && pattern.Length > 0) {
+                constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_PATTERN, Keywords.XSDNS);
+                constraint.SetAttribute(Keywords.VALUE, pattern);
+                type.AppendChild(constraint);
+            }
+            if (minLength >= 0) {
+                constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MINLENGTH, Keywords.XSDNS);
+                constraint.SetAttribute(Keywords.VALUE, minLength.ToString());
+                type.AppendChild(constraint);
+            }
+            if (minInclusive != null && minInclusive.Length > 0) {
+                constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MININCLUSIVE, Keywords.XSDNS);
+                constraint.SetAttribute(Keywords.VALUE, minInclusive);
+                type.AppendChild(constraint);
+            }
+            if (minExclusive != null && minExclusive.Length > 0) {
+                constraint =dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MINEXCLUSIVE, Keywords.XSDNS);
+                constraint.SetAttribute(Keywords.VALUE, minExclusive);
+                type.AppendChild(constraint);
+            }
+            if (maxInclusive != null && maxInclusive.Length > 0) {
+                constraint =dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MAXINCLUSIVE, Keywords.XSDNS);
+                constraint.SetAttribute(Keywords.VALUE, maxInclusive);
+                type.AppendChild(constraint);
+            }
+            if (maxExclusive != null && maxExclusive.Length > 0) {
+                constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_MAXEXCLUSIVE, Keywords.XSDNS);
+                constraint.SetAttribute(Keywords.VALUE, maxExclusive);
+                type.AppendChild(constraint);
+            }
+            if (enumeration.Length > 0) {
+                string[] list = enumeration.TrimEnd(null).Split(null);
 
-*/
+                for (int i = 0; i < list.Length; i++) {
+                    constraint = dc.CreateElement(Keywords.XSD_PREFIX, Keywords.XSD_ENUMERATION, Keywords.XSDNS);
+                    constraint.SetAttribute(Keywords.VALUE, list[i]);
+                    type.AppendChild(constraint);
+                }
+            }
+            */
             typeNode.AppendChild(type);
             return typeNode;
         }
index c6b7d92765d835c10775ec28138a446efa1656b3..d603b38fdcb1197ccaefe0df9449a6646e0e5779 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlDataSourceEnumerator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Sql {
index 0d3fc92f46b2cf1e09454b8694d937c294c4b7fb..7b56e9852c14691a75acec31ba0b868ae560043d 100644 (file)
@@ -3,12 +3,12 @@
 //     Copyright (c) Microsoft Corporation. All Rights Reserved.
 //     Information Contained Herein is Proprietary and Confidential.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="true">daltudov</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">beysims</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">vadimt</owner>
 //------------------------------------------------------------------------------
 
index c11a8f4caf0c1d8cc8bd6268c4d9edc7f6420ae3..b1af7c80738688e76063672466bed9d3e34433b7 100644 (file)
@@ -3,12 +3,12 @@
 //     Copyright (c) Microsoft Corporation. All Rights Reserved.
 //     Information Contained Herein is Proprietary and Confidential.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="true">daltudov</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">beysims</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">vadimt</owner>
 //------------------------------------------------------------------------------
 
index e5a3b39072620cbb6af5c8d8f7df4817abbd23f9..db01b7ad5dd7eb67744670f51d8b76f05a8db178 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlGenericUtil.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Sql {
index fc3b3a7dc0f4b911c92689d550c7d4ad0de83c8c..d17f8b723ab4c770fb8a59da470b3b4c4c2d76a0 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlMetaData.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
@@ -1621,7 +1621,7 @@ namespace Microsoft.SqlServer.Server {
             new SqlMetaData("nvarchar", SqlDbType.NVarChar,
                     x_lServerMaxUnicode, 0, 0, 0, x_eDefaultStringCompareOptions, false),                // Placeholder for value 28
             new SqlMetaData("udt", SqlDbType.Udt,
-                    0, 0, 0, 0, SqlCompareOptions.None, false),            // SqlDbType.Udt = 29  
+                    0, 0, 0, 0, SqlCompareOptions.None, false),            // SqlDbType.Udt = 29  Bug Fix: 302698
             new SqlMetaData("table", SqlDbType.Structured,
                     0, 0, 0, 0, SqlCompareOptions.None, false),                // SqlDbType.Structured
             new SqlMetaData("date", SqlDbType.Date,
index 3203b1748c5808a81d17d0d38407908b9eb7c02d..66eee2f72e27b4073866b86fccbc55cc13449015 100644 (file)
@@ -3,13 +3,13 @@
 //     Copyright (c) Microsoft Corporation. All Rights Reserved.
 //     Information Contained Herein is Proprietary and Confidential.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="true">daltudov</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">beysims</owner>
 // <owner current="true" primary="false">junfang</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">vadimt</owner>
 //------------------------------------------------------------------------------
 
index 986d8f5d6d3a9d8c3490999c7da528fcc9545e1e..9b5149d529abed01ba8c25e54f65b492228fcb60 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlNotificationRequest.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.Sql {
index c88caeaeaa71fc73bc911e507fa3cf0cccb52de2..8f28089cbec5f9a8709e7eb501d969f32346b9ea 100644 (file)
@@ -3,12 +3,12 @@
 //     Copyright (c) Microsoft Corporation. All Rights Reserved.
 //     Information Contained Herein is Proprietary and Confidential.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="true">daltudov</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">beysims</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">vadimt</owner>
 //------------------------------------------------------------------------------
 
index 303687749f406bbe06a76534a706954ee7c18371..dbb72b83d23a1b380435a842276a12ad087cb86f 100644 (file)
@@ -3,12 +3,12 @@
 //     Copyright (c) Microsoft Corporation. All Rights Reserved.
 //     Information Contained Herein is Proprietary and Confidential.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="true">daltudov</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">beysims</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">vadimt</owner>
 //------------------------------------------------------------------------------
 
index f7c1307fd5034d072570bf4ab677bcb8b317b49c..56ba4a976c2f7900362d965136ae6755c73a800a 100644 (file)
@@ -3,15 +3,15 @@
 //     Copyright (c) Microsoft Corporation. All Rights Reserved.
 //     Information Contained Herein is Proprietary and Confidential.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="true">daltudov</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">beysims</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">vadimt</owner>
 // <owner current="false" primary="false">venkar</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 8dddb2200cb9e8af525ef265f178afbbfc0f1e61..2684b82feff94f66b196d99baa1dc7002a233caa 100644 (file)
@@ -3,15 +3,15 @@
 //     Copyright (c) Microsoft Corporation. All Rights Reserved.
 //     Information Contained Herein is Proprietary and Confidential.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="true">daltudov</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">beysims</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">vadimt</owner>
 // <owner current="false" primary="false">venkar</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 527832fdb4f87b3c6e47024e54b1d1e9799424b5..56efbc86f0f452974e40a8e750b733eb1382c7f8 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="InvalidUdtException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index e27d86b3f3609742475f0abaac1a89fa11d2eb09..2be7f1237ab38b1a23969a93654086807455605e 100644 (file)
@@ -3,14 +3,14 @@
 //     Copyright (c) Microsoft Corporation. All Rights Reserved.
 //     Information Contained Herein is Proprietary and Confidential.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="true">daltudov</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">beysims</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">vadimt</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="false" primary="false">[....]</owner>
 // <owner current="false" primary="false">venkar</owner>
 //------------------------------------------------------------------------------
 
index e4a1cada184b79893de545c610c4d9145708a7a4..579818e6ea32f14458bebd752dc50c2479e678c1 100644 (file)
@@ -3,15 +3,15 @@
 //     Copyright (c) Microsoft Corporation. All Rights Reserved.
 //     Information Contained Herein is Proprietary and Confidential.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="true">daltudov</owner>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">beysims</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
 // <owner current="true" primary="false">vadimt</owner>
 // <owner current="false" primary="false">venkar</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index cc294b15712f7cbcb9d9a9b95800364eced174f4..0a93882a2d9793c1eea50c3d9dea300518fae180 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="RowsCopiedEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 9c4084086bba991d00d8aff51ba8c855f45a29ac..f4dce919cf9456cdedc6540da156d699979961eb 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlDataReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index cd3484f13917af52e541dca7d2c17e6622279b69..2a4b96c02a36a45bbc09c39c729d107f10314af7 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlBulkCopy.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 // todo list:
@@ -531,7 +531,7 @@ namespace System.Data.SqlClient {
         }
 
         // Creates and then executes initial query to get information about the targettable
-        // When __isAsyncBulkCopy == false (i.e. it is Sync copy): out result contains the resulset. Returns null. 
+        // When __isAsyncBulkCopy == false (i.e. it is [....] copy): out result contains the resulset. Returns null. 
         // When __isAsyncBulkCopy == true (i.e. it is Async copy): This still uses the _parser.Run method synchronously and return Task<BulkCopySimpleResultSet>. 
         // We need to have a _parser.RunAsync to make it real async. 
         private Task<BulkCopySimpleResultSet> CreateAndExecuteInitialQueryAsync(out BulkCopySimpleResultSet result) {
@@ -775,7 +775,8 @@ namespace System.Data.SqlClient {
                     SqlBulkCopyOptions.KeepNulls
                     | SqlBulkCopyOptions.TableLock
                     | SqlBulkCopyOptions.CheckConstraints
-                    | SqlBulkCopyOptions.FireTriggers)) != SqlBulkCopyOptions.Default) {
+                    | SqlBulkCopyOptions.FireTriggers
+                    | SqlBulkCopyOptions.AllowEncryptedValueModifications)) != SqlBulkCopyOptions.Default) {
                 bool addSeparator = false;  // insert a comma character if multiple options in list ...
                 updateBulkCommandText.Append(" with (");
                 if(IsCopyOption(SqlBulkCopyOptions.KeepNulls)) {
@@ -794,6 +795,10 @@ namespace System.Data.SqlClient {
                     updateBulkCommandText.Append((addSeparator ? ", " : "") + "FIRE_TRIGGERS");
                     addSeparator = true;
                 }
+                if(IsCopyOption(SqlBulkCopyOptions.AllowEncryptedValueModifications)) {
+                    updateBulkCommandText.Append((addSeparator ? ", " : "") + "ALLOW_ENCRYPTED_VALUE_MODIFICATIONS");
+                    addSeparator = true;
+                }
                 updateBulkCommandText.Append(")");
             }
             return (updateBulkCommandText.ToString());
@@ -1062,7 +1067,7 @@ namespace System.Data.SqlClient {
         
         // unified method to read a row from the current rowsource
         // When _isAsyncBulkCopy == true (i.e. async copy): returns Task<bool> when IDataReader is a DbDataReader, Null for others.
-        // When _isAsyncBulkCopy == false (i.e. sync copy): returns null. Uses ReadFromRowSource to get the boolean value.
+        // When _isAsyncBulkCopy == false (i.e. [....] copy): returns null. Uses ReadFromRowSource to get the boolean value.
         // "more" -- should be used by the caller only when the return value is null.
         private Task ReadFromRowSourceAsync(CancellationToken cts) {
 #if !PROJECTK
@@ -1437,15 +1442,15 @@ namespace System.Data.SqlClient {
                         value = SqlParameter.CoerceValue(value, mt, out coercedToDataFeed, out typeChanged, false);
                         
                         // Convert Source Decimal Percision and Scale to Destination Percision and Scale
-                        // Fix 
-
-
-
-
-
-
-
-
+                        // Fix Bug: 385971 sql decimal data could get corrupted on insert if the scale of
+                        // the source and destination weren't the same.  The BCP protocal, specifies the
+                        // scale of the incoming data in the insert statement, we just tell the server we
+                        // are inserting the same scale back. This then created a bug inside the BCP opperation
+                        // if the scales didn't match.  The fix is to do the same thing that SQL Paramater does,
+                        // and adjust the scale before writing.  In Orcas is scale adjustment should be removed from
+                        // SqlParamater and SqlBulkCopy and Isoloated inside SqlParamater.CoerceValue, but becouse of
+                        // where we are in the cycle, the changes must be kept at minimum, so I'm just bringing the
+                        // code over to SqlBulkCopy.
                         
                         SqlDecimal sqlValue;
                         if ((isSqlType) && (!typeChanged)) {
@@ -2076,7 +2081,7 @@ namespace System.Data.SqlClient {
         // Reads a cell and then writes it. 
         // Read may block at this moment since there is no getValueAsync or DownStream async at this moment.
         // When _isAsyncBulkCopy == true: Write will return Task (when async method runs asynchronously) or Null (when async call actually ran synchronously) for performance. 
-        // When _isAsyncBulkCopy == false: Writes are purely sync. This method reutrn null at the end.
+        // When _isAsyncBulkCopy == false: Writes are purely [....]. This method reutrn null at the end.
         //
         private Task ReadWriteColumnValueAsync(int col) {
             bool isSqlType;
@@ -2387,7 +2392,7 @@ namespace System.Data.SqlClient {
                         AsyncHelper.ContinueTask(commandTask, source, () => {
                             Task continuedTask = CopyBatchesAsyncContinued(internalResults, updateBulkCommandText, cts, source);
                             if (continuedTask == null) {
-                                // Continuation finished sync, recall into CopyBatchesAsync to continue
+                                // Continuation finished [....], recall into CopyBatchesAsync to continue
                                 CopyBatchesAsync(internalResults, updateBulkCommandText, cts, source);
                             }
                         }, _connection.GetOpenTdsConnection());
@@ -2438,7 +2443,7 @@ namespace System.Data.SqlClient {
                     AsyncHelper.ContinueTask(task, source, () => {
                         Task continuedTask = CopyBatchesAsyncContinuedOnSuccess(internalResults, updateBulkCommandText, cts, source);
                         if (continuedTask == null) {
-                            // Continuation finished sync, recall into CopyBatchesAsync to continue
+                            // Continuation finished [....], recall into CopyBatchesAsync to continue
                             CopyBatchesAsync(internalResults, updateBulkCommandText, cts, source);
                         }
                     }, _connection.GetOpenTdsConnection(), _ => CopyBatchesAsyncContinuedOnError(cleanupParser: false), () => CopyBatchesAsyncContinuedOnError(cleanupParser: true));
@@ -2581,7 +2586,7 @@ namespace System.Data.SqlClient {
 
         // The continuation part of WriteToServerInternalRest. Executes when the initial query task is completed. (see, WriteToServerInternalRest).
         // It carries on the source which is passed from the WriteToServerInternalRest and performs SetResult when the entire copy is done.
-        // The carried on source may be null in case of Sync copy. So no need to SetResult at that time.
+        // The carried on source may be null in case of [....] copy. So no need to SetResult at that time.
         // It launches the copy operation. 
         //
         private void WriteToServerInternalRestContinuedAsync(BulkCopySimpleResultSet internalResults, CancellationToken cts, TaskCompletionSource<object> source) {
@@ -2678,7 +2683,7 @@ namespace System.Data.SqlClient {
 
         // Rest of the WriteToServerInternalAsync method. 
         // It carries on the source from its caller WriteToServerInternal.
-        // source is null in case of Sync bcp. But valid in case of Async bcp.
+        // source is null in case of [....] bcp. But valid in case of Async bcp.
         // It calls the WriteToServerInternalRestContinuedAsync as a continuation of the initial query task.
         //
         private void WriteToServerInternalRestAsync(CancellationToken cts, TaskCompletionSource<object> source) {
@@ -2788,7 +2793,7 @@ namespace System.Data.SqlClient {
             }            
         }
     
-        // This returns Task for Async, Null for Sync
+        // This returns Task for Async, Null for [....]
         //
         private Task WriteToServerInternalAsync(CancellationToken ctoken) {
             TaskCompletionSource<object> source = null;
index 16b85f3a23df01668d48502b1e7e36691af9756c..d4166c2d91152704b0e545e1b207821a48239523 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlBulkCopyColumnMapping.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 // Todo: rename the file
index d11c23c8c61e6e130022ec862c1d556ac10d558f..ac37a1d924c5374af3ee5482eb6fe954542b4c34 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlBulkCopyMappingCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 // todo: rename the file
index 62baf0f812f564fcf1c23c2e60ad1bb0c2f1f5d9..00d01449c2c082f8d0107a811322d83c3d52ad54 100644 (file)
@@ -17,6 +17,7 @@ namespace System.Data.SqlClient {
         KeepNulls           = 1 << 3,
         FireTriggers        = 1 << 4,
         UseInternalTransaction = 1 << 5,
+        AllowEncryptedValueModifications = 1 << 6,
     }
 }
 
index ded56bee758b52ff2872b1feba7b6305359c45ac..5e5e2c22da5b3e7f808c648ae50d5568bb39f2c2 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlCachedBuffer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 4763dd80d4540d12ebc4168e0848eebe7c3befc4..b42193a804613b0f57a4a909ef2c19cca5188ea4 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlClientFactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 01530e81bd4f046fead495f1c50d83c87d159fcd..46d0f0da5897849a69c45248bb43ab59fbedb44d 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlClientMetaDataCollectionNames.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient{
index 695b9adad725e86bc51e827144e4e5e960a480a8..d668f1169792c6b4bc98e324fcfe49462d88d68e 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlClientPermission.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 32ef810a40630d8c98709d9316bf033daae49806..e4e984da90bfa5ca32eeaff017f717c7b8923081 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlClientWrapperSmiStream.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 1818a2e0c1d8354ca7bb73bf1702589569b34485..f5ae0f3df6c4116ff3a1a752c21f5e8ef5a57ac8 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlClientWrapperSmiStream.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace Microsoft.SqlServer.Server {
index 44357a9b3636577290d22856e4fb40cb73814aed..a81efb19960e79eced0f37e9c368b5e6190f7862 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿//------------------------------------------------------------------------------
-// <copyright file="SqlException.cs" company="Microsoft">
+// <copyright file="SqlColumnEncryptionCertificateStoreProvider.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 // <owner current="true" primary="true">balnee</owner>
@@ -19,7 +19,7 @@ namespace System.Data.SqlClient
     /// <summary>
     /// Certificate Key Store Provider class
     /// </summary>
-    sealed public class SqlColumnEncryptionCertificateStoreProvider : SqlColumnEncryptionKeyStoreProvider
+    public class SqlColumnEncryptionCertificateStoreProvider : SqlColumnEncryptionKeyStoreProvider
     {
         // Constants
         //
@@ -27,14 +27,14 @@ namespace System.Data.SqlClient
         // Certificate provider name (CertificateStore) dont need to be localized.
 
         /// <summary>
-        /// RSA_OAEP is the only algorithm supported for encrypting/decrypting column encryption keys.
+        /// Name for the certificate key store provider.
         /// </summary>
-        internal const string RSAEncryptionAlgorithmWithOAEP = @"RSA_OAEP";
+        public const string ProviderName = @"MSSQL_CERTIFICATE_STORE";
 
         /// <summary>
-        /// Name for the certificate key store provider.
+        /// RSA_OAEP is the only algorithm supported for encrypting/decrypting column encryption keys.
         /// </summary>
-        internal const string ProviderName = @"MSSQL_CERTIFICATE_STORE";
+        internal const string RSAEncryptionAlgorithmWithOAEP = @"RSA_OAEP";
 
         /// <summary>
         /// LocalMachine certificate store location. Valid certificate locations are LocalMachine and CurrentUser.
@@ -131,6 +131,7 @@ namespace System.Data.SqlClient
             }
 
             // Validate the signature length
+            // Signature length should be same as the key side for RSA PKCSv1.5
             int signatureLength = encryptedColumnEncryptionKey.Length - currentIndex - cipherTextLength;
             if (signatureLength != keySizeInBytes)
             {
@@ -139,7 +140,7 @@ namespace System.Data.SqlClient
 
             // Get ciphertext
             byte[] cipherText = new byte[cipherTextLength];
-            Buffer.BlockCopy(encryptedColumnEncryptionKey, currentIndex, cipherText, 0, cipherTextLength);
+            Buffer.BlockCopy(encryptedColumnEncryptionKey, currentIndex, cipherText, 0, cipherText.Length);
             currentIndex += cipherTextLength;
 
             // Get signature
diff --git a/mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlColumnEncryptionCngProvider.cs b/mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlColumnEncryptionCngProvider.cs
new file mode 100644 (file)
index 0000000..aa4561a
--- /dev/null
@@ -0,0 +1,414 @@
+//------------------------------------------------------------------------------
+// <copyright file="SqlColumnEncryptionCngProvider.cs" company="Microsoft">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+// <owner current="true" primary="true">balnee</owner>
+// <owner current="true" primary="false">krishnib</owner>
+//------------------------------------------------------------------------------
+namespace System.Data.SqlClient
+{
+    using System;
+    using System.Text;
+    using System.Data.Common;
+    using System.Diagnostics;
+    using System.Globalization;
+    using System.Security;
+    using System.Security.Cryptography;
+
+    /// <summary>
+    /// Provides implementation similar to certificate store provider.
+    /// A CEK encrypted with certificate provider should be decryptable by this provider and vice versa.
+    /// 
+    /// Envolope Format for the encrypted column encryption key  
+    ///           version + keyPathLength + ciphertextLength + keyPath + ciphertext +  signature
+    /// version: A single byte indicating the format version.
+    /// keyPathLength: Length of the keyPath.
+    /// ciphertextLength: ciphertext length
+    /// keyPath: keyPath used to encrypt the column encryption key. This is only used for troubleshooting purposes and is not verified during decryption.
+    /// ciphertext: Encrypted column encryption key
+    /// signature: Signature of the entire byte array. Signature is validated before decrypting the column encryption key.
+    /// </summary>
+    public class SqlColumnEncryptionCngProvider : SqlColumnEncryptionKeyStoreProvider
+    {
+        /// <summary>
+        /// Name for the CNG key store provider.
+        /// </summary>
+        public const string ProviderName = @"MSSQL_CNG_STORE";
+
+        /// <summary>
+        /// RSA_OAEP is the only algorithm supported for encrypting/decrypting column encryption keys using this provider.
+        /// For now, we are keeping all the providers in [....].
+        /// </summary>
+        private const string RSAEncryptionAlgorithmWithOAEP = @"RSA_OAEP";
+
+        /// <summary>
+        /// Algorithm version
+        /// </summary>
+        private readonly byte[] _version = new byte[] { 0x01 };
+
+        /// <summary>
+        /// This function uses the asymmetric key specified by the key path
+        /// and decrypts an encrypted CEK with RSA encryption algorithm.
+        /// </summary>
+        /// <param name="masterKeyPath">Complete path of an asymmetric key in CNG</param>
+        /// <param name="encryptionAlgorithm">Asymmetric Key Encryption Algorithm</param>
+        /// <param name="encryptedColumnEncryptionKey">Encrypted Column Encryption Key</param>
+        /// <returns>Plain text column encryption key</returns>
+        public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey)
+        {
+            // Validate the input parameters
+            ValidateNonEmptyKeyPath(masterKeyPath, isSystemOp: true);
+
+            if (null == encryptedColumnEncryptionKey)
+            {
+                throw SQL.NullEncryptedColumnEncryptionKey();
+            }
+
+            if (0 == encryptedColumnEncryptionKey.Length)
+            {
+                throw SQL.EmptyEncryptedColumnEncryptionKey();
+            }
+
+            // Validate encryptionAlgorithm
+            ValidateEncryptionAlgorithm(encryptionAlgorithm, isSystemOp: true);
+
+            // Create RSA Provider with the given CNG name and key name
+            RSACng rsaCngProvider = CreateRSACngProvider(masterKeyPath, isSystemOp: true);
+
+            // Validate whether the key is RSA one or not and then get the key size
+            int keySizeInBytes = GetKeySize(rsaCngProvider);
+
+            // Validate and decrypt the EncryptedColumnEncryptionKey
+            // Format is 
+            //           version + keyPathLength + ciphertextLength + keyPath + ciphervtext +  signature
+            //
+            // keyPath is present in the encrypted column encryption key for identifying the original source of the asymmetric key pair and 
+            // we will not validate it against the data contained in the CMK metadata (masterKeyPath).
+
+            // Validate the version byte
+            if (encryptedColumnEncryptionKey[0] != _version[0])
+            {
+                throw SQL.InvalidAlgorithmVersionInEncryptedCEK(encryptedColumnEncryptionKey[0], _version[0]);
+            }
+
+            // Get key path length
+            int currentIndex = _version.Length;
+            UInt16 keyPathLength = BitConverter.ToUInt16(encryptedColumnEncryptionKey, currentIndex);
+            currentIndex += sizeof(UInt16);
+
+            // Get ciphertext length
+            UInt16 cipherTextLength = BitConverter.ToUInt16(encryptedColumnEncryptionKey, currentIndex);
+            currentIndex += sizeof(UInt16);
+
+            // Skip KeyPath
+            // KeyPath exists only for troubleshooting purposes and doesnt need validation.
+            currentIndex += keyPathLength;
+
+            // validate the ciphertext length
+            if (cipherTextLength != keySizeInBytes)
+            {
+                throw SQL.InvalidCiphertextLengthInEncryptedCEKCng(cipherTextLength, keySizeInBytes, masterKeyPath);
+            }
+
+            // Validate the signature length
+            // Signature length should be same as the key side for RSA PKCSv1.5
+            int signatureLength = encryptedColumnEncryptionKey.Length - currentIndex - cipherTextLength;
+            if (signatureLength != keySizeInBytes)
+            {
+                throw SQL.InvalidSignatureInEncryptedCEKCng(signatureLength, keySizeInBytes, masterKeyPath);
+            }
+
+            // Get ciphertext
+            byte[] cipherText = new byte[cipherTextLength];
+            Buffer.BlockCopy(encryptedColumnEncryptionKey, currentIndex, cipherText, 0, cipherText.Length);
+            currentIndex += cipherTextLength;
+
+            // Get signature
+            byte[] signature = new byte[signatureLength];
+            Buffer.BlockCopy(encryptedColumnEncryptionKey, currentIndex, signature, 0, signature.Length);
+
+            // Compute the hash to validate the signature
+            byte[] hash;
+            using (SHA256Cng sha256 = new SHA256Cng())
+            {
+                sha256.TransformFinalBlock(encryptedColumnEncryptionKey, 0, encryptedColumnEncryptionKey.Length - signature.Length);
+                hash = sha256.Hash;
+            }
+
+            Debug.Assert(hash != null, @"hash should not be null while decrypting encrypted column encryption key.");
+
+            // Validate the signature
+            if (!RSAVerifySignature(hash, signature, rsaCngProvider))
+            {
+                throw SQL.InvalidSignature(masterKeyPath);
+            }
+
+            // Decrypt the CEK
+            return RSADecrypt(rsaCngProvider, cipherText);
+        }
+
+        /// <summary>
+        /// This function uses the asymmetric key specified by the key path
+        /// and encrypts CEK with RSA encryption algorithm.
+        /// </summary>
+        /// <param name="keyPath">Complete path of an asymmetric key in AKV</param>
+        /// <param name="encryptionAlgorithm">Asymmetric Key Encryption Algorithm</param>
+        /// <param name="columnEncryptionKey">Plain text column encryption key</param>
+        /// <returns>Encrypted column encryption key</returns>
+        public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey)
+        {
+            // Validate the input parameters
+            ValidateNonEmptyKeyPath(masterKeyPath, isSystemOp: false);
+
+            if (null == columnEncryptionKey)
+            {
+                throw SQL.NullColumnEncryptionKey();
+            }
+            else if (0 == columnEncryptionKey.Length)
+            {
+                throw SQL.EmptyColumnEncryptionKey();
+            }
+
+            // Validate encryptionAlgorithm
+            ValidateEncryptionAlgorithm(encryptionAlgorithm, isSystemOp: false);
+
+            // CreateCNGProviderWithKey
+            RSACng rsaCngProvider = CreateRSACngProvider(masterKeyPath, isSystemOp: false);
+
+            // Validate whether the key is RSA one or not and then get the key size
+            int keySizeInBytes = GetKeySize(rsaCngProvider);
+
+            // Construct the encryptedColumnEncryptionKey
+            // Format is 
+            //          version + keyPathLength + ciphertextLength + ciphertext + keyPath + signature
+            //
+            // We currently only support one version
+            byte[] version = new byte[] { _version[0] };
+
+            // Get the Unicode encoded bytes of cultureinvariant lower case masterKeyPath
+            byte[] masterKeyPathBytes = Encoding.Unicode.GetBytes(masterKeyPath.ToLowerInvariant());
+            byte[] keyPathLength = BitConverter.GetBytes((Int16)masterKeyPathBytes.Length);
+
+            // Encrypt the plain text
+            byte[] cipherText = RSAEncrypt(rsaCngProvider, columnEncryptionKey);
+            byte[] cipherTextLength = BitConverter.GetBytes((Int16)cipherText.Length);
+            Debug.Assert(cipherText.Length == keySizeInBytes, @"cipherText length does not match the RSA key size");
+
+            // Compute hash
+            // SHA-2-256(version + keyPathLength + ciphertextLength + keyPath + ciphertext) 
+            byte[] hash;
+            using (SHA256Cng sha256 = new SHA256Cng())
+            {
+                sha256.TransformBlock(version, 0, version.Length, version, 0);
+                sha256.TransformBlock(keyPathLength, 0, keyPathLength.Length, keyPathLength, 0);
+                sha256.TransformBlock(cipherTextLength, 0, cipherTextLength.Length, cipherTextLength, 0);
+                sha256.TransformBlock(masterKeyPathBytes, 0, masterKeyPathBytes.Length, masterKeyPathBytes, 0);
+                sha256.TransformFinalBlock(cipherText, 0, cipherText.Length);
+                hash = sha256.Hash;
+            }
+
+            // Sign the hash
+            byte[] signedHash = RSASignHashedData(hash, rsaCngProvider);
+            Debug.Assert(signedHash.Length == keySizeInBytes, @"signed hash length does not match the RSA key size");
+            Debug.Assert(RSAVerifySignature(hash, signedHash, rsaCngProvider), @"Invalid signature of the encrypted column encryption key computed.");
+
+            // Construct the encrypted column encryption key
+            // EncryptedColumnEncryptionKey = version + keyPathLength + ciphertextLength + keyPath + ciphertext +  signature
+            int encryptedColumnEncryptionKeyLength = version.Length + cipherTextLength.Length + keyPathLength.Length + cipherText.Length + masterKeyPathBytes.Length + signedHash.Length;
+            byte[] encryptedColumnEncryptionKey = new byte[encryptedColumnEncryptionKeyLength];
+
+            // Copy version byte
+            int currentIndex = 0;
+            Buffer.BlockCopy(version, 0, encryptedColumnEncryptionKey, currentIndex, version.Length);
+            currentIndex += version.Length;
+
+            // Copy key path length
+            Buffer.BlockCopy(keyPathLength, 0, encryptedColumnEncryptionKey, currentIndex, keyPathLength.Length);
+            currentIndex += keyPathLength.Length;
+
+            // Copy ciphertext length
+            Buffer.BlockCopy(cipherTextLength, 0, encryptedColumnEncryptionKey, currentIndex, cipherTextLength.Length);
+            currentIndex += cipherTextLength.Length;
+
+            // Copy key path
+            Buffer.BlockCopy(masterKeyPathBytes, 0, encryptedColumnEncryptionKey, currentIndex, masterKeyPathBytes.Length);
+            currentIndex += masterKeyPathBytes.Length;
+
+            // Copy ciphertext
+            Buffer.BlockCopy(cipherText, 0, encryptedColumnEncryptionKey, currentIndex, cipherText.Length);
+            currentIndex += cipherText.Length;
+
+            // copy the signature
+            Buffer.BlockCopy(signedHash, 0, encryptedColumnEncryptionKey, currentIndex, signedHash.Length);
+
+            return encryptedColumnEncryptionKey;
+        }
+
+        /// <summary>
+        /// This function validates that the encryption algorithm is RSA_OAEP and if it is not,
+        /// then throws an exception
+        /// </summary>
+        /// <param name="encryptionAlgorithm">Asymmetric key encryptio algorithm</param>
+        /// <param name="isSystemOp">Indicates if ADO.NET calls or the customer calls the API</param>
+        private void ValidateEncryptionAlgorithm(string encryptionAlgorithm, bool isSystemOp)
+        {
+            // This validates that the encryption algorithm is RSA_OAEP
+            if (null == encryptionAlgorithm)
+            {
+                throw SQL.NullKeyEncryptionAlgorithm(isSystemOp);
+            }
+
+            if (!string.Equals(encryptionAlgorithm, RSAEncryptionAlgorithmWithOAEP, StringComparison.OrdinalIgnoreCase))
+            {
+                throw SQL.InvalidKeyEncryptionAlgorithm(encryptionAlgorithm, RSAEncryptionAlgorithmWithOAEP, isSystemOp);
+            }
+        }
+
+        /// <summary>
+        /// Checks if the CNG key path is Empty or Null (and raises exception if they are).
+        /// </summary>
+        /// <param name="masterKeyPath">keypath containing the CNG provider name and key name</param>
+        /// <param name="isSystemOp">Indicates if ADO.NET calls or the customer calls the API</param>
+        private void ValidateNonEmptyKeyPath(string masterKeyPath, bool isSystemOp)
+        {
+            if (string.IsNullOrWhiteSpace(masterKeyPath))
+            {
+                if (null == masterKeyPath)
+                {
+                    throw SQL.NullCngKeyPath(isSystemOp);
+                }
+                else
+                {
+                    throw SQL.InvalidCngPath(masterKeyPath, isSystemOp);
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Encrypt the text using specified CNG key.
+        /// </summary>
+        /// <param name="rsaCngProvider">RSA CNG Provider.</param>
+        /// <param name="columnEncryptionKey">Plain text Column Encryption Key.</param>
+        /// <returns>Returns an encrypted blob or throws an exception if there are any errors.</returns>
+        private byte[] RSAEncrypt(RSACng rsaCngProvider, byte[] columnEncryptionKey)
+        {
+            Debug.Assert(columnEncryptionKey != null);
+            Debug.Assert(rsaCngProvider != null);
+
+            return rsaCngProvider.Encrypt(columnEncryptionKey, RSAEncryptionPadding.OaepSHA1);
+        }
+
+        /// <summary>
+        /// Decrypt the text using the specified CNG key.
+        /// </summary>
+        /// <param name="rsaCngProvider">RSA CNG Provider.</param>
+        /// <param name="encryptedColumnEncryptionKey">Encrypted Column Encryption Key.</param>
+        /// <returns>Returns the decrypted plaintext Column Encryption Key or throws an exception if there are any errors.</returns>
+        private byte[] RSADecrypt(RSACng rsaCngProvider, byte[] encryptedColumnEncryptionKey)
+        {
+            Debug.Assert((encryptedColumnEncryptionKey != null) && (encryptedColumnEncryptionKey.Length != 0));
+            Debug.Assert(rsaCngProvider != null);
+
+            return rsaCngProvider.Decrypt(encryptedColumnEncryptionKey, RSAEncryptionPadding.OaepSHA1);
+        }
+
+        /// <summary>
+        /// Generates signature based on RSA PKCS#v1.5 scheme using a specified CNG Key. 
+        /// </summary>
+        /// <param name="dataToSign">Text to sign.</param>
+        /// <param name="rsaCngProvider">RSA CNG Provider.</param>
+        /// <returns>Signature</returns>
+        private byte[] RSASignHashedData(byte[] dataToSign, RSACng rsaCngProvider)
+        {
+            Debug.Assert((dataToSign != null) && (dataToSign.Length != 0));
+            Debug.Assert(rsaCngProvider != null);
+
+            return rsaCngProvider.SignData(dataToSign, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
+        }
+
+        /// <summary>
+        /// Verifies the given RSA PKCSv1.5 signature.
+        /// </summary>
+        /// <param name="dataToVerify"></param>
+        /// <param name="signature"></param>
+        /// <param name="rsaCngProvider">RSA CNG Provider.</param>
+        /// <returns>true if signature is valid, false if it is not valid</returns>
+        private bool RSAVerifySignature(byte[] dataToVerify, byte[] signature, RSACng rsaCngProvider)
+        {
+            Debug.Assert((dataToVerify != null) && (dataToVerify.Length != 0));
+            Debug.Assert((signature != null) && (signature.Length != 0));
+            Debug.Assert(rsaCngProvider != null);
+
+            return rsaCngProvider.VerifyData(dataToVerify, signature, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
+        }
+
+        /// <summary>
+        /// Gets the public Key size in bytes
+        /// </summary>
+        /// <param name="rsaCngProvider">RSA CNG Provider.</param>
+        /// <returns>Key size in bytes</returns>
+        private int GetKeySize(RSACng rsaCngProvider)
+        {
+            Debug.Assert(rsaCngProvider != null);
+
+            return rsaCngProvider.KeySize / 8; // Convert from bits to byte
+        }
+
+        /// <summary>
+        /// Creates a RSACng object from the given keyName
+        /// </summary>
+        /// <param name="keyPath"></param>
+        /// <param name="isSystemOp">Indicates if ADO.NET calls or the customer calls the API</param>
+        /// <returns></returns>
+        private RSACng CreateRSACngProvider(string keyPath, bool isSystemOp)
+        {
+            // Get CNGProvider and the KeyID
+            string cngProviderName;
+            string keyIdentifier;
+            GetCngProviderAndKeyId(keyPath, isSystemOp, out cngProviderName, out keyIdentifier);
+
+            CngProvider cngProvider = new CngProvider(cngProviderName);
+            CngKey cngKey;
+
+            try
+            {
+                cngKey = CngKey.Open(keyIdentifier, cngProvider);
+            }
+            catch (CryptographicException)
+            {
+                throw SQL.InvalidCngKey(keyPath, cngProviderName, keyIdentifier, isSystemOp);
+            }
+
+            return new RSACng(cngKey);
+        }
+
+        /// <summary>
+        /// Extracts the CNG provider and key name from the key path
+        /// </summary>
+        /// <param name="masterKeyPath">keypath in the format [CNG Provider]\[KeyName]</param>
+        /// <param name="isSystemOp">Indicates if ADO.NET calls or the customer calls the API</param>
+        /// <param name="cngProvider">CNG Provider</param>
+        /// <param name="keyIdentifier">Key identifier inside the CNG provider</param>
+        private void GetCngProviderAndKeyId(string keyPath, bool isSystemOp, out string cngProvider, out string keyIdentifier)
+        {
+            int indexOfSlash = keyPath.IndexOf(@"/");
+            if (indexOfSlash == -1)
+            {
+                throw SQL.InvalidCngPath(keyPath, isSystemOp);
+            }
+
+            cngProvider = keyPath.Substring(0, indexOfSlash);
+            keyIdentifier = keyPath.Substring(indexOfSlash + 1, keyPath.Length - (indexOfSlash + 1));
+
+            if (cngProvider.Length == 0)
+            {
+                throw SQL.EmptyCngName(keyPath, isSystemOp);
+            }
+
+            if (keyIdentifier.Length == 0)
+            {
+                throw SQL.EmptyCngKeyId(keyPath, isSystemOp);
+            }
+        }
+    }
+}
diff --git a/mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlColumnEncryptionCspProvider.cs b/mcs/class/referencesource/System.Data/System/Data/SqlClient/SqlColumnEncryptionCspProvider.cs
new file mode 100644 (file)
index 0000000..19ac621
--- /dev/null
@@ -0,0 +1,462 @@
+//------------------------------------------------------------------------------
+// <copyright file="SqlColumnEncryptionCspProvider.cs" company="Microsoft">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>
+// <owner current="true" primary="true">balnee</owner>
+// <owner current="true" primary="false">krishnib</owner>
+//------------------------------------------------------------------------------
+namespace System.Data.SqlClient
+{
+    using System;
+    using System.Text;
+    using System.Data.Common;
+    using System.Diagnostics;
+    using System.Globalization;
+    using System.Security;
+    using System.Security.Cryptography;
+    using Microsoft.Win32;
+
+    /// <summary>
+    /// Provides implementation similar to certificate store provider.
+    /// A CEK encrypted with certificate store provider should be decryptable by this provider and vice versa.
+    /// 
+    /// Envolope Format for the encrypted column encryption key  
+    ///           version + keyPathLength + ciphertextLength + keyPath + ciphertext +  signature
+    /// version: A single byte indicating the format version.
+    /// keyPathLength: Length of the keyPath.
+    /// ciphertextLength: ciphertext length
+    /// keyPath: keyPath used to encrypt the column encryption key. This is only used for troubleshooting purposes and is not verified during decryption.
+    /// ciphertext: Encrypted column encryption key
+    /// signature: Signature of the entire byte array. Signature is validated before decrypting the column encryption key.
+    /// </summary>
+    public class SqlColumnEncryptionCspProvider : SqlColumnEncryptionKeyStoreProvider
+    {
+        /// <summary>
+        /// Name for the CSP key store provider.
+        /// </summary>
+        public const string ProviderName = @"MSSQL_CSP_PROVIDER";
+
+        /// <summary>
+        /// RSA_OAEP is the only algorithm supported for encrypting/decrypting column encryption keys using this provider.
+        /// For now, we are keeping all the providers in [....].
+        /// </summary>
+        private const string RSAEncryptionAlgorithmWithOAEP = @"RSA_OAEP";
+
+        /// <summary>
+        /// Hashing algoirthm used for signing
+        /// </summary>
+        private const string HashingAlgorithm = @"SHA256";
+
+        /// <summary>
+        /// Algorithm version
+        /// </summary>
+        private readonly byte[] _version = new byte[] { 0x01 };
+
+        /// <summary>
+        /// This function uses the asymmetric key specified by the key path
+        /// and decrypts an encrypted CEK with RSA encryption algorithm.
+        /// </summary>
+        /// <param name="masterKeyPath">Complete path of an asymmetric key in CSP</param>
+        /// <param name="encryptionAlgorithm">Asymmetric Key Encryption Algorithm</param>
+        /// <param name="encryptedColumnEncryptionKey">Encrypted Column Encryption Key</param>
+        /// <returns>Plain text column encryption key</returns>
+        public override byte[] DecryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] encryptedColumnEncryptionKey)
+        {
+            // Validate the input parameters
+            ValidateNonEmptyCSPKeyPath(masterKeyPath, isSystemOp: true);
+
+            if (null == encryptedColumnEncryptionKey)
+            {
+                throw SQL.NullEncryptedColumnEncryptionKey();
+            }
+
+            if (0 == encryptedColumnEncryptionKey.Length)
+            {
+                throw SQL.EmptyEncryptedColumnEncryptionKey();
+            }
+
+            // Validate encryptionAlgorithm
+            ValidateEncryptionAlgorithm(encryptionAlgorithm, isSystemOp: true);
+
+            // Create RSA Provider with the given CSP name and key name
+            RSACryptoServiceProvider rsaProvider = CreateRSACryptoProvider(masterKeyPath, isSystemOp: true);
+
+            // Validate whether the key is RSA one or not and then get the key size
+            int keySizeInBytes = GetKeySize(rsaProvider);
+
+            // Validate and decrypt the EncryptedColumnEncryptionKey
+            // Format is 
+            //           version + keyPathLength + ciphertextLength + keyPath + ciphervtext +  signature
+            //
+            // keyPath is present in the encrypted column encryption key for identifying the original source of the asymmetric key pair and 
+            // we will not validate it against the data contained in the CMK metadata (masterKeyPath).
+
+            // Validate the version byte
+            if (encryptedColumnEncryptionKey[0] != _version[0])
+            {
+                throw SQL.InvalidAlgorithmVersionInEncryptedCEK(encryptedColumnEncryptionKey[0], _version[0]);
+            }
+
+            // Get key path length
+            int currentIndex = _version.Length;
+            UInt16 keyPathLength = BitConverter.ToUInt16(encryptedColumnEncryptionKey, currentIndex);
+            currentIndex += sizeof(UInt16);
+
+            // Get ciphertext length
+            UInt16 cipherTextLength = BitConverter.ToUInt16(encryptedColumnEncryptionKey, currentIndex);
+            currentIndex += sizeof(UInt16);
+
+            // Skip KeyPath
+            // KeyPath exists only for troubleshooting purposes and doesnt need validation.
+            currentIndex += keyPathLength;
+
+            // validate the ciphertext length
+            if (cipherTextLength != keySizeInBytes)
+            {
+                throw SQL.InvalidCiphertextLengthInEncryptedCEKCsp(cipherTextLength, keySizeInBytes, masterKeyPath);
+            }
+
+            // Validate the signature length
+            // Signature length should be same as the key side for RSA PKCSv1.5
+            int signatureLength = encryptedColumnEncryptionKey.Length - currentIndex - cipherTextLength;
+            if (signatureLength != keySizeInBytes)
+            {
+                throw SQL.InvalidSignatureInEncryptedCEKCsp(signatureLength, keySizeInBytes, masterKeyPath);
+            }
+
+            // Get ciphertext
+            byte[] cipherText = new byte[cipherTextLength];
+            Buffer.BlockCopy(encryptedColumnEncryptionKey, currentIndex, cipherText, 0, cipherText.Length);
+            currentIndex += cipherTextLength;
+
+            // Get signature
+            byte[] signature = new byte[signatureLength];
+            Buffer.BlockCopy(encryptedColumnEncryptionKey, currentIndex, signature, 0, signature.Length);
+
+            // Compute the hash to validate the signature
+            byte[] hash;
+            using (SHA256Cng sha256 = new SHA256Cng())
+            {
+                sha256.TransformFinalBlock(encryptedColumnEncryptionKey, 0, encryptedColumnEncryptionKey.Length - signature.Length);
+                hash = sha256.Hash;
+            }
+
+            Debug.Assert(hash != null, @"hash should not be null while decrypting encrypted column encryption key.");
+
+            // Validate the signature
+            if (!RSAVerifySignature(hash, signature, rsaProvider))
+            {
+                throw SQL.InvalidSignature(masterKeyPath);
+            }
+
+            // Decrypt the CEK
+            return RSADecrypt(rsaProvider, cipherText);
+        }
+
+        /// <summary>
+        /// This function uses the asymmetric key specified by the key path
+        /// and encrypts CEK with RSA encryption algorithm.
+        /// </summary>
+        /// <param name="keyPath">Complete path of an asymmetric key in AKV</param>
+        /// <param name="encryptionAlgorithm">Asymmetric Key Encryption Algorithm</param>
+        /// <param name="columnEncryptionKey">Plain text column encryption key</param>
+        /// <returns>Encrypted column encryption key</returns>
+        public override byte[] EncryptColumnEncryptionKey(string masterKeyPath, string encryptionAlgorithm, byte[] columnEncryptionKey)
+        {
+            // Validate the input parameters
+            ValidateNonEmptyCSPKeyPath(masterKeyPath, isSystemOp: false);
+
+            if (null == columnEncryptionKey)
+            {
+                throw SQL.NullColumnEncryptionKey();
+            }
+            else if (0 == columnEncryptionKey.Length)
+            {
+                throw SQL.EmptyColumnEncryptionKey();
+            }
+
+            // Validate encryptionAlgorithm
+            ValidateEncryptionAlgorithm(encryptionAlgorithm, isSystemOp: false);
+
+            // Create RSA Provider with the given CSP name and key name
+            RSACryptoServiceProvider rsaProvider = CreateRSACryptoProvider(masterKeyPath, isSystemOp: false);
+
+            // Validate whether the key is RSA one or not and then get the key size
+            int keySizeInBytes = GetKeySize(rsaProvider);
+
+            // Construct the encryptedColumnEncryptionKey
+            // Format is 
+            //          version + keyPathLength + ciphertextLength + ciphertext + keyPath + signature
+            //
+            // We currently only support one version
+            byte[] version = new byte[] { _version[0] };
+
+            // Get the Unicode encoded bytes of cultureinvariant lower case masterKeyPath
+            byte[] masterKeyPathBytes = Encoding.Unicode.GetBytes(masterKeyPath.ToLowerInvariant());
+            byte[] keyPathLength = BitConverter.GetBytes((Int16)masterKeyPathBytes.Length);
+
+            // Encrypt the plain text
+            byte[] cipherText = RSAEncrypt(rsaProvider, columnEncryptionKey);
+            byte[] cipherTextLength = BitConverter.GetBytes((Int16)cipherText.Length);
+            Debug.Assert(cipherText.Length == keySizeInBytes, @"cipherText length does not match the RSA key size");
+
+            // Compute hash
+            // SHA-2-256(version + keyPathLength + ciphertextLength + keyPath + ciphertext) 
+            byte[] hash;
+            using (SHA256Cng sha256 = new SHA256Cng())
+            {
+                sha256.TransformBlock(version, 0, version.Length, version, 0);
+                sha256.TransformBlock(keyPathLength, 0, keyPathLength.Length, keyPathLength, 0);
+                sha256.TransformBlock(cipherTextLength, 0, cipherTextLength.Length, cipherTextLength, 0);
+                sha256.TransformBlock(masterKeyPathBytes, 0, masterKeyPathBytes.Length, masterKeyPathBytes, 0);
+                sha256.TransformFinalBlock(cipherText, 0, cipherText.Length);
+                hash = sha256.Hash;
+            }
+
+            // Sign the hash
+            byte[] signedHash = RSASignHashedData(hash, rsaProvider);
+            Debug.Assert(signedHash.Length == keySizeInBytes, @"signed hash length does not match the RSA key size");
+            Debug.Assert(RSAVerifySignature(hash, signedHash, rsaProvider), @"Invalid signature of the encrypted column encryption key computed.");
+
+            // Construct the encrypted column encryption key
+            // EncryptedColumnEncryptionKey = version + keyPathLength + ciphertextLength + keyPath + ciphertext +  signature
+            int encryptedColumnEncryptionKeyLength = version.Length + cipherTextLength.Length + keyPathLength.Length + cipherText.Length + masterKeyPathBytes.Length + signedHash.Length;
+            byte[] encryptedColumnEncryptionKey = new byte[encryptedColumnEncryptionKeyLength];
+
+            // Copy version byte
+            int currentIndex = 0;
+            Buffer.BlockCopy(version, 0, encryptedColumnEncryptionKey, currentIndex, version.Length);
+            currentIndex += version.Length;
+
+            // Copy key path length
+            Buffer.BlockCopy(keyPathLength, 0, encryptedColumnEncryptionKey, currentIndex, keyPathLength.Length);
+            currentIndex += keyPathLength.Length;
+
+            // Copy ciphertext length
+            Buffer.BlockCopy(cipherTextLength, 0, encryptedColumnEncryptionKey, currentIndex, cipherTextLength.Length);
+            currentIndex += cipherTextLength.Length;
+
+            // Copy key path
+            Buffer.BlockCopy(masterKeyPathBytes, 0, encryptedColumnEncryptionKey, currentIndex, masterKeyPathBytes.Length);
+            currentIndex += masterKeyPathBytes.Length;
+
+            // Copy ciphertext
+            Buffer.BlockCopy(cipherText, 0, encryptedColumnEncryptionKey, currentIndex, cipherText.Length);
+            currentIndex += cipherText.Length;
+
+            // copy the signature
+            Buffer.BlockCopy(signedHash, 0, encryptedColumnEncryptionKey, currentIndex, signedHash.Length);
+
+            return encryptedColumnEncryptionKey;
+        }
+
+        /// <summary>
+        /// This function validates that the encryption algorithm is RSA_OAEP and if it is not,
+        /// then throws an exception
+        /// </summary>
+        /// <param name="encryptionAlgorithm">Asymmetric key encryptio algorithm</param>
+        /// <param name="isSystemOp">Indicates if ADO.NET calls or the customer calls the API</param>
+        private void ValidateEncryptionAlgorithm(string encryptionAlgorithm, bool isSystemOp)
+        {
+            // This validates that the encryption algorithm is RSA_OAEP
+            if (null == encryptionAlgorithm)
+            {
+                throw SQL.NullKeyEncryptionAlgorithm(isSystemOp);
+            }
+
+            if (string.Equals(encryptionAlgorithm, RSAEncryptionAlgorithmWithOAEP, StringComparison.OrdinalIgnoreCase) != true)
+            {
+                throw SQL.InvalidKeyEncryptionAlgorithm(encryptionAlgorithm, RSAEncryptionAlgorithmWithOAEP, isSystemOp);
+            }
+        }
+
+
+        /// <summary>
+        /// Checks if the CSP key path is Empty or Null (and raises exception if they are).
+        /// </summary>
+        /// <param name="masterKeyPath">CSP key path.</param>
+        /// <param name="isSystemOp">Indicates if ADO.NET calls or the customer calls the API</param>
+        private void ValidateNonEmptyCSPKeyPath(string masterKeyPath, bool isSystemOp)
+        {
+            if (string.IsNullOrWhiteSpace(masterKeyPath))
+            {
+                if (null == masterKeyPath)
+                {
+                    throw SQL.NullCspKeyPath(isSystemOp);
+                }
+                else
+                {
+                    throw SQL.InvalidCspPath(masterKeyPath, isSystemOp);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Encrypt the text using specified CSP key.
+        /// </summary>
+        /// <param name="masterKeyPath">CSP key path.</param>
+        /// <param name="encryptionAlgorithm">Encryption Algorithm.</param>
+        /// <param name="columnEncryptionKey">Plain text Column Encryption Key.</param>
+        /// <returns>Returns an encrypted blob or throws an exception if there are any errors.</returns>
+        private byte[] RSAEncrypt(RSACryptoServiceProvider rscp, byte[] columnEncryptionKey)
+        {
+            Debug.Assert(columnEncryptionKey != null);
+            Debug.Assert(rscp != null);
+
+            return rscp.Encrypt(columnEncryptionKey, fOAEP: true);
+        }
+
+        /// <summary>
+        /// Decrypt the text using specified CSP key.
+        /// </summary>
+        /// <param name="masterKeyPath">CSP key url.</param>
+        /// <param name="encryptionAlgorithm">Encryption Algorithm.</param>
+        /// <param name="encryptedColumnEncryptionKey">Encrypted Column Encryption Key.</param>
+        /// <returns>Returns the decrypted plaintext Column Encryption Key or throws an exception if there are any errors.</returns>
+        private byte[] RSADecrypt(RSACryptoServiceProvider rscp, byte[] encryptedColumnEncryptionKey)
+        {
+            Debug.Assert((encryptedColumnEncryptionKey != null) && (encryptedColumnEncryptionKey.Length != 0));
+            Debug.Assert(rscp != null);
+
+            return rscp.Decrypt(encryptedColumnEncryptionKey, fOAEP: true);
+        }
+
+        /// <summary>
+        /// Generates signature based on RSA PKCS#v1.5 scheme using a specified CSP Key URL. 
+        /// </summary>
+        /// <param name="dataToSign">Text to sign.</param>
+        /// <param name="rscp">RSA Provider with a given key</param>
+        /// <returns>Signature</returns>
+        private byte[] RSASignHashedData(byte[] dataToSign, RSACryptoServiceProvider rscp)
+        {
+            Debug.Assert((dataToSign != null) && (dataToSign.Length != 0));
+            Debug.Assert(rscp != null);
+
+            return rscp.SignData(dataToSign, HashingAlgorithm);
+        }
+
+        /// <summary>
+        /// Verifies the given RSA PKCSv1.5 signature.
+        /// </summary>
+        /// <param name="dataToVerify"></param>
+        /// <param name="signature"></param>
+        /// <param name="rscp">RSA Provider with a given key</param>
+        /// <returns>true if signature is valid, false if it is not valid</returns>
+        private bool RSAVerifySignature(byte[] dataToVerify, byte[] signature, RSACryptoServiceProvider rscp)
+        {
+            Debug.Assert((dataToVerify != null) && (dataToVerify.Length != 0));
+            Debug.Assert((signature != null) && (signature.Length != 0));
+            Debug.Assert(rscp != null);
+
+            return rscp.VerifyData(dataToVerify, HashingAlgorithm, signature);
+        }
+
+        /// <summary>
+        /// Gets the public Key size in bytes
+        /// </summary>
+        /// <param name="rscp">RSA Provider with a given key</param>
+        /// <returns>Key size in bytes</returns>
+        private int GetKeySize(RSACryptoServiceProvider rscp)
+        {
+            Debug.Assert(rscp != null);
+
+            return rscp.KeySize / 8;
+        }
+
+        /// <summary>
+        /// Creates a RSACryptoServiceProvider from the given key path which contains both CSP name and key name
+        /// </summary>
+        /// <param name="keyPath">key path in the format of [CAPI provider name]\[key name]</param>
+        /// <param name="isSystemOp">Indicates if ADO.NET calls or the customer calls the API</param>
+        /// <returns></returns>
+        private RSACryptoServiceProvider CreateRSACryptoProvider(string keyPath, bool isSystemOp)
+        {
+            // Get CNGProvider and the KeyID
+            string cspProviderName;
+            string keyName;
+            GetCspProviderAndKeyName(keyPath, isSystemOp, out cspProviderName, out keyName);
+
+            // Verify the existence of CSP and then get the provider type
+            int providerType = GetProviderType(cspProviderName, keyPath, isSystemOp);
+
+            // Create a new instance of CspParameters for an RSA container.
+            CspParameters cspParams = new CspParameters(providerType, cspProviderName, keyName);
+            cspParams.Flags = CspProviderFlags.UseExistingKey;
+
+            RSACryptoServiceProvider rscp = null;
+
+            try
+            {
+                //Create a new instance of RSACryptoServiceProvider
+                rscp = new RSACryptoServiceProvider(cspParams);
+            }
+            catch (CryptographicException e)
+            {
+                const int KEYSETDOESNOTEXIST = -2146893802;
+                if (e.HResult == KEYSETDOESNOTEXIST)
+                {
+                    // Key does not exist
+                    throw SQL.InvalidCspKeyIdentifier(keyName, keyPath, isSystemOp);
+                }
+                else
+                {
+                    // bubble up the exception
+                    throw;
+                }
+            }
+
+            return rscp;
+        }
+
+        /// <summary>
+        /// Extracts the CSP provider name and key name from the given key path
+        /// </summary>
+        /// <param name="keyPath">key path in the format of [CSP provider name]\[key name]</param>
+        /// <param name="isSystemOp">Indicates if ADO.NET calls or the customer calls the API</param>
+        /// <param name="cspProviderName">output containing the CSP provider name</param>
+        /// <param name="keyIdentifier">output containing the key name</param>
+        private void GetCspProviderAndKeyName(string keyPath, bool isSystemOp, out string cspProviderName, out string keyIdentifier)
+        {
+            int indexOfSlash = keyPath.IndexOf(@"/");
+            if (indexOfSlash == -1)
+            {
+                throw SQL.InvalidCspPath(keyPath, isSystemOp);
+            }
+
+            cspProviderName = keyPath.Substring(0, indexOfSlash);
+            keyIdentifier = keyPath.Substring(indexOfSlash + 1, keyPath.Length - (indexOfSlash + 1));
+
+            if (cspProviderName.Length == 0)
+            {
+                throw SQL.EmptyCspName(keyPath, isSystemOp);
+            }
+
+            if (keyIdentifier.Length == 0)
+            {
+                throw SQL.EmptyCspKeyId(keyPath, isSystemOp);
+            }
+        }
+
+        /// <summary>
+        /// Gets the provider type from a given CAPI provider name
+        /// </summary>
+        /// <param name="providerName">CAPI provider name</param>
+        /// <param name="keyPath">key path in the format of [CSP provider name]\[key name]</param>
+        /// <param name="isSystemOp">Indicates if ADO.NET calls or the customer calls the API</param>
+        /// <returns></returns>
+        private int GetProviderType(string providerName, string keyPath, bool isSystemOp)
+        {
+            string keyName = String.Format(@"SOFTWARE\Microsoft\Cryptography\Defaults\Provider\{0}", providerName);
+            RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName);
+            if (key == null)
+            {
+                throw SQL.InvalidCspName(providerName, keyPath, isSystemOp);
+            }
+
+            int providerType = (int)key.GetValue(@"Type");
+            key.Close();
+
+            return providerType;
+        }
+    }
+}
index 3e247da7d86d809c56dcc2f50edad923774c8ac8..2e560dbf344a2a5ef4577863f3342dc13d2498de 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlCommand.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -485,7 +485,7 @@ namespace System.Data.SqlClient {
                     }
                 }
 
-                _activeConnection = value; // 
+                _activeConnection = value; // UNDONE: Designers need this setter.  Should we block other scenarios?
 
                 Bid.Trace("<sc.SqlCommand.set_Connection|API> %d#, %d#\n", ObjectID, ((null != value) ? value.ObjectID : -1));
             }
@@ -1898,7 +1898,7 @@ namespace System.Data.SqlClient {
         }
 
         internal SqlDataReader ExecuteReader(CommandBehavior behavior, string method) {
-            SqlConnection.ExecutePermission.Demand(); // 
+            SqlConnection.ExecutePermission.Demand(); // TODO: Need to move this to public methods...
 
             // Reset _pendingCancel upon entry into any Execute - used to synchronize state
             // between entry into Execute* API and the thread obtaining the stateObject.
@@ -4163,7 +4163,7 @@ namespace System.Data.SqlClient {
                 }
 
                 if (null != eventStream) {
-                    eventStream.Close( EventSink );     // 
+                    eventStream.Close( EventSink );     // UNDONE: should cancel instead!
                 }
 
                 if (requestExecutor != null) {
@@ -5339,8 +5339,8 @@ namespace System.Data.SqlClient {
                         }
                     }
 
-                    // 
-
+                    // bug 49497, if the user specifies a 0-sized parameter for a variable len field
+                    // pass over max size (8000 bytes or 4000 characters for wide types)
                     if (0 == size)
                         size = mt.IsSizeInCharacters ? (TdsEnums.MAXSIZE >> 1) : TdsEnums.MAXSIZE;
 
index 7563b0c082c5fc00459745a2eac2cb7b336d00bb..476000e80a5d78309e127982a39d3833c48e7427 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlCommandBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 913a30f1c2a01faf3939b0750721bdca9fa310ab..b15a5353bb29ff754b455325a51618ddf3712634 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlBatchCommand.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index f169a86ecd3094c590821a201e3cc3f031d774a2..0ce4dbb08763054308721ed6139b428134b0cb54 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlConnection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.Data.DataSetExtensions, PublicKey="+AssemblyRef.EcmaPublicKeyFull)] // DevDiv Bugs 92166
@@ -52,7 +52,9 @@ namespace System.Data.SqlClient
         static private readonly Dictionary<string, SqlColumnEncryptionKeyStoreProvider> _SystemColumnEncryptionKeyStoreProviders
             = new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>(capacity: 1, comparer: StringComparer.OrdinalIgnoreCase)
         {
-            {SqlColumnEncryptionCertificateStoreProvider.ProviderName, new SqlColumnEncryptionCertificateStoreProvider()}
+            {SqlColumnEncryptionCertificateStoreProvider.ProviderName, new SqlColumnEncryptionCertificateStoreProvider()},
+            {SqlColumnEncryptionCngProvider.ProviderName, new SqlColumnEncryptionCngProvider()},
+            {SqlColumnEncryptionCspProvider.ProviderName, new SqlColumnEncryptionCspProvider()}
         };
 
         /// <summary>
@@ -234,6 +236,11 @@ namespace System.Data.SqlClient
         internal WindowsIdentity _lastIdentity;
         internal WindowsIdentity _impersonateIdentity;
         private int _reconnectCount;
+
+        // Transient Fault handling flag. This is needed to convey to the downstream mechanism of connection establishment, if Transient Fault handling should be used or not
+        // The downstream handling of Connection open is the same for idle connection resiliency. Currently we want to apply transient fault handling only to the connections opened
+        // using SqlConnection.Open() method. 
+        internal bool _applyTransientFaultHandling = false;
        
         public SqlConnection(string connectionString) : this(connectionString, null) {
         }
@@ -1061,10 +1068,10 @@ namespace System.Data.SqlClient
             _accessToken = null;
 
             if (!disposing) {
-                // DevDiv2 
-
-
-
+                // DevDiv2 Bug 457934:SQLConnection leaks when not disposed
+                // http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/457934
+                // For non-pooled connections we need to make sure that if the SqlConnection was not closed, then we release the GCHandle on the stateObject to allow it to be GCed
+                // For pooled connections, we will rely on the pool reclaiming the connection
                 var innerConnection = (InnerConnection as SqlInternalConnectionTds);
                 if ((innerConnection != null) && (!innerConnection.ConnectionOptions.Pooling)) {
                     var parser = innerConnection.Parser;
@@ -1425,6 +1432,8 @@ namespace System.Data.SqlClient
 
         private bool TryOpen(TaskCompletionSource<DbConnectionInternal> retry) {
             SqlConnectionString connectionOptions = (SqlConnectionString)ConnectionOptions;
+            
+            _applyTransientFaultHandling = (retry == null && connectionOptions != null && connectionOptions.ConnectRetryCount > 0 );
 
             if (connectionOptions != null &&
                 (connectionOptions.Authentication == SqlAuthenticationMethod.SqlPassword || connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryPassword) &&
@@ -1635,13 +1644,13 @@ namespace System.Data.SqlClient
         internal void OnError(SqlException exception, bool breakConnection, Action<Action> wrapCloseInAction) {
             Debug.Assert(exception != null && exception.Errors.Count != 0, "SqlConnection: OnError called with null or empty exception!");
 
-            // 
-
-
-
-
-
-
+            // Bug fix - MDAC 49022 - connection open after failure...  Problem was parser was passing
+            // Open as a state - because the parser's connection to the netlib was open.  We would
+            // then set the connection state to the parser's state - which is not correct.  The only
+            // time the connection state should change to what is passed in to this function is if
+            // the parser is broken, then we should be closed.  Changed to passing in
+            // TdsParserState, not ConnectionState.
+            // fixed by [....]
 
             if (breakConnection && (ConnectionState.Open == State)) {
 
@@ -1951,6 +1960,7 @@ namespace System.Data.SqlClient
 
                 SqlConnectionString connectionOptions = SqlConnectionFactory.FindSqlConnectionOptions(key);
                 if (connectionOptions.IntegratedSecurity || connectionOptions.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated) {
+
                     throw SQL.ChangePasswordConflictsWithSSPI();
                 }
                 if (! ADP.IsEmpty(connectionOptions.AttachDBFilename)) {
index a80e91102172db944c8ad5fad7a26e880c0b6af8..d1b96a31b51bd353e12b7383dd02ff100fd801cb 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlConnectionFactory.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient
@@ -41,17 +41,19 @@ namespace System.Data.SqlClient
             SqlConnectionPoolKey key = (SqlConnectionPoolKey) poolKey;
             SqlInternalConnection result = null;
             SessionData recoverySessionData = null;
+            SqlConnection sqlOwningConnection = owningConnection as SqlConnection;
+            bool applyTransientFaultHandling = sqlOwningConnection != null ? sqlOwningConnection._applyTransientFaultHandling : false;
 
             SqlConnectionString userOpt = null;
             if (userOptions != null) {
                 userOpt = (SqlConnectionString)userOptions;
             }
-            else if (owningConnection != null) {
-                userOpt = (SqlConnectionString)(((SqlConnection)owningConnection).UserConnectionOptions);                
+            else if (sqlOwningConnection != null) {
+                userOpt = (SqlConnectionString)(sqlOwningConnection.UserConnectionOptions);                
             }
 
-            if (owningConnection != null) {
-                recoverySessionData = ((SqlConnection)owningConnection)._recoverySessionData;
+            if (sqlOwningConnection != null) {
+                recoverySessionData = sqlOwningConnection._recoverySessionData;
             }
 
             if (opt.ContextConnection) {
@@ -90,7 +92,7 @@ namespace System.Data.SqlClient
 
 
                             SqlConnectionString sseopt = new SqlConnectionString(opt, opt.DataSource, true /* user instance=true */, false /* set Enlist = false */);
-                            sseConnection = new SqlInternalConnectionTds(identity, sseopt, key.Credential, null, "", null, false);
+                            sseConnection = new SqlInternalConnectionTds(identity, sseopt, key.Credential, null, "", null, false, applyTransientFaultHandling: applyTransientFaultHandling);
                             // NOTE: Retrieve <UserInstanceName> here. This user instance name will be used below to connect to the Sql Express User Instance.
                             instanceName = sseConnection.InstanceName;
 
@@ -122,7 +124,7 @@ namespace System.Data.SqlClient
                     opt = new SqlConnectionString(opt, instanceName, false /* user instance=false */, null /* do not modify the Enlist value */);
                     poolGroupProviderInfo = null; // null so we do not pass to constructor below...
                 }
-                result = new SqlInternalConnectionTds(identity, opt, key.Credential, poolGroupProviderInfo, "", null, redirectedUserInstance, userOpt, recoverySessionData, pool, key.AccessToken);
+                result = new SqlInternalConnectionTds(identity, opt, key.Credential, poolGroupProviderInfo, "", null, redirectedUserInstance, userOpt, recoverySessionData, pool, key.AccessToken, applyTransientFaultHandling: applyTransientFaultHandling);
             }
             return result;
         }
index 157865b45ab96ab5381b9cf100b08459a9ffd5d3..044682c672c056d933483b3e3d66a2b53aa8f9c0 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlConnectionPoolGroupProviderInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient
index ccb98a2b8ea1043a9ad12b24ad0ac127706c007d..e3fb5a7dd711d2cbfa236ebc220bb51f5725dfef 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="ConnectionPoolKey.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient
index 3f9e5ccee0d1af93a58c26584c9c63df7e00d6c6..d5ff005e6714e4ad8f3516125258049a161db3c2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SqlConnectionPoolProviderInfo.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 794cc62baa2583c6e9d101cbecf377cd272e1a69..85ed1b7bbf0f70519c0eb866a1584df11633861a 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlConnectionString.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -27,36 +27,37 @@ namespace System.Data.SqlClient {
 
         internal static class DEFAULT {
             internal const  ApplicationIntent ApplicationIntent = DbConnectionStringDefaults.ApplicationIntent;
-            internal const  string Application_Name       = TdsEnums.SQL_PROVIDER_NAME;
-            internal const  bool   Asynchronous           = false;
-            internal const  string AttachDBFilename       = "";
-            internal const  int    Connect_Timeout        = ADP.DefaultConnectionTimeout;
-            internal const  bool   Connection_Reset       = true;
-            internal const  bool   Context_Connection     = false;
-            internal const  string Current_Language       = "";
-            internal const  string Data_Source            = "";
-            internal const  bool   Encrypt                = false;
-            internal const  bool   Enlist                 = true;
-            internal const  string FailoverPartner        = "";
-            internal const  string Initial_Catalog        = "";
-            internal const  bool   Integrated_Security    = false;
-            internal const  int    Load_Balance_Timeout   = 0; // default of 0 means don't use
-            internal const  bool   MARS                   = false;
-            internal const  int    Max_Pool_Size          = 100;
-            internal const  int    Min_Pool_Size          = 0;
-            internal const  bool   MultiSubnetFailover    = DbConnectionStringDefaults.MultiSubnetFailover;
-            internal const  string Network_Library        = "";
-            internal const  int    Packet_Size            = 8000;
-            internal const  string Password               = "";
-            internal const  bool   Persist_Security_Info  = false;
-            internal const  bool   Pooling                = true;
-            internal const  bool   TrustServerCertificate = false;
-            internal const  string Type_System_Version    = "";
-            internal const  string User_ID                = "";
-            internal const  bool   User_Instance          = false;
-            internal const  bool   Replication            = false;
-            internal const  int    Connect_Retry_Count    = 1;
-            internal const  int    Connect_Retry_Interval = 10;
+            internal const  string Application_Name               = TdsEnums.SQL_PROVIDER_NAME;
+            internal const  bool   Asynchronous                   = false;
+            internal const  string AttachDBFilename               = "";
+            internal const  int    Connect_Timeout                = ADP.DefaultConnectionTimeout;
+            internal const  bool   Connection_Reset               = true;
+            internal const  bool   Context_Connection             = false;
+            internal const  string Current_Language               = "";
+            internal const  string Data_Source                    = "";
+            internal const  bool   Encrypt                        = false;
+            internal const  bool   Enlist                         = true;
+            internal const  string FailoverPartner                = "";
+            internal const  string Initial_Catalog                = "";
+            internal const  bool   Integrated_Security            = false;
+            internal const  int    Load_Balance_Timeout           = 0; // default of 0 means don't use
+            internal const  bool   MARS                           = false;
+            internal const  int    Max_Pool_Size                  = 100;
+            internal const  int    Min_Pool_Size                  = 0;
+            internal const  bool   MultiSubnetFailover            = DbConnectionStringDefaults.MultiSubnetFailover;
+            internal const  bool   TransparentNetworkIPResolution = DbConnectionStringDefaults.TransparentNetworkIPResolution;
+            internal const  string Network_Library                = "";
+            internal const  int    Packet_Size                    = 8000;
+            internal const  string Password                       = "";
+            internal const  bool   Persist_Security_Info          = false;
+            internal const  bool   Pooling                        = true;
+            internal const  bool   TrustServerCertificate         = false;
+            internal const  string Type_System_Version            = "";
+            internal const  string User_ID                        = "";
+            internal const  bool   User_Instance                  = false;
+            internal const  bool   Replication                    = false;
+            internal const  int    Connect_Retry_Count            = 1;
+            internal const  int    Connect_Retry_Interval         = 10;
             internal static readonly SqlAuthenticationMethod Authentication = SqlAuthenticationMethod.NotSpecified;
             internal static readonly SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting = SqlConnectionColumnEncryptionSetting.Disabled;
         }
@@ -64,41 +65,43 @@ namespace System.Data.SqlClient {
         // SqlConnection ConnectionString Options
         // keys must be lowercase!
         internal static class KEY {
-            internal const string ApplicationIntent      = "applicationintent";
-            internal const string Application_Name       = "application name";
-            internal const string AsynchronousProcessing = "asynchronous processing";
-            internal const string AttachDBFilename       = "attachdbfilename";
-            internal const string ColumnEncryptionSetting = "column encryption setting";
-            internal const string Connect_Timeout        = "connect timeout";
-            internal const string Connection_Reset       = "connection reset";
-            internal const string Context_Connection     = "context connection";
-            internal const string Current_Language       = "current language";
-            internal const string Data_Source            = "data source";
-            internal const string Encrypt                = "encrypt";
-            internal const string Enlist                 = "enlist";
-            internal const string FailoverPartner        = "failover partner";
-            internal const string Initial_Catalog        = "initial catalog";
-            internal const string Integrated_Security    = "integrated security";
-            internal const string Load_Balance_Timeout   = "load balance timeout";
-            internal const string MARS                   = "multipleactiveresultsets";
-            internal const string Max_Pool_Size          = "max pool size";
-            internal const string Min_Pool_Size          = "min pool size";
-            internal const string MultiSubnetFailover    = "multisubnetfailover";
-            internal const string Network_Library        = "network library";
-            internal const string Packet_Size            = "packet size";
-            internal const string Password               = "password";
-            internal const string Persist_Security_Info  = "persist security info";
-            internal const string Pooling                = "pooling";
-            internal const string TransactionBinding     = "transaction binding";
-            internal const string TrustServerCertificate = "trustservercertificate";
-            internal const string Type_System_Version    = "type system version";
-            internal const string User_ID                = "user id";
-            internal const string User_Instance          = "user instance";
-            internal const string Workstation_Id         = "workstation id";
-            internal const string Replication            = "replication";
-            internal const string Connect_Retry_Count    = "connectretrycount";
-            internal const string Connect_Retry_Interval = "connectretryinterval";
-            internal const string Authentication         = "authentication";
+            internal const string ApplicationIntent                                    = "applicationintent";
+            internal const string Application_Name                                     = "application name";
+            internal const string AsynchronousProcessing                       = "asynchronous processing";
+            internal const string AttachDBFilename                                     = "attachdbfilename";
+            internal const string ColumnEncryptionSetting                      = "column encryption setting";
+            internal const string Connect_Timeout                                      = "connect timeout";
+            internal const string Connection_Reset                                     = "connection reset";
+            internal const string Context_Connection                           = "context connection";
+            internal const string Current_Language                                     = "current language";
+            internal const string Data_Source                                          = "data source";
+            internal const string Encrypt                                                      = "encrypt";
+            internal const string Enlist                                                       = "enlist";
+            internal const string FailoverPartner                                      = "failover partner";
+            internal const string Initial_Catalog                                      = "initial catalog";
+            internal const string Integrated_Security                          = "integrated security";
+            internal const string Load_Balance_Timeout                         = "load balance timeout";
+            internal const string MARS                                                         = "multipleactiveresultsets";
+            internal const string Max_Pool_Size                                                = "max pool size";
+            internal const string Min_Pool_Size                                                = "min pool size";
+            internal const string MultiSubnetFailover                          = "multisubnetfailover";
+            internal const string TransparentNetworkIPResolution       = "transparentnetworkipresolution";
+            internal const string Network_Library                                      = "network library";
+            internal const string Packet_Size                                          = "packet size";
+            internal const string Password                                                     = "password";
+            internal const string Persist_Security_Info                                = "persist security info";
+            internal const string Pooling                                                      = "pooling";
+            internal const string TransactionBinding                           = "transaction binding";
+            internal const string TrustServerCertificate                       = "trustservercertificate";
+            internal const string Type_System_Version                          = "type system version";
+            internal const string User_ID                                                      = "user id";
+            internal const string User_Instance                                                = "user instance";
+            internal const string Workstation_Id                                       = "workstation id";
+            internal const string Replication                                          = "replication";
+            internal const string Connect_Retry_Count                          = "connectretrycount";
+            internal const string Connect_Retry_Interval                       = "connectretryinterval";
+            internal const string Authentication                                       = "authentication";
+
         }
 
         // Constant for the number of duplicate options in the connnection string
@@ -198,6 +201,7 @@ namespace System.Data.SqlClient {
         private readonly bool _replication;
         private readonly bool _userInstance;
         private readonly bool _multiSubnetFailover;
+        private readonly bool _transparentNetworkIPResolution;
         private readonly SqlAuthenticationMethod _authType;
         private readonly SqlConnectionColumnEncryptionSetting _columnEncryptionSetting;
 
@@ -253,6 +257,7 @@ namespace System.Data.SqlClient {
             _replication         = ConvertValueToBoolean(KEY.Replication,           DEFAULT.Replication);
             _userInstance        = ConvertValueToBoolean(KEY.User_Instance,         DEFAULT.User_Instance);
             _multiSubnetFailover = ConvertValueToBoolean(KEY.MultiSubnetFailover,   DEFAULT.MultiSubnetFailover);
+            _transparentNetworkIPResolution = ConvertValueToBoolean(KEY.TransparentNetworkIPResolution, DEFAULT.TransparentNetworkIPResolution);
 
             _connectTimeout     = ConvertValueToInt32(KEY.Connect_Timeout,       DEFAULT.Connect_Timeout);
             _loadBalanceTimeout = ConvertValueToInt32(KEY.Load_Balance_Timeout,  DEFAULT.Load_Balance_Timeout);
@@ -478,37 +483,39 @@ namespace System.Data.SqlClient {
                 _enlist = connectionOptions._enlist;
             }
             
-            _mars                     = connectionOptions._mars;
-            _persistSecurityInfo      = connectionOptions._persistSecurityInfo;
-            _pooling                  = connectionOptions._pooling;
-            _replication              = connectionOptions._replication;
-            _userInstance             = userInstance;
-            _connectTimeout           = connectionOptions._connectTimeout;
-            _loadBalanceTimeout       = connectionOptions._loadBalanceTimeout;
-            _maxPoolSize              = connectionOptions._maxPoolSize;
-            _minPoolSize              = connectionOptions._minPoolSize;
-            _multiSubnetFailover      = connectionOptions._multiSubnetFailover;
-            _packetSize               = connectionOptions._packetSize;
-            _applicationName          = connectionOptions._applicationName;
-            _attachDBFileName         = connectionOptions._attachDBFileName;
-            _currentLanguage          = connectionOptions._currentLanguage;
-            _dataSource               = dataSource;
-            _localDBInstance          = LocalDBAPI.GetLocalDbInstanceNameFromServerName(_dataSource);
-            _failoverPartner          = connectionOptions._failoverPartner;
-            _initialCatalog           = connectionOptions._initialCatalog;
-            _password                 = connectionOptions._password;
-            _userID                   = connectionOptions._userID;
-            _networkLibrary           = connectionOptions._networkLibrary;
-            _workstationId            = connectionOptions._workstationId;
-            _expandedAttachDBFilename = connectionOptions._expandedAttachDBFilename;
-            _typeSystemVersion        = connectionOptions._typeSystemVersion;
-            _typeSystemAssemblyVersion =connectionOptions._typeSystemAssemblyVersion;
-            _transactionBinding       = connectionOptions._transactionBinding;
-            _applicationIntent        = connectionOptions._applicationIntent;
-            _connectRetryCount        = connectionOptions._connectRetryCount;
-            _connectRetryInterval     = connectionOptions._connectRetryInterval;
-            _authType                 = connectionOptions._authType;
-            _columnEncryptionSetting = connectionOptions._columnEncryptionSetting;
+            _mars                           = connectionOptions._mars;
+            _persistSecurityInfo            = connectionOptions._persistSecurityInfo;
+            _pooling                        = connectionOptions._pooling;
+            _replication                    = connectionOptions._replication;
+            _userInstance                   = userInstance;
+            _connectTimeout                 = connectionOptions._connectTimeout;
+            _loadBalanceTimeout             = connectionOptions._loadBalanceTimeout;
+            _maxPoolSize                    = connectionOptions._maxPoolSize;
+            _minPoolSize                    = connectionOptions._minPoolSize;
+            _multiSubnetFailover            = connectionOptions._multiSubnetFailover;
+            _transparentNetworkIPResolution = connectionOptions._transparentNetworkIPResolution;
+            _packetSize                     = connectionOptions._packetSize;
+            _applicationName                = connectionOptions._applicationName;
+            _attachDBFileName               = connectionOptions._attachDBFileName;
+            _currentLanguage                = connectionOptions._currentLanguage;
+            _dataSource                     = dataSource;
+            _localDBInstance                = LocalDBAPI.GetLocalDbInstanceNameFromServerName(_dataSource);
+            _failoverPartner                = connectionOptions._failoverPartner;
+            _initialCatalog                 = connectionOptions._initialCatalog;
+            _password                       = connectionOptions._password;
+            _userID                         = connectionOptions._userID;
+            _networkLibrary                 = connectionOptions._networkLibrary;
+            _workstationId                  = connectionOptions._workstationId;
+            _expandedAttachDBFilename       = connectionOptions._expandedAttachDBFilename;
+            _typeSystemVersion              = connectionOptions._typeSystemVersion;
+            _typeSystemAssemblyVersion      = connectionOptions._typeSystemAssemblyVersion;
+            _transactionBinding             = connectionOptions._transactionBinding;
+            _applicationIntent              = connectionOptions._applicationIntent;
+            _connectRetryCount              = connectionOptions._connectRetryCount;
+            _connectRetryInterval           = connectionOptions._connectRetryInterval;
+            _authType                       = connectionOptions._authType;
+            _columnEncryptionSetting        = connectionOptions._columnEncryptionSetting;
+
             ValidateValueLength(_dataSource, TdsEnums.MAXLEN_SERVERNAME, KEY.Data_Source);
         }
 
@@ -527,6 +534,7 @@ namespace System.Data.SqlClient {
         internal bool Enlist { get { return _enlist; } }
         internal bool MARS { get { return _mars; } }
         internal bool MultiSubnetFailover { get { return _multiSubnetFailover; } }
+        internal bool TransparentNetworkIPResolution { get { return _transparentNetworkIPResolution; } }
         internal SqlAuthenticationMethod Authentication { get { return _authType; } }
         internal SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting { get { return _columnEncryptionSetting; } }
         internal bool PersistSecurityInfo { get { return _persistSecurityInfo; } }
@@ -608,63 +616,64 @@ namespace System.Data.SqlClient {
             Hashtable hash = _sqlClientSynonyms;
             if (null == hash) {
                 hash = new Hashtable(SqlConnectionStringBuilder.KeywordsCount + SynonymCount);
-                hash.Add(KEY.ApplicationIntent,      KEY.ApplicationIntent);
-                hash.Add(KEY.Application_Name,       KEY.Application_Name);
-                hash.Add(KEY.AsynchronousProcessing, KEY.AsynchronousProcessing);
-                hash.Add(KEY.AttachDBFilename,       KEY.AttachDBFilename);
-                hash.Add(KEY.Connect_Timeout,        KEY.Connect_Timeout);
-                hash.Add(KEY.Connection_Reset,       KEY.Connection_Reset);
-                hash.Add(KEY.Context_Connection,     KEY.Context_Connection);
-                hash.Add(KEY.Current_Language,       KEY.Current_Language);
-                hash.Add(KEY.Data_Source,            KEY.Data_Source);
-                hash.Add(KEY.Encrypt,                KEY.Encrypt);
-                hash.Add(KEY.Enlist,                 KEY.Enlist);
-                hash.Add(KEY.FailoverPartner,        KEY.FailoverPartner);
-                hash.Add(KEY.Initial_Catalog,        KEY.Initial_Catalog);
-                hash.Add(KEY.Integrated_Security,    KEY.Integrated_Security);
-                hash.Add(KEY.Load_Balance_Timeout,   KEY.Load_Balance_Timeout);
-                hash.Add(KEY.MARS,                   KEY.MARS);
-                hash.Add(KEY.Max_Pool_Size,          KEY.Max_Pool_Size);
-                hash.Add(KEY.Min_Pool_Size,          KEY.Min_Pool_Size);
-                hash.Add(KEY.MultiSubnetFailover,    KEY.MultiSubnetFailover);
-                hash.Add(KEY.Network_Library,        KEY.Network_Library);
-                hash.Add(KEY.Packet_Size,            KEY.Packet_Size);
-                hash.Add(KEY.Password,               KEY.Password);
-                hash.Add(KEY.Persist_Security_Info,  KEY.Persist_Security_Info);
-                hash.Add(KEY.Pooling,                KEY.Pooling);
-                hash.Add(KEY.Replication,            KEY.Replication);
-                hash.Add(KEY.TrustServerCertificate, KEY.TrustServerCertificate);
-                hash.Add(KEY.TransactionBinding,     KEY.TransactionBinding);
-                hash.Add(KEY.Type_System_Version,    KEY.Type_System_Version);
-                hash.Add(KEY.ColumnEncryptionSetting, KEY.ColumnEncryptionSetting);
-                hash.Add(KEY.User_ID,                KEY.User_ID);
-                hash.Add(KEY.User_Instance,          KEY.User_Instance);
-                hash.Add(KEY.Workstation_Id,         KEY.Workstation_Id);
-                hash.Add(KEY.Connect_Retry_Count,    KEY.Connect_Retry_Count);
-                hash.Add(KEY.Connect_Retry_Interval, KEY.Connect_Retry_Interval);
-                hash.Add(KEY.Authentication,         KEY.Authentication);
-
-                hash.Add(SYNONYM.APP,                 KEY.Application_Name);
-                hash.Add(SYNONYM.Async,               KEY.AsynchronousProcessing);
-                hash.Add(SYNONYM.EXTENDED_PROPERTIES, KEY.AttachDBFilename);
-                hash.Add(SYNONYM.INITIAL_FILE_NAME,   KEY.AttachDBFilename);
-                hash.Add(SYNONYM.CONNECTION_TIMEOUT,  KEY.Connect_Timeout);
-                hash.Add(SYNONYM.TIMEOUT,             KEY.Connect_Timeout);
-                hash.Add(SYNONYM.LANGUAGE,            KEY.Current_Language);
-                hash.Add(SYNONYM.ADDR,                KEY.Data_Source);
-                hash.Add(SYNONYM.ADDRESS,             KEY.Data_Source);
-                hash.Add(SYNONYM.NETWORK_ADDRESS,     KEY.Data_Source);
-                hash.Add(SYNONYM.SERVER,              KEY.Data_Source);
-                hash.Add(SYNONYM.DATABASE,            KEY.Initial_Catalog);
-                hash.Add(SYNONYM.TRUSTED_CONNECTION,  KEY.Integrated_Security);
-                hash.Add(SYNONYM.Connection_Lifetime, KEY.Load_Balance_Timeout);
-                hash.Add(SYNONYM.NET,                 KEY.Network_Library);
-                hash.Add(SYNONYM.NETWORK,             KEY.Network_Library);
-                hash.Add(SYNONYM.Pwd,                 KEY.Password);
-                hash.Add(SYNONYM.PERSISTSECURITYINFO, KEY.Persist_Security_Info);
-                hash.Add(SYNONYM.UID,                 KEY.User_ID);
-                hash.Add(SYNONYM.User,                KEY.User_ID);
-                hash.Add(SYNONYM.WSID,                KEY.Workstation_Id);
+                hash.Add(KEY.ApplicationIntent,              KEY.ApplicationIntent);
+                hash.Add(KEY.Application_Name,               KEY.Application_Name);
+                hash.Add(KEY.AsynchronousProcessing,         KEY.AsynchronousProcessing);
+                hash.Add(KEY.AttachDBFilename,               KEY.AttachDBFilename);
+                hash.Add(KEY.Connect_Timeout,                KEY.Connect_Timeout);
+                hash.Add(KEY.Connection_Reset,               KEY.Connection_Reset);
+                hash.Add(KEY.Context_Connection,             KEY.Context_Connection);
+                hash.Add(KEY.Current_Language,               KEY.Current_Language);
+                hash.Add(KEY.Data_Source,                    KEY.Data_Source);
+                hash.Add(KEY.Encrypt,                        KEY.Encrypt);
+                hash.Add(KEY.Enlist,                         KEY.Enlist);
+                hash.Add(KEY.FailoverPartner,                KEY.FailoverPartner);
+                hash.Add(KEY.Initial_Catalog,                KEY.Initial_Catalog);
+                hash.Add(KEY.Integrated_Security,            KEY.Integrated_Security);
+                hash.Add(KEY.Load_Balance_Timeout,           KEY.Load_Balance_Timeout);
+                hash.Add(KEY.MARS,                           KEY.MARS);
+                hash.Add(KEY.Max_Pool_Size,                  KEY.Max_Pool_Size);
+                hash.Add(KEY.Min_Pool_Size,                  KEY.Min_Pool_Size);
+                hash.Add(KEY.MultiSubnetFailover,            KEY.MultiSubnetFailover);
+                hash.Add(KEY.TransparentNetworkIPResolution, KEY.TransparentNetworkIPResolution);
+                hash.Add(KEY.Network_Library,                KEY.Network_Library);
+                hash.Add(KEY.Packet_Size,                    KEY.Packet_Size);
+                hash.Add(KEY.Password,                       KEY.Password);
+                hash.Add(KEY.Persist_Security_Info,          KEY.Persist_Security_Info);
+                hash.Add(KEY.Pooling,                        KEY.Pooling);
+                hash.Add(KEY.Replication,                    KEY.Replication);
+                hash.Add(KEY.TrustServerCertificate,         KEY.TrustServerCertificate);
+                hash.Add(KEY.TransactionBinding,             KEY.TransactionBinding);
+                hash.Add(KEY.Type_System_Version,            KEY.Type_System_Version);
+                hash.Add(KEY.ColumnEncryptionSetting,        KEY.ColumnEncryptionSetting);
+                hash.Add(KEY.User_ID,                        KEY.User_ID);
+                hash.Add(KEY.User_Instance,                  KEY.User_Instance);
+                hash.Add(KEY.Workstation_Id,                 KEY.Workstation_Id);
+                hash.Add(KEY.Connect_Retry_Count,            KEY.Connect_Retry_Count);
+                hash.Add(KEY.Connect_Retry_Interval,         KEY.Connect_Retry_Interval);
+                hash.Add(KEY.Authentication,                 KEY.Authentication);
+
+                hash.Add(SYNONYM.APP,                        KEY.Application_Name);
+                hash.Add(SYNONYM.Async,                      KEY.AsynchronousProcessing);
+                hash.Add(SYNONYM.EXTENDED_PROPERTIES,        KEY.AttachDBFilename);
+                hash.Add(SYNONYM.INITIAL_FILE_NAME,          KEY.AttachDBFilename);
+                hash.Add(SYNONYM.CONNECTION_TIMEOUT,         KEY.Connect_Timeout);
+                hash.Add(SYNONYM.TIMEOUT,                    KEY.Connect_Timeout);
+                hash.Add(SYNONYM.LANGUAGE,                   KEY.Current_Language);
+                hash.Add(SYNONYM.ADDR,                       KEY.Data_Source);
+                hash.Add(SYNONYM.ADDRESS,                    KEY.Data_Source);
+                hash.Add(SYNONYM.NETWORK_ADDRESS,            KEY.Data_Source);
+                hash.Add(SYNONYM.SERVER,                     KEY.Data_Source);
+                hash.Add(SYNONYM.DATABASE,                   KEY.Initial_Catalog);
+                hash.Add(SYNONYM.TRUSTED_CONNECTION,         KEY.Integrated_Security);
+                hash.Add(SYNONYM.Connection_Lifetime,        KEY.Load_Balance_Timeout);
+                hash.Add(SYNONYM.NET,                        KEY.Network_Library);
+                hash.Add(SYNONYM.NETWORK,                    KEY.Network_Library);
+                hash.Add(SYNONYM.Pwd,                        KEY.Password);
+                hash.Add(SYNONYM.PERSISTSECURITYINFO,        KEY.Persist_Security_Info);
+                hash.Add(SYNONYM.UID,                        KEY.User_ID);
+                hash.Add(SYNONYM.User,                       KEY.User_ID);
+                hash.Add(SYNONYM.WSID,                       KEY.Workstation_Id);
                 Debug.Assert(SqlConnectionStringBuilder.KeywordsCount + SynonymCount == hash.Count, "incorrect initial ParseSynonyms size");
                 _sqlClientSynonyms = hash;
             }
index 9df61cecd01171717fccb63fcbe2b451017dd970..8e7714341c4b24753db6afad82f66a0736f39837 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlConnectionStringBuilder.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
     using System;
@@ -71,6 +71,8 @@ namespace System.Data.SqlClient {
 
             MultiSubnetFailover,
 
+            TransparentNetworkIPResolution,
+
             ConnectRetryCount,
 
             ConnectRetryInterval,
@@ -109,120 +111,124 @@ namespace System.Data.SqlClient {
         private int _connectRetryCount   = DbConnectionStringDefaults.ConnectRetryCount;
         private int _connectRetryInterval = DbConnectionStringDefaults.ConnectRetryInterval;
 
-        private bool _asynchronousProcessing       = DbConnectionStringDefaults.AsynchronousProcessing;
-        private bool _connectionReset              = DbConnectionStringDefaults.ConnectionReset;
-        private bool _contextConnection            = DbConnectionStringDefaults.ContextConnection;
-        private bool _encrypt                      = DbConnectionStringDefaults.Encrypt;
-        private bool _trustServerCertificate       = DbConnectionStringDefaults.TrustServerCertificate;
-        private bool _enlist                       = DbConnectionStringDefaults.Enlist;
-        private bool _integratedSecurity           = DbConnectionStringDefaults.IntegratedSecurity;
-        private bool _multipleActiveResultSets     = DbConnectionStringDefaults.MultipleActiveResultSets;
-        private bool _multiSubnetFailover          = DbConnectionStringDefaults.MultiSubnetFailover;
-        private bool _persistSecurityInfo          = DbConnectionStringDefaults.PersistSecurityInfo;
-        private bool _pooling                      = DbConnectionStringDefaults.Pooling;
-        private bool _replication                  = DbConnectionStringDefaults.Replication;
-        private bool _userInstance                 = DbConnectionStringDefaults.UserInstance;
+        private bool _asynchronousProcessing           = DbConnectionStringDefaults.AsynchronousProcessing;
+        private bool _connectionReset                          = DbConnectionStringDefaults.ConnectionReset;
+        private bool _contextConnection                                = DbConnectionStringDefaults.ContextConnection;
+        private bool _encrypt                                          = DbConnectionStringDefaults.Encrypt;
+        private bool _trustServerCertificate           = DbConnectionStringDefaults.TrustServerCertificate;
+        private bool _enlist                                           = DbConnectionStringDefaults.Enlist;
+        private bool _integratedSecurity                       = DbConnectionStringDefaults.IntegratedSecurity;
+        private bool _multipleActiveResultSets         = DbConnectionStringDefaults.MultipleActiveResultSets;
+        private bool _multiSubnetFailover                      = DbConnectionStringDefaults.MultiSubnetFailover;
+        private bool _transparentNetworkIPResolution= DbConnectionStringDefaults.TransparentNetworkIPResolution;
+        private bool _persistSecurityInfo                      = DbConnectionStringDefaults.PersistSecurityInfo;
+        private bool _pooling                                          = DbConnectionStringDefaults.Pooling;
+        private bool _replication                                      = DbConnectionStringDefaults.Replication;
+        private bool _userInstance                                     = DbConnectionStringDefaults.UserInstance;
         private SqlAuthenticationMethod _authentication     = DbConnectionStringDefaults.Authentication;
         private SqlConnectionColumnEncryptionSetting _columnEncryptionSetting = DbConnectionStringDefaults.ColumnEncryptionSetting;
 
         static SqlConnectionStringBuilder() {
             string[] validKeywords = new string[KeywordsCount];
-            validKeywords[(int)Keywords.ApplicationIntent]        = DbConnectionStringKeywords.ApplicationIntent;
-            validKeywords[(int)Keywords.ApplicationName]          = DbConnectionStringKeywords.ApplicationName;
-            validKeywords[(int)Keywords.AsynchronousProcessing]   = DbConnectionStringKeywords.AsynchronousProcessing;
-            validKeywords[(int)Keywords.AttachDBFilename]         = DbConnectionStringKeywords.AttachDBFilename;
-            validKeywords[(int)Keywords.ConnectionReset]          = DbConnectionStringKeywords.ConnectionReset;
-            validKeywords[(int)Keywords.ContextConnection]        = DbConnectionStringKeywords.ContextConnection;
-            validKeywords[(int)Keywords.ConnectTimeout]           = DbConnectionStringKeywords.ConnectTimeout;
-            validKeywords[(int)Keywords.CurrentLanguage]          = DbConnectionStringKeywords.CurrentLanguage;
-            validKeywords[(int)Keywords.DataSource]               = DbConnectionStringKeywords.DataSource;
-            validKeywords[(int)Keywords.Encrypt]                  = DbConnectionStringKeywords.Encrypt;
-            validKeywords[(int)Keywords.Enlist]                   = DbConnectionStringKeywords.Enlist;
-            validKeywords[(int)Keywords.FailoverPartner]          = DbConnectionStringKeywords.FailoverPartner;
-            validKeywords[(int)Keywords.InitialCatalog]           = DbConnectionStringKeywords.InitialCatalog;
-            validKeywords[(int)Keywords.IntegratedSecurity]       = DbConnectionStringKeywords.IntegratedSecurity;
-            validKeywords[(int)Keywords.LoadBalanceTimeout]       = DbConnectionStringKeywords.LoadBalanceTimeout;
-            validKeywords[(int)Keywords.MaxPoolSize]              = DbConnectionStringKeywords.MaxPoolSize;
-            validKeywords[(int)Keywords.MinPoolSize]              = DbConnectionStringKeywords.MinPoolSize;
-            validKeywords[(int)Keywords.MultipleActiveResultSets] = DbConnectionStringKeywords.MultipleActiveResultSets;
-            validKeywords[(int)Keywords.MultiSubnetFailover]      = DbConnectionStringKeywords.MultiSubnetFailover;
-//          validKeywords[(int)Keywords.NamedConnection]          = DbConnectionStringKeywords.NamedConnection;
-            validKeywords[(int)Keywords.NetworkLibrary]           = DbConnectionStringKeywords.NetworkLibrary;
-            validKeywords[(int)Keywords.PacketSize]               = DbConnectionStringKeywords.PacketSize;
-            validKeywords[(int)Keywords.Password]                 = DbConnectionStringKeywords.Password;
-            validKeywords[(int)Keywords.PersistSecurityInfo]      = DbConnectionStringKeywords.PersistSecurityInfo;
-            validKeywords[(int)Keywords.Pooling]                  = DbConnectionStringKeywords.Pooling;
-            validKeywords[(int)Keywords.Replication]              = DbConnectionStringKeywords.Replication;
-            validKeywords[(int)Keywords.TransactionBinding]       = DbConnectionStringKeywords.TransactionBinding;
-            validKeywords[(int)Keywords.TrustServerCertificate]   = DbConnectionStringKeywords.TrustServerCertificate;
-            validKeywords[(int)Keywords.TypeSystemVersion]        = DbConnectionStringKeywords.TypeSystemVersion;
-            validKeywords[(int)Keywords.UserID]                   = DbConnectionStringKeywords.UserID;
-            validKeywords[(int)Keywords.UserInstance]             = DbConnectionStringKeywords.UserInstance;
-            validKeywords[(int)Keywords.WorkstationID]            = DbConnectionStringKeywords.WorkstationID;
-            validKeywords[(int)Keywords.ConnectRetryCount]        = DbConnectionStringKeywords.ConnectRetryCount;
-            validKeywords[(int)Keywords.ConnectRetryInterval]     = DbConnectionStringKeywords.ConnectRetryInterval;
-            validKeywords[(int)Keywords.Authentication]           = DbConnectionStringKeywords.Authentication;
-            validKeywords[(int)Keywords.ColumnEncryptionSetting] = DbConnectionStringKeywords.ColumnEncryptionSetting;
-           _validKeywords = validKeywords;
+            validKeywords[(int)Keywords.ApplicationIntent]              = DbConnectionStringKeywords.ApplicationIntent;
+            validKeywords[(int)Keywords.ApplicationName]                = DbConnectionStringKeywords.ApplicationName;
+            validKeywords[(int)Keywords.AsynchronousProcessing]         = DbConnectionStringKeywords.AsynchronousProcessing;
+            validKeywords[(int)Keywords.AttachDBFilename]               = DbConnectionStringKeywords.AttachDBFilename;
+            validKeywords[(int)Keywords.ConnectionReset]                = DbConnectionStringKeywords.ConnectionReset;
+            validKeywords[(int)Keywords.ContextConnection]              = DbConnectionStringKeywords.ContextConnection;
+            validKeywords[(int)Keywords.ConnectTimeout]                 = DbConnectionStringKeywords.ConnectTimeout;
+            validKeywords[(int)Keywords.CurrentLanguage]                = DbConnectionStringKeywords.CurrentLanguage;
+            validKeywords[(int)Keywords.DataSource]                     = DbConnectionStringKeywords.DataSource;
+            validKeywords[(int)Keywords.Encrypt]                        = DbConnectionStringKeywords.Encrypt;
+            validKeywords[(int)Keywords.Enlist]                         = DbConnectionStringKeywords.Enlist;
+            validKeywords[(int)Keywords.FailoverPartner]                = DbConnectionStringKeywords.FailoverPartner;
+            validKeywords[(int)Keywords.InitialCatalog]                 = DbConnectionStringKeywords.InitialCatalog;
+            validKeywords[(int)Keywords.IntegratedSecurity]             = DbConnectionStringKeywords.IntegratedSecurity;
+            validKeywords[(int)Keywords.LoadBalanceTimeout]             = DbConnectionStringKeywords.LoadBalanceTimeout;
+            validKeywords[(int)Keywords.MaxPoolSize]                    = DbConnectionStringKeywords.MaxPoolSize;
+            validKeywords[(int)Keywords.MinPoolSize]                    = DbConnectionStringKeywords.MinPoolSize;
+            validKeywords[(int)Keywords.MultipleActiveResultSets]       = DbConnectionStringKeywords.MultipleActiveResultSets;
+            validKeywords[(int)Keywords.MultiSubnetFailover]            = DbConnectionStringKeywords.MultiSubnetFailover;
+            validKeywords[(int)Keywords.TransparentNetworkIPResolution] = DbConnectionStringKeywords.TransparentNetworkIPResolution;
+//          validKeywords[(int)Keywords.NamedConnection]                = DbConnectionStringKeywords.NamedConnection;
+            validKeywords[(int)Keywords.NetworkLibrary]                 = DbConnectionStringKeywords.NetworkLibrary;
+            validKeywords[(int)Keywords.PacketSize]                     = DbConnectionStringKeywords.PacketSize;
+            validKeywords[(int)Keywords.Password]                       = DbConnectionStringKeywords.Password;
+            validKeywords[(int)Keywords.PersistSecurityInfo]            = DbConnectionStringKeywords.PersistSecurityInfo;
+            validKeywords[(int)Keywords.Pooling]                        = DbConnectionStringKeywords.Pooling;
+            validKeywords[(int)Keywords.Replication]                    = DbConnectionStringKeywords.Replication;
+            validKeywords[(int)Keywords.TransactionBinding]             = DbConnectionStringKeywords.TransactionBinding;
+            validKeywords[(int)Keywords.TrustServerCertificate]         = DbConnectionStringKeywords.TrustServerCertificate;
+            validKeywords[(int)Keywords.TypeSystemVersion]              = DbConnectionStringKeywords.TypeSystemVersion;
+            validKeywords[(int)Keywords.UserID]                         = DbConnectionStringKeywords.UserID;
+            validKeywords[(int)Keywords.UserInstance]                   = DbConnectionStringKeywords.UserInstance;
+            validKeywords[(int)Keywords.WorkstationID]                  = DbConnectionStringKeywords.WorkstationID;
+            validKeywords[(int)Keywords.ConnectRetryCount]              = DbConnectionStringKeywords.ConnectRetryCount;
+            validKeywords[(int)Keywords.ConnectRetryInterval]           = DbConnectionStringKeywords.ConnectRetryInterval;
+            validKeywords[(int)Keywords.Authentication]                 = DbConnectionStringKeywords.Authentication;
+            validKeywords[(int)Keywords.ColumnEncryptionSetting]        = DbConnectionStringKeywords.ColumnEncryptionSetting;
+            _validKeywords = validKeywords;
 
             Dictionary<string, Keywords> hash = new Dictionary<string, Keywords>(KeywordsCount + SqlConnectionString.SynonymCount, StringComparer.OrdinalIgnoreCase);
-            hash.Add(DbConnectionStringKeywords.ApplicationIntent,        Keywords.ApplicationIntent);
-            hash.Add(DbConnectionStringKeywords.ApplicationName,          Keywords.ApplicationName);
-            hash.Add(DbConnectionStringKeywords.AsynchronousProcessing,   Keywords.AsynchronousProcessing);
-            hash.Add(DbConnectionStringKeywords.AttachDBFilename,         Keywords.AttachDBFilename);
-            hash.Add(DbConnectionStringKeywords.ConnectTimeout,           Keywords.ConnectTimeout);
-            hash.Add(DbConnectionStringKeywords.ConnectionReset,          Keywords.ConnectionReset);
-            hash.Add(DbConnectionStringKeywords.ContextConnection,        Keywords.ContextConnection);
-            hash.Add(DbConnectionStringKeywords.CurrentLanguage,          Keywords.CurrentLanguage);
-            hash.Add(DbConnectionStringKeywords.DataSource,               Keywords.DataSource);
-            hash.Add(DbConnectionStringKeywords.Encrypt,                  Keywords.Encrypt);
-            hash.Add(DbConnectionStringKeywords.Enlist,                   Keywords.Enlist);
-            hash.Add(DbConnectionStringKeywords.FailoverPartner,          Keywords.FailoverPartner);
-            hash.Add(DbConnectionStringKeywords.InitialCatalog,           Keywords.InitialCatalog);
-            hash.Add(DbConnectionStringKeywords.IntegratedSecurity,       Keywords.IntegratedSecurity);
-            hash.Add(DbConnectionStringKeywords.LoadBalanceTimeout,       Keywords.LoadBalanceTimeout);
-            hash.Add(DbConnectionStringKeywords.MultipleActiveResultSets, Keywords.MultipleActiveResultSets);
-            hash.Add(DbConnectionStringKeywords.MaxPoolSize,              Keywords.MaxPoolSize);
-            hash.Add(DbConnectionStringKeywords.MinPoolSize,              Keywords.MinPoolSize);
-            hash.Add(DbConnectionStringKeywords.MultiSubnetFailover,      Keywords.MultiSubnetFailover);
-//          hash.Add(DbConnectionStringKeywords.NamedConnection,          Keywords.NamedConnection);
-            hash.Add(DbConnectionStringKeywords.NetworkLibrary,           Keywords.NetworkLibrary);
-            hash.Add(DbConnectionStringKeywords.PacketSize,               Keywords.PacketSize);
-            hash.Add(DbConnectionStringKeywords.Password,                 Keywords.Password);
-            hash.Add(DbConnectionStringKeywords.PersistSecurityInfo,      Keywords.PersistSecurityInfo);
-            hash.Add(DbConnectionStringKeywords.Pooling,                  Keywords.Pooling);
-            hash.Add(DbConnectionStringKeywords.Replication,              Keywords.Replication);
-            hash.Add(DbConnectionStringKeywords.TransactionBinding,       Keywords.TransactionBinding);
-            hash.Add(DbConnectionStringKeywords.TrustServerCertificate,   Keywords.TrustServerCertificate);
-            hash.Add(DbConnectionStringKeywords.TypeSystemVersion,        Keywords.TypeSystemVersion);
-            hash.Add(DbConnectionStringKeywords.UserID,                   Keywords.UserID);
-            hash.Add(DbConnectionStringKeywords.UserInstance,             Keywords.UserInstance);
-            hash.Add(DbConnectionStringKeywords.WorkstationID,            Keywords.WorkstationID);
-            hash.Add(DbConnectionStringKeywords.ConnectRetryCount,        Keywords.ConnectRetryCount);
-            hash.Add(DbConnectionStringKeywords.ConnectRetryInterval,     Keywords.ConnectRetryInterval);
-            hash.Add(DbConnectionStringKeywords.Authentication,           Keywords.Authentication);
-            hash.Add(DbConnectionStringKeywords.ColumnEncryptionSetting, Keywords.ColumnEncryptionSetting);
-            hash.Add(DbConnectionStringSynonyms.APP,                      Keywords.ApplicationName);
-            hash.Add(DbConnectionStringSynonyms.Async,                    Keywords.AsynchronousProcessing);
-            hash.Add(DbConnectionStringSynonyms.EXTENDEDPROPERTIES,       Keywords.AttachDBFilename);
-            hash.Add(DbConnectionStringSynonyms.INITIALFILENAME,          Keywords.AttachDBFilename);
-            hash.Add(DbConnectionStringSynonyms.CONNECTIONTIMEOUT,        Keywords.ConnectTimeout);
-            hash.Add(DbConnectionStringSynonyms.TIMEOUT,                  Keywords.ConnectTimeout);
-            hash.Add(DbConnectionStringSynonyms.LANGUAGE,                 Keywords.CurrentLanguage);
-            hash.Add(DbConnectionStringSynonyms.ADDR,                     Keywords.DataSource);
-            hash.Add(DbConnectionStringSynonyms.ADDRESS,                  Keywords.DataSource);
-            hash.Add(DbConnectionStringSynonyms.NETWORKADDRESS,           Keywords.DataSource);
-            hash.Add(DbConnectionStringSynonyms.SERVER,                   Keywords.DataSource);
-            hash.Add(DbConnectionStringSynonyms.DATABASE,                 Keywords.InitialCatalog);
-            hash.Add(DbConnectionStringSynonyms.TRUSTEDCONNECTION,        Keywords.IntegratedSecurity);
-            hash.Add(DbConnectionStringSynonyms.ConnectionLifetime,       Keywords.LoadBalanceTimeout);
-            hash.Add(DbConnectionStringSynonyms.NET,                      Keywords.NetworkLibrary);
-            hash.Add(DbConnectionStringSynonyms.NETWORK,                  Keywords.NetworkLibrary);
-            hash.Add(DbConnectionStringSynonyms.Pwd,                      Keywords.Password);
-            hash.Add(DbConnectionStringSynonyms.PERSISTSECURITYINFO,      Keywords.PersistSecurityInfo);
-            hash.Add(DbConnectionStringSynonyms.UID,                      Keywords.UserID);
-            hash.Add(DbConnectionStringSynonyms.User,                     Keywords.UserID);
-            hash.Add(DbConnectionStringSynonyms.WSID,                     Keywords.WorkstationID);
+            hash.Add(DbConnectionStringKeywords.ApplicationIntent,                                     Keywords.ApplicationIntent);
+            hash.Add(DbConnectionStringKeywords.ApplicationName,                                       Keywords.ApplicationName);
+            hash.Add(DbConnectionStringKeywords.AsynchronousProcessing,                                Keywords.AsynchronousProcessing);
+            hash.Add(DbConnectionStringKeywords.AttachDBFilename,                                      Keywords.AttachDBFilename);
+            hash.Add(DbConnectionStringKeywords.ConnectTimeout,                                                Keywords.ConnectTimeout);
+            hash.Add(DbConnectionStringKeywords.ConnectionReset,                                       Keywords.ConnectionReset);
+            hash.Add(DbConnectionStringKeywords.ContextConnection,                                     Keywords.ContextConnection);
+            hash.Add(DbConnectionStringKeywords.CurrentLanguage,                                       Keywords.CurrentLanguage);
+            hash.Add(DbConnectionStringKeywords.DataSource,                                                    Keywords.DataSource);
+            hash.Add(DbConnectionStringKeywords.Encrypt,                                                       Keywords.Encrypt);
+            hash.Add(DbConnectionStringKeywords.Enlist,                                                                Keywords.Enlist);
+            hash.Add(DbConnectionStringKeywords.FailoverPartner,                                       Keywords.FailoverPartner);
+            hash.Add(DbConnectionStringKeywords.InitialCatalog,                                                Keywords.InitialCatalog);
+            hash.Add(DbConnectionStringKeywords.IntegratedSecurity,                                    Keywords.IntegratedSecurity);
+            hash.Add(DbConnectionStringKeywords.LoadBalanceTimeout,                                    Keywords.LoadBalanceTimeout);
+            hash.Add(DbConnectionStringKeywords.MultipleActiveResultSets,                      Keywords.MultipleActiveResultSets);
+            hash.Add(DbConnectionStringKeywords.MaxPoolSize,                                           Keywords.MaxPoolSize);
+            hash.Add(DbConnectionStringKeywords.MinPoolSize,                                           Keywords.MinPoolSize);
+            hash.Add(DbConnectionStringKeywords.MultiSubnetFailover,                           Keywords.MultiSubnetFailover);
+            hash.Add(DbConnectionStringKeywords.TransparentNetworkIPResolution,                Keywords.TransparentNetworkIPResolution);
+//          hash.Add(DbConnectionStringKeywords.NamedConnection,                                       Keywords.NamedConnection);
+            hash.Add(DbConnectionStringKeywords.NetworkLibrary,                                                Keywords.NetworkLibrary);
+            hash.Add(DbConnectionStringKeywords.PacketSize,                                                    Keywords.PacketSize);
+            hash.Add(DbConnectionStringKeywords.Password,                                                      Keywords.Password);
+            hash.Add(DbConnectionStringKeywords.PersistSecurityInfo,                           Keywords.PersistSecurityInfo);
+            hash.Add(DbConnectionStringKeywords.Pooling,                                                       Keywords.Pooling);
+            hash.Add(DbConnectionStringKeywords.Replication,                                           Keywords.Replication);
+            hash.Add(DbConnectionStringKeywords.TransactionBinding,                                    Keywords.TransactionBinding);
+            hash.Add(DbConnectionStringKeywords.TrustServerCertificate,                                Keywords.TrustServerCertificate);
+            hash.Add(DbConnectionStringKeywords.TypeSystemVersion,                                     Keywords.TypeSystemVersion);
+            hash.Add(DbConnectionStringKeywords.UserID,                                                                Keywords.UserID);
+            hash.Add(DbConnectionStringKeywords.UserInstance,                                          Keywords.UserInstance);
+            hash.Add(DbConnectionStringKeywords.WorkstationID,                                         Keywords.WorkstationID);
+            hash.Add(DbConnectionStringKeywords.ConnectRetryCount,                                     Keywords.ConnectRetryCount);
+            hash.Add(DbConnectionStringKeywords.ConnectRetryInterval,                          Keywords.ConnectRetryInterval);
+            hash.Add(DbConnectionStringKeywords.Authentication,                                                Keywords.Authentication);
+            hash.Add(DbConnectionStringKeywords.ColumnEncryptionSetting,                       Keywords.ColumnEncryptionSetting);
+
+            hash.Add(DbConnectionStringSynonyms.APP,                                                           Keywords.ApplicationName);
+            hash.Add(DbConnectionStringSynonyms.Async,                                                         Keywords.AsynchronousProcessing);
+            hash.Add(DbConnectionStringSynonyms.EXTENDEDPROPERTIES,                                    Keywords.AttachDBFilename);
+            hash.Add(DbConnectionStringSynonyms.INITIALFILENAME,                                       Keywords.AttachDBFilename);
+            hash.Add(DbConnectionStringSynonyms.CONNECTIONTIMEOUT,                                     Keywords.ConnectTimeout);
+            hash.Add(DbConnectionStringSynonyms.TIMEOUT,                                                       Keywords.ConnectTimeout);
+            hash.Add(DbConnectionStringSynonyms.LANGUAGE,                                                      Keywords.CurrentLanguage);
+            hash.Add(DbConnectionStringSynonyms.ADDR,                                                          Keywords.DataSource);
+            hash.Add(DbConnectionStringSynonyms.ADDRESS,                                                       Keywords.DataSource);
+            hash.Add(DbConnectionStringSynonyms.NETWORKADDRESS,                                                Keywords.DataSource);
+            hash.Add(DbConnectionStringSynonyms.SERVER,                                                                Keywords.DataSource);
+            hash.Add(DbConnectionStringSynonyms.DATABASE,                                                      Keywords.InitialCatalog);
+            hash.Add(DbConnectionStringSynonyms.TRUSTEDCONNECTION,                                     Keywords.IntegratedSecurity);
+            hash.Add(DbConnectionStringSynonyms.ConnectionLifetime,                                    Keywords.LoadBalanceTimeout);
+            hash.Add(DbConnectionStringSynonyms.NET,                                                           Keywords.NetworkLibrary);
+            hash.Add(DbConnectionStringSynonyms.NETWORK,                                                       Keywords.NetworkLibrary);
+            hash.Add(DbConnectionStringSynonyms.Pwd,                                                           Keywords.Password);
+            hash.Add(DbConnectionStringSynonyms.PERSISTSECURITYINFO,                           Keywords.PersistSecurityInfo);
+            hash.Add(DbConnectionStringSynonyms.UID,                                                           Keywords.UserID);
+            hash.Add(DbConnectionStringSynonyms.User,                                                          Keywords.UserID);
+            hash.Add(DbConnectionStringSynonyms.WSID,                                                          Keywords.WorkstationID);
             Debug.Assert((KeywordsCount + SqlConnectionString.SynonymCount) == hash.Count, "initial expected size is incorrect");
             _keywords = hash;
 
@@ -246,47 +252,48 @@ namespace System.Data.SqlClient {
                 if (null != value) {
                     Keywords index = GetIndex(keyword);
                     switch(index) {
-                    case Keywords.ApplicationIntent:        this.ApplicationIntent = ConvertToApplicationIntent(keyword, value); break;
-                    case Keywords.ApplicationName:          ApplicationName = ConvertToString(value); break;
-                    case Keywords.AttachDBFilename:         AttachDBFilename = ConvertToString(value); break;
-                    case Keywords.CurrentLanguage:          CurrentLanguage = ConvertToString(value); break;
-                    case Keywords.DataSource:               DataSource = ConvertToString(value); break;
-                    case Keywords.FailoverPartner:          FailoverPartner = ConvertToString(value); break;
-                    case Keywords.InitialCatalog:           InitialCatalog = ConvertToString(value); break;
-//                  case Keywords.NamedConnection:          NamedConnection = ConvertToString(value); break;
-                    case Keywords.NetworkLibrary:           NetworkLibrary = ConvertToString(value); break;
-                    case Keywords.Password:                 Password = ConvertToString(value); break;
-                    case Keywords.UserID:                   UserID = ConvertToString(value); break;
-                    case Keywords.TransactionBinding:       TransactionBinding = ConvertToString(value); break;
-                    case Keywords.TypeSystemVersion:        TypeSystemVersion = ConvertToString(value); break;
-                    case Keywords.WorkstationID:            WorkstationID = ConvertToString(value); break;
-
-                    case Keywords.ConnectTimeout:           ConnectTimeout = ConvertToInt32(value); break;
-                    case Keywords.LoadBalanceTimeout:       LoadBalanceTimeout = ConvertToInt32(value); break;
-                    case Keywords.MaxPoolSize:              MaxPoolSize = ConvertToInt32(value); break;
-                    case Keywords.MinPoolSize:              MinPoolSize = ConvertToInt32(value); break;
-                    case Keywords.PacketSize:               PacketSize = ConvertToInt32(value); break;
-
-                    case Keywords.IntegratedSecurity:       IntegratedSecurity = ConvertToIntegratedSecurity(value); break;
-
-                    case Keywords.Authentication:           Authentication = ConvertToAuthenticationType(keyword, value); break;
-                    case Keywords.ColumnEncryptionSetting: ColumnEncryptionSetting = ConvertToColumnEncryptionSetting(keyword, value); break;
-                    case Keywords.AsynchronousProcessing:   AsynchronousProcessing = ConvertToBoolean(value); break;
+                    case Keywords.ApplicationIntent:                           this.ApplicationIntent = ConvertToApplicationIntent(keyword, value); break;
+                    case Keywords.ApplicationName:                                     ApplicationName = ConvertToString(value); break;
+                    case Keywords.AttachDBFilename:                                    AttachDBFilename = ConvertToString(value); break;
+                    case Keywords.CurrentLanguage:                                     CurrentLanguage = ConvertToString(value); break;
+                    case Keywords.DataSource:                                          DataSource = ConvertToString(value); break;
+                    case Keywords.FailoverPartner:                                     FailoverPartner = ConvertToString(value); break;
+                    case Keywords.InitialCatalog:                                      InitialCatalog = ConvertToString(value); break;
+//                  case Keywords.NamedConnection:                                     NamedConnection = ConvertToString(value); break;
+                    case Keywords.NetworkLibrary:                                      NetworkLibrary = ConvertToString(value); break;
+                    case Keywords.Password:                                                    Password = ConvertToString(value); break;
+                    case Keywords.UserID:                                                      UserID = ConvertToString(value); break;
+                    case Keywords.TransactionBinding:                          TransactionBinding = ConvertToString(value); break;
+                    case Keywords.TypeSystemVersion:                           TypeSystemVersion = ConvertToString(value); break;
+                    case Keywords.WorkstationID:                                       WorkstationID = ConvertToString(value); break;
+
+                    case Keywords.ConnectTimeout:                                      ConnectTimeout = ConvertToInt32(value); break;
+                    case Keywords.LoadBalanceTimeout:                          LoadBalanceTimeout = ConvertToInt32(value); break;
+                    case Keywords.MaxPoolSize:                                         MaxPoolSize = ConvertToInt32(value); break;
+                    case Keywords.MinPoolSize:                                         MinPoolSize = ConvertToInt32(value); break;
+                    case Keywords.PacketSize:                                          PacketSize = ConvertToInt32(value); break;
+
+                    case Keywords.IntegratedSecurity:                          IntegratedSecurity = ConvertToIntegratedSecurity(value); break;
+
+                    case Keywords.Authentication:                                      Authentication = ConvertToAuthenticationType(keyword, value); break;
+                    case Keywords.ColumnEncryptionSetting:                     ColumnEncryptionSetting = ConvertToColumnEncryptionSetting(keyword, value); break;
+                    case Keywords.AsynchronousProcessing:                      AsynchronousProcessing = ConvertToBoolean(value); break;
 #pragma warning disable 618 // Obsolete ConnectionReset
-                    case Keywords.ConnectionReset:          ConnectionReset = ConvertToBoolean(value); break;
+                    case Keywords.ConnectionReset:                                     ConnectionReset = ConvertToBoolean(value); break;
 #pragma warning restore 618
-                    case Keywords.ContextConnection:        ContextConnection = ConvertToBoolean(value); break;
-                    case Keywords.Encrypt:                  Encrypt = ConvertToBoolean(value); break;
-                    case Keywords.TrustServerCertificate:   TrustServerCertificate = ConvertToBoolean(value); break;
-                    case Keywords.Enlist:                   Enlist = ConvertToBoolean(value); break;
-                    case Keywords.MultipleActiveResultSets: MultipleActiveResultSets = ConvertToBoolean(value); break;
-                    case Keywords.MultiSubnetFailover:      MultiSubnetFailover = ConvertToBoolean(value); break;
-                    case Keywords.PersistSecurityInfo:      PersistSecurityInfo = ConvertToBoolean(value); break;
-                    case Keywords.Pooling:                  Pooling = ConvertToBoolean(value); break;
-                    case Keywords.Replication:              Replication = ConvertToBoolean(value); break;
-                    case Keywords.UserInstance:             UserInstance = ConvertToBoolean(value); break;
-                    case Keywords.ConnectRetryCount:        ConnectRetryCount = ConvertToInt32(value); break;
-                    case Keywords.ConnectRetryInterval:     ConnectRetryInterval = ConvertToInt32(value); break;
+                    case Keywords.ContextConnection:                           ContextConnection = ConvertToBoolean(value); break;
+                    case Keywords.Encrypt:                                                     Encrypt = ConvertToBoolean(value); break;
+                    case Keywords.TrustServerCertificate:                      TrustServerCertificate = ConvertToBoolean(value); break;
+                    case Keywords.Enlist:                                                      Enlist = ConvertToBoolean(value); break;
+                    case Keywords.MultipleActiveResultSets:                    MultipleActiveResultSets = ConvertToBoolean(value); break;
+                    case Keywords.MultiSubnetFailover:                         MultiSubnetFailover = ConvertToBoolean(value); break;
+                    case Keywords.TransparentNetworkIPResolution:      TransparentNetworkIPResolution = ConvertToBoolean(value); break;
+                    case Keywords.PersistSecurityInfo:                         PersistSecurityInfo = ConvertToBoolean(value); break;
+                    case Keywords.Pooling:                                                     Pooling = ConvertToBoolean(value); break;
+                    case Keywords.Replication:                                         Replication = ConvertToBoolean(value); break;
+                    case Keywords.UserInstance:                                                UserInstance = ConvertToBoolean(value); break;
+                    case Keywords.ConnectRetryCount:                           ConnectRetryCount = ConvertToInt32(value); break;
+                    case Keywords.ConnectRetryInterval:                                ConnectRetryInterval = ConvertToInt32(value); break;
 
                     default:
                         Debug.Assert(false, "unexpected keyword");
@@ -626,6 +633,19 @@ namespace System.Data.SqlClient {
                 _multiSubnetFailover = value;
             }
         }
+
+        [DisplayName(DbConnectionStringKeywords.TransparentNetworkIPResolution)]
+        [ResCategoryAttribute(Res.DataCategory_Source)]
+        [ResDescriptionAttribute(Res.DbConnectionString_TransparentNetworkIPResolution)]
+        [RefreshPropertiesAttribute(RefreshProperties.All)]
+        public bool TransparentNetworkIPResolution
+        {
+            get { return _transparentNetworkIPResolution; }
+            set {
+                SetValue(DbConnectionStringKeywords.TransparentNetworkIPResolution, value);
+                _transparentNetworkIPResolution = value;
+            }
+        }
 /*
         [DisplayName(DbConnectionStringKeywords.NamedConnection)]
         [ResCategoryAttribute(Res.DataCategory_NamedConnectionString)]
@@ -882,44 +902,45 @@ namespace System.Data.SqlClient {
 
         private object GetAt(Keywords index) {
             switch(index) {
-            case Keywords.ApplicationIntent:        return this.ApplicationIntent;
-            case Keywords.ApplicationName:          return ApplicationName;
-            case Keywords.AsynchronousProcessing:   return AsynchronousProcessing;
-            case Keywords.AttachDBFilename:         return AttachDBFilename;
-            case Keywords.ConnectTimeout:           return ConnectTimeout;
+            case Keywords.ApplicationIntent:                           return this.ApplicationIntent;
+            case Keywords.ApplicationName:                                     return ApplicationName;
+            case Keywords.AsynchronousProcessing:                      return AsynchronousProcessing;
+            case Keywords.AttachDBFilename:                                    return AttachDBFilename;
+            case Keywords.ConnectTimeout:                                      return ConnectTimeout;
 #pragma warning disable 618 // Obsolete ConnectionReset
-            case Keywords.ConnectionReset:          return ConnectionReset;
+            case Keywords.ConnectionReset:                                     return ConnectionReset;
 #pragma warning restore 618
-            case Keywords.ContextConnection:        return ContextConnection;
-            case Keywords.CurrentLanguage:          return CurrentLanguage;
-            case Keywords.DataSource:               return DataSource;
-            case Keywords.Encrypt:                  return Encrypt;
-            case Keywords.Enlist:                   return Enlist;
-            case Keywords.FailoverPartner:          return FailoverPartner;
-            case Keywords.InitialCatalog:           return InitialCatalog;
-            case Keywords.IntegratedSecurity:       return IntegratedSecurity;
-            case Keywords.LoadBalanceTimeout:       return LoadBalanceTimeout;
-            case Keywords.MultipleActiveResultSets: return MultipleActiveResultSets;
-            case Keywords.MaxPoolSize:              return MaxPoolSize;
-            case Keywords.MinPoolSize:              return MinPoolSize;
-            case Keywords.MultiSubnetFailover:      return MultiSubnetFailover;
-//          case Keywords.NamedConnection:          return NamedConnection;
-            case Keywords.NetworkLibrary:           return NetworkLibrary;
-            case Keywords.PacketSize:               return PacketSize;
-            case Keywords.Password:                 return Password;
-            case Keywords.PersistSecurityInfo:      return PersistSecurityInfo;
-            case Keywords.Pooling:                  return Pooling;
-            case Keywords.Replication:              return Replication;
-            case Keywords.TransactionBinding:       return TransactionBinding;
-            case Keywords.TrustServerCertificate:   return TrustServerCertificate;
-            case Keywords.TypeSystemVersion:        return TypeSystemVersion;
-            case Keywords.UserID:                   return UserID;
-            case Keywords.UserInstance:             return UserInstance;
-            case Keywords.WorkstationID:            return WorkstationID;
-            case Keywords.ConnectRetryCount:        return ConnectRetryCount;
-            case Keywords.ConnectRetryInterval:     return ConnectRetryInterval;
-            case Keywords.Authentication:           return Authentication;
-            case Keywords.ColumnEncryptionSetting: return ColumnEncryptionSetting;
+            case Keywords.ContextConnection:                           return ContextConnection;
+            case Keywords.CurrentLanguage:                                     return CurrentLanguage;
+            case Keywords.DataSource:                                          return DataSource;
+            case Keywords.Encrypt:                                                     return Encrypt;
+            case Keywords.Enlist:                                                      return Enlist;
+            case Keywords.FailoverPartner:                                     return FailoverPartner;
+            case Keywords.InitialCatalog:                                      return InitialCatalog;
+            case Keywords.IntegratedSecurity:                          return IntegratedSecurity;
+            case Keywords.LoadBalanceTimeout:                          return LoadBalanceTimeout;
+            case Keywords.MultipleActiveResultSets:                    return MultipleActiveResultSets;
+            case Keywords.MaxPoolSize:                                         return MaxPoolSize;
+            case Keywords.MinPoolSize:                                         return MinPoolSize;
+            case Keywords.MultiSubnetFailover:                         return MultiSubnetFailover;
+            case Keywords.TransparentNetworkIPResolution:      return TransparentNetworkIPResolution;
+//          case Keywords.NamedConnection:                                     return NamedConnection;
+            case Keywords.NetworkLibrary:                                      return NetworkLibrary;
+            case Keywords.PacketSize:                                          return PacketSize;
+            case Keywords.Password:                                                    return Password;
+            case Keywords.PersistSecurityInfo:                         return PersistSecurityInfo;
+            case Keywords.Pooling:                                                     return Pooling;
+            case Keywords.Replication:                                         return Replication;
+            case Keywords.TransactionBinding:                          return TransactionBinding;
+            case Keywords.TrustServerCertificate:                      return TrustServerCertificate;
+            case Keywords.TypeSystemVersion:                           return TypeSystemVersion;
+            case Keywords.UserID:                                                      return UserID;
+            case Keywords.UserInstance:                                                return UserInstance;
+            case Keywords.WorkstationID:                                       return WorkstationID;
+            case Keywords.ConnectRetryCount:                           return ConnectRetryCount;
+            case Keywords.ConnectRetryInterval:                                return ConnectRetryInterval;
+            case Keywords.Authentication:                                      return Authentication;
+            case Keywords.ColumnEncryptionSetting:                     return ColumnEncryptionSetting;
             default:
                 Debug.Assert(false, "unexpected keyword");
                 throw ADP.KeywordNotSupported(_validKeywords[(int)index]);
@@ -1036,6 +1057,9 @@ namespace System.Data.SqlClient {
             case Keywords.MultiSubnetFailover:
                 _multiSubnetFailover = DbConnectionStringDefaults.MultiSubnetFailover;
                 break;
+            case Keywords.TransparentNetworkIPResolution:
+                _transparentNetworkIPResolution = DbConnectionStringDefaults.TransparentNetworkIPResolution;
+                    break;
 //          case Keywords.NamedConnection:
 //              _namedConnection = DbConnectionStringDefaults.NamedConnection;
 //              break;
index c702b82b3a53ce984996763fdb742e905a7e4514..879a86d61a86854b73492bcc168c5a36981ddd30 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SqlConnectionTimeoutErrorInternal.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient
index 091753c6f385a6e757cd57b1c07048848f7c8955..874ac5cc355a7b37e6edacb67750f5d64942f7ce 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlCredential.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient
index b1f304cd795262c53febdaab46e43619638e79b3..11be2219aea5cf8b10919fa5264acc403fc4302c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlDataAdapter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index ed353411d0d2c3421f822acfc827123d5853592d..8e04c42254201997009d8e392d25ddbcad7d4f57 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlDataReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -44,7 +44,7 @@ namespace System.Data.SqlClient {
 
         internal SharedState _sharedState = new SharedState();
 
-        private TdsParser                      _parser;                 // 
+        private TdsParser                      _parser;                 // TODO: Probably don't need this, since it's on the stateObj
         private TdsParserStateObject           _stateObj;
         private SqlCommand                     _command;
         private SqlConnection                  _connection;
@@ -1105,7 +1105,7 @@ namespace System.Data.SqlClient {
                         // CleanWire will do cleanup - so we don't really care about the snapshot
                         CleanupAfterAsyncInvocationInternal(stateObj, resetNetworkPacketTaskSource: false);
                     }
-                    // Switch to sync to prepare for cleanwire
+                    // Switch to [....] to prepare for cleanwire
                     stateObj._syncOverAsync = true;
                     // Remove owner (this will allow the stateObj to be disposed after the connection is closed)
                     stateObj.RemoveOwner();
@@ -1282,13 +1282,26 @@ namespace System.Data.SqlClient {
         virtual internal int GetLocaleId(int i) {
             _SqlMetaData sqlMetaData = MetaData[i];
             int lcid;
-            
-            if (sqlMetaData.collation != null) {
-                lcid = sqlMetaData.collation.LCID;
+
+            if (sqlMetaData.cipherMD != null) {
+                // If this column is encrypted, get the collation from baseTI
+                //
+                if (sqlMetaData.baseTI.collation != null) {
+                    lcid = sqlMetaData.baseTI.collation.LCID;
+                }
+                else {
+                    lcid = 0;
+                }
             }
             else {
-                lcid = 0;
+                if (sqlMetaData.collation != null) {
+                    lcid = sqlMetaData.collation.LCID;
+                }
+                else {
+                    lcid = 0;
+                }
             }
+
             return lcid;
         }
         
@@ -1976,8 +1989,8 @@ namespace System.Data.SqlClient {
                             CheckDataIsReady(columnIndex: i, allowPartiallyReadColumn: true, methodName: "GetChars");
                         }
                         catch (Exception ex) {
-                            // Dev11 
-
+                            // Dev11 Bug #315513: Exception type breaking change from 4.0 RTM when calling GetChars on null xml
+                            // We need to wrap all exceptions inside a TargetInvocationException to simulate calling CreateSqlReader via MethodInfo.Invoke
                             if (ADP.IsCatchableExceptionType(ex)) {
                                 throw new TargetInvocationException(ex);
                             }
@@ -2413,8 +2426,8 @@ namespace System.Data.SqlClient {
         // NOTE: This method is called by the fast-paths in Async methods and, therefore, should be resilient to the DataReader being closed
         //       Always make sure to take reference copies of anything set to null in TryCloseInternal()
         private object GetSqlValueFromSqlBufferInternal(SqlBuffer data, _SqlMetaData metaData) {
-            // Dev11 
-
+            // Dev11 Bug #336820, Dev10 Bug #479607 (SqlClient: IsDBNull always returns false for timestamp datatype)
+            // Due to a bug in TdsParser.GetNullSqlValue, Timestamps' IsNull is not correctly set - so we need to bypass the following check
             Debug.Assert(!data.IsEmpty || data.IsNull || metaData.type == SqlDbType.Timestamp, "Data has been read, but the buffer is empty");
 
             // Convert Katmai types to string
@@ -2566,8 +2579,8 @@ namespace System.Data.SqlClient {
         // NOTE: This method is called by the fast-paths in Async methods and, therefore, should be resilient to the DataReader being closed
         //       Always make sure to take reference copies of anything set to null in TryCloseInternal()
         private object GetValueFromSqlBufferInternal(SqlBuffer data, _SqlMetaData metaData) {
-            // Dev11 
-
+            // Dev11 Bug #336820, Dev10 Bug #479607 (SqlClient: IsDBNull always returns false for timestamp datatype)
+            // Due to a bug in TdsParser.GetNullSqlValue, Timestamps' IsNull is not correctly set - so we need to bypass the following check
             Debug.Assert(!data.IsEmpty || data.IsNull || metaData.type == SqlDbType.Timestamp, "Data has been read, but the buffer is empty");
 
             if (_typeSystem <= SqlConnectionString.TypeSystem.SQLServer2005 && metaData.IsNewKatmaiDateTimeType) {
@@ -2772,9 +2785,9 @@ namespace System.Data.SqlClient {
                             moreResults = true;
                             return true;
                         
-                        // VSTFDEVDIV 926281: DONEINPROC case is missing here; we have decided to reject this 
-
-
+                        // VSTFDEVDIV 926281: DONEINPROC case is missing here; we have decided to reject this bug as it would result in breaking change
+                        // from Orcas RTM/SP1 and Dev10 RTM. See the bug for more details.
+                        // case TdsEnums.DONEINPROC:
                         case TdsEnums.SQLDONE:
                             Debug.Assert(_altRowStatus == ALTROWSTATUS.Done || _altRowStatus == ALTROWSTATUS.Null, "invalid AltRowStatus");
                             _altRowStatus = ALTROWSTATUS.Null;
@@ -2787,10 +2800,10 @@ namespace System.Data.SqlClient {
                             return true;
                     }
 
-                    // Dev11 
-
-
-
+                    // Dev11 Bug 316483:Hang on SqlDataReader::TryHasMoreResults using MARS
+                    // http://vstfdevdiv:8080/web/wi.aspx?pcguid=22f9acc9-569a-41ff-b6ac-fac1b6370209&id=316483
+                    // TryRun() will immediately return if the TdsParser is closed\broken, causing us to enter an infinite loop
+                    // Instead, we will throw a closed connection exception
                     if (_parser.State == TdsParserState.Broken || _parser.State == TdsParserState.Closed) {
                         throw ADP.ClosedConnectionError();
                     }
@@ -2826,8 +2839,8 @@ namespace System.Data.SqlClient {
                 }
                 if (_stateObj._pendingData) {
                     // Consume error's, info's, done's on HasMoreRows, so user obtains error on Read.
-                    // Previous 
-
+                    // Previous bug where Read() would return false with error on the wire in the case
+                    // of metadata and error immediately following.  See MDAC 78285 and 75225.
 
                     // 
 
@@ -2862,10 +2875,10 @@ namespace System.Data.SqlClient {
                             ParsedDoneToken = true;
                         }
 
-                        // Dev11 
-
-
-
+                        // Dev11 Bug 316483:Hang on SqlDataReader::TryHasMoreResults using MARS
+                        // http://vstfdevdiv:8080/web/wi.aspx?pcguid=22f9acc9-569a-41ff-b6ac-fac1b6370209&id=316483
+                        // TryRun() will immediately return if the TdsParser is closed\broken, causing us to enter an infinite loop
+                        // Instead, we will throw a closed connection exception
                         if (_parser.State == TdsParserState.Broken || _parser.State == TdsParserState.Closed) {
                             throw ADP.ClosedConnectionError();
                         }
@@ -2903,10 +2916,10 @@ namespace System.Data.SqlClient {
 
         override public bool IsDBNull(int i) {
             if ((IsCommandBehavior(CommandBehavior.SequentialAccess)) && ((_sharedState._nextColumnHeaderToRead > i + 1) || (_lastColumnWithDataChunkRead > i))) {
-                // 
-
-
-
+                // Bug 447026 : A breaking change in System.Data .NET 4.5 for calling IsDBNull on commands in SequentialAccess mode
+                // http://vstfdevdiv:8080/web/wi.aspx?pcguid=22f9acc9-569a-41ff-b6ac-fac1b6370209&id=447026
+                // In .Net 4.0 and previous, it was possible to read a previous column using IsDBNull when in sequential mode
+                // However, since it had already gone past the column, the current IsNull value is simply returned
 
                 // To replicate this behavior we will skip CheckHeaderIsReady\ReadColumnHeader and instead just check that the reader is ready and the column is valid
                 CheckMetaDataIsReady(columnIndex: i);
@@ -3439,8 +3452,8 @@ namespace System.Data.SqlClient {
                     Debug.Assert(i == _sharedState._nextColumnDataToRead ||                                                          // Either we haven't read the column yet
                         ((i + 1 < _sharedState._nextColumnDataToRead) && (IsCommandBehavior(CommandBehavior.SequentialAccess))) ||   // Or we're in sequential mode and we've read way past the column (i.e. it was not the last column we read)
                         (!_data[i].IsEmpty || _data[i].IsNull) ||                                                       // Or we should have data stored for the column (unless the column was null)
-                        (_metaData[i].type == SqlDbType.Timestamp),                                                     // Or Dev11 
-                                                                                                                        //    Due to a 
+                        (_metaData[i].type == SqlDbType.Timestamp),                                                     // Or Dev11 Bug #336820, Dev10 Bug #479607 (SqlClient: IsDBNull always returns false for timestamp datatype)
+                                                                                                                        //    Due to a bug in TdsParser.GetNullSqlValue, Timestamps' IsNull is not correctly set - so we need to bypass the check
                         "Gone past column, be we have no data stored for it");
                     return true;
                 }
@@ -3497,7 +3510,7 @@ namespace System.Data.SqlClient {
                     _sharedState._nextColumnDataToRead = _sharedState._nextColumnHeaderToRead;
                     _sharedState._nextColumnHeaderToRead++;  // We read this one
 
-                    if (isNull && columnMetaData.type != SqlDbType.Timestamp /* Maintain behavior for known */)
+                    if (isNull && columnMetaData.type != SqlDbType.Timestamp /* Maintain behavior for known bug (Dev10 479607) rejected as breaking change - See comments in GetNullSqlValue for timestamp */)
                     {
                         TdsParser.GetNullSqlValue(_data[_sharedState._nextColumnDataToRead], 
                             columnMetaData,
@@ -4342,7 +4355,7 @@ namespace System.Data.SqlClient {
                     return ADP.CreatedTaskWithCancellation<bool>();
                 }
                 
-                // Shortcut - if we have enough data, then run sync
+                // Shortcut - if we have enough data, then run [....]
                 try {
                     if (WillHaveEnoughData(i, headerOnly: true)) {
 #if DEBUG
@@ -4444,7 +4457,7 @@ namespace System.Data.SqlClient {
                 return ADP.CreatedTaskWithCancellation<T>();
             }
 
-            // Shortcut - if we have enough data, then run sync
+            // Shortcut - if we have enough data, then run [....]
             try {
                 if (WillHaveEnoughData(i)) {
 #if DEBUG
@@ -4615,7 +4628,7 @@ namespace System.Data.SqlClient {
                 }
 
                 if (task.IsCompleted) {
-                    // If we've completed sync, then don't bother handling the TaskCompletionSource - we'll just return the completed task
+                    // If we've completed [....], then don't bother handling the TaskCompletionSource - we'll just return the completed task
                     CompleteRetryable(task, source, objectToDispose);
                     return task;
                 }
index ded4479ff4aad264c8386cd33df5e3dcce1834f5..4a46f64b62eae780d09c9afa54c0de19d7cfc0c2 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlDataReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index dece801213c457f8abf43771e816801affda5a9d..60edc0e400d3560a6ac7c468b9b2695958b850ab 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlDelegatedTransaction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -11,6 +11,7 @@ namespace System.Data.SqlClient {
     using System.Data.Common;
     using System.Data.SqlClient;
     using System.Diagnostics;
+    using System.Reflection;
     using System.Runtime.CompilerServices;
     using System.Runtime.ConstrainedExecution;
     using System.Threading;
@@ -19,6 +20,7 @@ namespace System.Data.SqlClient {
     sealed internal class SqlDelegatedTransaction : SysTx.IPromotableSinglePhaseNotification {
         private static int _objectTypeCount;
         private readonly int _objectID = Interlocked.Increment(ref _objectTypeCount);
+        private const int _globalTransactionsTokenVersionSizeInBytes = 4; // the size of the version in the PromotedDTCToken for Global Transactions
         internal int ObjectID {
             get {
                 return _objectID;
@@ -163,6 +165,20 @@ namespace System.Data.SqlClient {
 
                             connection.ExecuteTransaction(SqlInternalConnection.TransactionRequest.Promote, null, IsolationLevel.Unspecified, _internalTransaction, true);
                             returnValue = _connection.PromotedDTCToken;
+
+                            // For Global Transactions, we need to set the Transaction Id since we use a Non-MSDTC Promoter type.
+                            if(_connection.IsGlobalTransaction) {
+                                if (SysTxForGlobalTransactions.SetDistributedTransactionIdentifier == null) {
+                                    throw SQL.UnsupportedSysTxForGlobalTransactions();
+                                }
+
+                                if(!_connection.IsGlobalTransactionsEnabledForServer) {
+                                    throw SQL.GlobalTransactionsNotEnabled();
+                                }
+
+                                SysTxForGlobalTransactions.SetDistributedTransactionIdentifier.Invoke(_atomicTransaction, new object[] { this, GetGlobalTxnIdentifierFromToken() });
+                            }
+
                             promoteException = null;
                         }
                         catch (SqlException e) {
@@ -453,5 +469,12 @@ namespace System.Data.SqlClient {
             }
         }
 
+        // Get the server-side Global Transaction Id from the PromotedDTCToken
+        // Skip first 4 bytes since they contain the version
+        private Guid GetGlobalTxnIdentifierFromToken() {
+            byte[] txnGuid = new byte[16];
+            Array.Copy(_connection.PromotedDTCToken, _globalTransactionsTokenVersionSizeInBytes /* Skip the version */, txnGuid, 0, txnGuid.Length);
+            return new Guid(txnGuid);
+        }
     }
 }
index c27b94cd0825ffd5cabc10a577bc749cc92113c8..fe13f0878c03378500503d21376d45d47bc07aed 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlDependency.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 656d0dd6db1df1b91d1c69bc14d3cb6be3f74bef..9a11b63cb6883517c3e44e0ef24a591bfb8c1602 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlDependency.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
@@ -151,7 +151,7 @@ internal class SqlDependencyProcessDispatcher : MarshalByRefObject { // MBR sinc
 
                 _conversationGuidParam = new SqlParameter("@p1", SqlDbType.UniqueIdentifier);
                 _timeoutParam          = new SqlParameter("@p2", SqlDbType.Int);
-                _timeoutParam.Value    = 0; // Timeout set to 0 for initial sync query.
+                _timeoutParam.Value    = 0; // Timeout set to 0 for initial [....] query.
                 _com.Parameters.Add(_timeoutParam);
 
                 setupCompleted = true;
@@ -160,7 +160,7 @@ internal class SqlDependencyProcessDispatcher : MarshalByRefObject { // MBR sinc
                 // Create standard query.
                 _receiveQuery = "WAITFOR(RECEIVE TOP (1) message_type_name, conversation_handle, cast(message_body AS XML) as message_body from " + _escapedQueueName + "), TIMEOUT @p2;";
 
-                // Create queue, service, sync query, and async query on user thread to ensure proper
+                // Create queue, service, [....] query, and async query on user thread to ensure proper
                 // init prior to return.  
 
                 if (useDefaults) { // Only create if user did not specify service & database.
@@ -179,7 +179,7 @@ internal class SqlDependencyProcessDispatcher : MarshalByRefObject { // MBR sinc
                 // Query synchronously once to ensure everything is working correctly.
                 // We want the exception to occur on start to immediately inform caller.
                 SynchronouslyQueryServiceBrokerQueue();
-                _timeoutParam.Value = _defaultWaitforTimeout; // Sync successful, extend timeout to 60 seconds.
+                _timeoutParam.Value = _defaultWaitforTimeout; // [....] successful, extend timeout to 60 seconds.
                 AsynchronouslyQueryServiceBrokerQueue();
             }
             catch (Exception e) {
index ccd6d84f7e4e480da3612fdc294ad7af52cc79fb..ae91e9644a2597f4c62825490fde222d7630ec1e 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlDependencyUtils.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -179,7 +179,7 @@ namespace System.Data.SqlClient {
                             {
                                 // this should not happen since _commandHashToNotificationId and _notificationIdToDependenciesHash are always
                                 // updated together
-                                Debug.Assert(false, "_commandHashToNotificationId has entries that were removed from _notificationIdToDependenciesHash. Remember to keep them in sync");
+                                Debug.Assert(false, "_commandHashToNotificationId has entries that were removed from _notificationIdToDependenciesHash. Remember to keep them in [....]");
                                 throw ADP.InternalError(ADP.InternalErrorCode.SqlDependencyCommandHashIsNotAssociatedWithNotification);
                             }
 
@@ -217,7 +217,7 @@ namespace System.Data.SqlClient {
                         }
 
 
-                        Debug.Assert(_notificationIdToDependenciesHash.Count == _commandHashToNotificationId.Count, "always keep these maps in sync!");
+                        Debug.Assert(_notificationIdToDependenciesHash.Count == _commandHashToNotificationId.Count, "always keep these maps in [....]!");
                     }
                 }
             }
@@ -402,7 +402,7 @@ namespace System.Data.SqlClient {
                         Bid.NotificationsTrace("<sc.SqlDependencyPerAppDomainDispatcher.LookupDependencyEntriesWithRemove|DEP> Entries NOT found in hashtable.\n");
                     }
 
-                    Debug.Assert(_notificationIdToDependenciesHash.Count == _commandHashToNotificationId.Count, "always keep these maps in sync!");
+                    Debug.Assert(_notificationIdToDependenciesHash.Count == _commandHashToNotificationId.Count, "always keep these maps in [....]!");
                 }
 
                 return entry; // DependencyList inherits from List<SqlDependency>
@@ -436,7 +436,7 @@ namespace System.Data.SqlClient {
                         // same SqlDependency can be associated with more than one command, so we have to continue till the end...
                     }
 
-                    Debug.Assert(commandHashesToRemove.Count == notificationIdsToRemove.Count, "maps should be kept in sync");
+                    Debug.Assert(commandHashesToRemove.Count == notificationIdsToRemove.Count, "maps should be kept in [....]");
                     for (int i = 0; i < notificationIdsToRemove.Count; i++ ) {
                         // cleanup the entry outside of foreach
                         // do it inside finally block to avoid ThreadAbort exception interrupt this operation
@@ -448,7 +448,7 @@ namespace System.Data.SqlClient {
                         }
                     }
 
-                    Debug.Assert(_notificationIdToDependenciesHash.Count == _commandHashToNotificationId.Count, "always keep these maps in sync!");
+                    Debug.Assert(_notificationIdToDependenciesHash.Count == _commandHashToNotificationId.Count, "always keep these maps in [....]!");
                 }
             }
             finally {
index ea4a9a88bde1796f6dcdd32fe766e115935a20ea..da0013b801c4bd97e6640925680d68dd491b3c31 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlEnums.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 4e65e159d58b109a030d56569ff6cb25a4a3d91b..9b4d5ee36a54fe547f882c20362b92dad92401cb 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlError.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -15,8 +15,8 @@ namespace System.Data.SqlClient {
     [Serializable]
     public sealed class SqlError {
 
-        // 
-
+        // bug fix - MDAC 48965 - missing source of exception
+        // fixed by [....]
         private string source = TdsEnums.SQL_PROVIDER_NAME;
         private int    number;
         private byte   state;
@@ -51,17 +51,17 @@ namespace System.Data.SqlClient {
             this.win32ErrorCode = 0;
         }
 
-        // 
-
-
-
+        // bug fix - MDAC #49280 - SqlError does not implement ToString();
+        // I did not include an exception stack because the correct exception stack is only available 
+        // on SqlException, and to obtain that the SqlError would have to have backpointers all the
+        // way back to SqlException.  If the user needs a call stack, they can obtain it on SqlException.
         public override string ToString() {
             //return this.GetType().ToString() + ": " + this.message;
             return typeof(SqlError).ToString() + ": " + this.message; // since this is sealed so we can change GetType to typeof
         }
 
-        // 
-
+        // bug fix - MDAC #48965 - missing source of exception
+        // fixed by [....]
         public string Source {
             get { return this.source;}
         }
index 18ea5d8081eb9c7df6f17169624e76592fc8b1fe..143be5fa3998022acc55300f766577fd1f06a435 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlErrorCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 72dab1c0a59597cf332e638752eeab57ef5d6dcf..2da09347a564b15094177d85c19d4ee95dfd914e 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 1e3eadb40fd039d81cb130c72185da31a56a82d0..51e69e9dd4d1c048adac9656adac2cec949190dd 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlInfoMessageEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 386a6cea58ea04613b6901a0a4440c4ffa00b994..6221416a111dbd37aebd988d27c5a0cfd6fd7f56 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlInternalConnection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient
@@ -30,7 +30,11 @@ namespace System.Data.SqlClient
         private bool                         _isEnlistedInTransaction; // is the server-side connection enlisted? true while we're enlisted, reset only after we send a null...
         private byte[]                       _promotedDTCToken;        // token returned by the server when we promote transaction
         private byte[]                       _whereAbouts;             // cache the whereabouts (DTC Address) for exporting
-
+        
+        private bool                         _isGlobalTransaction = false; // Whether this is a Global Transaction (Non-MSDTC, Azure SQL DB Transaction)
+        private bool                         _isGlobalTransactionEnabledForServer = false; // Whether Global Transactions are enabled for this Azure SQL DB Server
+        private static readonly Guid         _globalTransactionTMID = new Guid("1c742caf-6680-40ea-9c26-6b6846079764"); // ID of the Non-MSDTC, Azure SQL DB Transaction Manager
+        
         // if connection is not open: null
         // if connection is open: currently active database
         internal string CurrentDatabase { get; set; }
@@ -147,7 +151,25 @@ namespace System.Data.SqlClient
                 _promotedDTCToken = value;
             }
         }
-                
+
+        internal bool IsGlobalTransaction {
+            get {
+                return _isGlobalTransaction;
+            }
+            set {
+                _isGlobalTransaction = value;
+            }
+        }
+
+        internal bool IsGlobalTransactionsEnabledForServer {
+            get {
+                return _isGlobalTransactionEnabledForServer;
+            }
+            set {
+                _isGlobalTransactionEnabledForServer = value;
+            }
+        }
+
         override public DbTransaction BeginTransaction(IsolationLevel iso) {
             return BeginSqlTransaction(iso, null, false);
         }
@@ -389,8 +411,35 @@ namespace System.Data.SqlClient
                     // our delegated transaction, and proceed to enlist
                     // in the promoted one.
 
-                    if (tx.EnlistPromotableSinglePhase(delegatedTransaction)) {
-                        hasDelegatedTransaction = true;
+                    // NOTE: Global Transactions is an Azure SQL DB only 
+                    // feature where the Transaction Manager (TM) is not
+                    // MS-DTC. Sys.Tx added APIs to support Non MS-DTC
+                    // promoter types/TM in .NET 4.6.1. Following directions
+                    // from .NETFX shiproom, to avoid a "hard-dependency"
+                    // (compile time) on Sys.Tx, we use reflection to invoke
+                    // the new APIs. Further, the _isGlobalTransaction flag
+                    // indicates that this is an Azure SQL DB Transaction
+                    // that could be promoted to a Global Transaction (it's
+                    // always false for on-prem Sql Server). The Promote()
+                    // call in SqlDelegatedTransaction makes sure that the
+                    // right Sys.Tx.dll is loaded and that Global Transactions
+                    // are actually allowed for this Azure SQL DB.
+
+                    if (_isGlobalTransaction) {
+                        if (SysTxForGlobalTransactions.EnlistPromotableSinglePhase == null) {
+                            // This could be a local Azure SQL DB transaction. 
+                            hasDelegatedTransaction = tx.EnlistPromotableSinglePhase(delegatedTransaction);
+                        }
+                        else {
+                            hasDelegatedTransaction = (bool)SysTxForGlobalTransactions.EnlistPromotableSinglePhase.Invoke(tx, new object[] { delegatedTransaction, _globalTransactionTMID });
+                        }
+                    }
+                    else {
+                        // This is an MS-DTC distributed transaction
+                        hasDelegatedTransaction = tx.EnlistPromotableSinglePhase(delegatedTransaction);
+                    }
+
+                    if (hasDelegatedTransaction) {
 
                         this.DelegatedTransaction = delegatedTransaction;
 
@@ -438,16 +487,25 @@ namespace System.Data.SqlClient
 
                 byte[] cookie = null;
 
-                if (null == _whereAbouts) {
-                     byte[] dtcAddress = GetDTCAddress();
+                if (_isGlobalTransaction) {
+                    if (SysTxForGlobalTransactions.GetPromotedToken == null) {
+                        throw SQL.UnsupportedSysTxForGlobalTransactions();
+                    }
+
+                    cookie = (byte[])SysTxForGlobalTransactions.GetPromotedToken.Invoke(tx, null);
+                }
+                else {
+                    if (null == _whereAbouts) {
+                        byte[] dtcAddress = GetDTCAddress();
+
+                        if (null == dtcAddress) {
+                            throw SQL.CannotGetDTCAddress();
+                        }
+                        _whereAbouts = dtcAddress;
+                    }
 
-                     if (null == dtcAddress) {
-                        throw SQL.CannotGetDTCAddress();
-                     }
-                     _whereAbouts = dtcAddress;
+                    cookie = GetTransactionCookie(tx, _whereAbouts);
                 }
-                    
-                cookie = GetTransactionCookie(tx, _whereAbouts);
 
                 // send cookie to server to finish enlistment
                 PropagateTransactionCookie(cookie);
index becb5962e50dc9992258f674f70e5eb5565b5d82..16772773427a571d0ec9cd49cef262c062498ea2 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlInternalConnectionSmi.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index d8c893d6c82dec5fcbbafa0c844ec587e582e4c5..c07b195ac1ba68e64a6342f0c03bbc6e4bc32456 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlInternalConnectionTds.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient
@@ -168,6 +168,8 @@ namespace System.Data.SqlClient
 
         private readonly TimeoutTimer _timeout;
 
+        private static HashSet<int> transientErrors = new HashSet<int>();
+
         internal SessionData CurrentSessionData {
             get {
                 if (_currentSessionData != null) {
@@ -299,6 +301,11 @@ namespace System.Data.SqlClient
         private Guid _originalClientConnectionId = Guid.Empty;
         private string _routingDestination = null;
 
+        static SqlInternalConnectionTds()
+        {
+            populateTransientErrors();
+        }
+
         // although the new password is generally not used it must be passed to the c'tor
         // the new Login7 packet will always write out the new password (or a length of zero and no bytes if not present)
         //
@@ -313,7 +320,9 @@ namespace System.Data.SqlClient
                 SqlConnectionString         userConnectionOptions = null, // NOTE: userConnectionOptions may be different to connectionOptions if the connection string has been expanded (see SqlConnectionString.Expand)
                 SessionData                 reconnectSessionData = null,
                 DbConnectionPool            pool = null,
-                string                      accessToken = null) : base(connectionOptions) {
+                string                      accessToken = null,
+                bool applyTransientFaultHandling = false
+                ) : base(connectionOptions) {
 
 #if DEBUG
             if (reconnectSessionData != null) {
@@ -388,7 +397,33 @@ namespace System.Data.SqlClient
                 {
 #endif //DEBUG
                     _timeout = TimeoutTimer.StartSecondsTimeout(connectionOptions.ConnectTimeout);
-                    OpenLoginEnlist(_timeout, connectionOptions, credential, newPassword, newSecurePassword, redirectedUserInstance);
+
+                    // If transient fault handling is enabled then we can retry the login upto the ConnectRetryCount.
+                    int connectionEstablishCount = applyTransientFaultHandling ? connectionOptions.ConnectRetryCount + 1 : 1;
+                    int transientRetryIntervalInMilliSeconds = connectionOptions.ConnectRetryInterval * 1000; // Max value of transientRetryInterval is 60*1000 ms. The max value allowed for ConnectRetryInterval is 60
+                    for (int i = 0; i < connectionEstablishCount; i++)
+                    {
+                        try
+                        {
+                            OpenLoginEnlist(_timeout, connectionOptions, credential, newPassword, newSecurePassword, redirectedUserInstance);
+                            break;
+                        }
+                        catch (SqlException sqlex)
+                        {
+                            if (i + 1 == connectionEstablishCount 
+                                || !applyTransientFaultHandling
+                                || _timeout.IsExpired
+                                || _timeout.MillisecondsRemaining < transientRetryIntervalInMilliSeconds
+                                || !IsTransientError(sqlex))
+                            {
+                                throw sqlex;
+                            }
+                            else
+                            {
+                                Thread.Sleep(transientRetryIntervalInMilliSeconds);
+                            }
+                        }
+                    }
                 }
 #if DEBUG
                 finally {
@@ -416,7 +451,61 @@ namespace System.Data.SqlClient
                 Bid.Trace("<sc.SqlInternalConnectionTds.ctor|ADV> %d#, constructed new TDS internal connection\n", ObjectID);
             }
         }
-       
+
+        // The erros in the transient error set are contained in
+        // https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-error-messages/#transient-faults-connection-loss-and-other-temporary-errors
+        private static void populateTransientErrors()
+        {
+            // SQL Error Code: 4060
+            // Cannot open database "%.*ls" requested by the login. The login failed.
+            transientErrors.Add(4060);
+            // SQL Error Code: 10928
+            // Resource ID: %d. The %s limit for the database is %d and has been reached.
+            transientErrors.Add(10928);
+            // SQL Error Code: 10929
+            // Resource ID: %d. The %s minimum guarantee is %d, maximum limit is %d and the current usage for the database is %d. 
+            // However, the server is currently too busy to support requests greater than %d for this database.
+            transientErrors.Add(10929);
+            // SQL Error Code: 40197
+            // You will receive this error, when the service is down due to software or hardware upgrades, hardware failures, 
+            // or any other failover problems. The error code (%d) embedded within the message of error 40197 provides 
+            // additional information about the kind of failure or failover that occurred. Some examples of the error codes are 
+            // embedded within the message of error 40197 are 40020, 40143, 40166, and 40540.
+            transientErrors.Add(40197);
+            transientErrors.Add(40020);
+            transientErrors.Add(40143);
+            transientErrors.Add(40166);
+            // The service has encountered an error processing your request. Please try again.
+            transientErrors.Add(40540);
+            // The service is currently busy. Retry the request after 10 seconds. Incident ID: %ls. Code: %d.
+            transientErrors.Add(40501);
+            // Database '%.*ls' on server '%.*ls' is not currently available. Please retry the connection later. 
+            // If the problem persists, contact customer support, and provide them the session tracing ID of '%.*ls'.
+            transientErrors.Add(40613);
+            // Do federation errors deserve to be here ? 
+            // Note: Federation errors 10053 and 10054 might also deserve inclusion in your retry logic.
+            //transientErrors.Add(10053);
+            //transientErrors.Add(10054);
+        }
+
+
+        // Returns true if the Sql error is a transient.
+        private bool IsTransientError(SqlException exc)
+        {
+            if (exc == null)
+            {
+                return false;
+            }
+            foreach (SqlError error in exc.Errors)
+            {
+                if (transientErrors.Contains(error.Number))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
         internal Guid ClientConnectionId {
             get {
                 return _clientConnectionId;
@@ -1229,8 +1318,8 @@ namespace System.Data.SqlClient
                 _federatedAuthenticationRequested = true;
             }
 
-            // The TCE feature is implicitly requested 
-            requestedFeatures |= TdsEnums.FeatureExtension.Tce;
+            // The TCE and GLOBALTRANSACTIONS feature are implicitly requested
+            requestedFeatures |= TdsEnums.FeatureExtension.Tce | TdsEnums.FeatureExtension.GlobalTransactions;
             _parser.TdsLogin(login, requestedFeatures, _recoverySessionData, _fedAuthFeatureExtensionData);
         }
 
@@ -1339,8 +1428,9 @@ namespace System.Data.SqlClient
         ResolveExtendedServerName(serverInfo, !redirectedUserInstance, connectionOptions);
 
         long timeoutUnitInterval = 0;
+        Boolean isParallel = connectionOptions.MultiSubnetFailover || connectionOptions.TransparentNetworkIPResolution;
 
-        if (connectionOptions.MultiSubnetFailover) {
+        if(isParallel) {
             // Determine unit interval
             if (timeout.IsInfinite) {
                 timeoutUnitInterval = checked((long)(ADP.FailoverTimeoutStep * (1000L * ADP.DefaultConnectionTimeout)));
@@ -1360,9 +1450,11 @@ namespace System.Data.SqlClient
         //  back into the parser for the error cases.
         int attemptNumber = 0;
         TimeoutTimer intervalTimer = null;
+        TimeoutTimer firstTransparentAttemptTimeout = TimeoutTimer.StartMillisecondsTimeout(ADP.FirstTransparentAttemptTimeout);
+        TimeoutTimer attemptOneLoginTimeout = timeout;
         while(true) {
 
-            if (connectionOptions.MultiSubnetFailover) {
+            if(isParallel) {
                 attemptNumber++;
                 // Set timeout for this attempt, but don't exceed original timer                
                 long nextTimeoutInterval = checked(timeoutUnitInterval * attemptNumber);
@@ -1385,14 +1477,26 @@ namespace System.Data.SqlClient
                 // 
 
 
+                Boolean isFirstTransparentAttempt =  connectionOptions.TransparentNetworkIPResolution && attemptNumber == 1;
+
+                if(isFirstTransparentAttempt) {
+                    attemptOneLoginTimeout = firstTransparentAttemptTimeout;
+                }
+                else {
+                    if(isParallel) {
+                        attemptOneLoginTimeout = intervalTimer;
+                    }
+                }
+                
                 AttemptOneLogin(    serverInfo, 
                                     newPassword,
                                     newSecurePassword,
-                                    !connectionOptions.MultiSubnetFailover,    // ignore timeout for SniOpen call unless MSF 
-                                    connectionOptions.MultiSubnetFailover ? intervalTimer : timeout);
+                                    !isParallel,    // ignore timeout for SniOpen call unless MSF , and TNIR
+                                    attemptOneLoginTimeout,
+                                    isFirstTransparentAttempt:isFirstTransparentAttempt);
                 
                 if (connectionOptions.MultiSubnetFailover && null != ServerProvidedFailOverPartner) {
-                    // connection succeeded: trigger exception if server sends failover partner and MultiSubnetFailover is used
+                    // connection succeeded: trigger exception if server sends failover partner and MultiSubnetFailover is used.
                     throw SQL.MultiSubnetFailoverWithFailoverPartner(serverProvidedFailoverPartner: true, internalConnection: this);
                 }
 
@@ -1710,7 +1814,7 @@ namespace System.Data.SqlClient
     }
 
     // Common code path for making one attempt to establish a connection and log in to server.
-    private void AttemptOneLogin(ServerInfo serverInfo, string newPassword, SecureString newSecurePassword, bool ignoreSniOpenTimeout, TimeoutTimer timeout, bool withFailover = false) {
+    private void AttemptOneLogin(ServerInfo serverInfo, string newPassword, SecureString newSecurePassword, bool ignoreSniOpenTimeout, TimeoutTimer timeout, bool withFailover = false, bool isFirstTransparentAttempt = true) {
         if (Bid.AdvancedOn) {
             Bid.Trace("<sc.SqlInternalConnectionTds.AttemptOneLogin|ADV> %d#, timout=%I64d{msec}, server=", ObjectID, timeout.MillisecondsRemaining);
             Bid.PutStr(serverInfo.ExtendedServerName);
@@ -1729,6 +1833,7 @@ namespace System.Data.SqlClient
                         ConnectionOptions.TrustServerCertificate,
                         ConnectionOptions.IntegratedSecurity,
                         withFailover,
+                        isFirstTransparentAttempt,
                         ConnectionOptions.Authentication);
 
         timeoutErrorInternal.EndPhase(SqlConnectionTimeoutErrorPhase.ConsumePreLoginHandshake);
@@ -2338,6 +2443,23 @@ namespace System.Data.SqlClient
                         break;
                     }
 
+                case TdsEnums.FEATUREEXT_GLOBALTRANSACTIONS: {
+                        if (Bid.AdvancedOn) {
+                            Bid.Trace("<sc.SqlInternalConnectionTds.OnFeatureExtAck> %d#, Received feature extension acknowledgement for GlobalTransactions\n", ObjectID);
+                        }
+
+                        if (data.Length < 1) {
+                            Bid.Trace("<sc.SqlInternalConnectionTds.OnFeatureExtAck|ERR> %d#, Unknown version number for GlobalTransactions\n", ObjectID);
+                            throw SQL.ParsingError(ParsingErrorState.CorruptedTdsStream);
+                        }
+
+                        IsGlobalTransaction = true;    
+                        if (1 == data[0]) {
+                            IsGlobalTransactionsEnabledForServer = true;
+                        }
+                        break;
+                    }
+
                 default: {
                         // Unknown feature ack 
                         throw SQL.ParsingErrorFeatureId(ParsingErrorState.UnknownFeatureAck, featureId);
index 590e7bfe329746f60ddd1579d1e2a9cdf128cece..89498fc18eca77d4e7f1b0231a94cf52fac0d54c 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="SqlNotificationEventArgs.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 155094a3fa8644bf22fe26c2ba924abf076c58c2..9b238a4706148ac933a6ffd8c093e4fb4f4ad05b 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlParameter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -345,7 +345,7 @@ namespace System.Data.SqlClient {
                                        maxlen = (long)mt.FixedLength;
                                }
                 else if (Size > 0 || Size < 0) {
-                       maxlen = Size;   // 
+                       maxlen = Size;   // Bug Fix: 302768, 302695, 302694, 302693
                 }
                                else {
                                        maxlen = MSS.SmiMetaData.GetDefaultForType( mt.SqlDbType ).MaxLength;
@@ -1532,32 +1532,32 @@ namespace System.Data.SqlClient {
         // byte length and a parameter length > than that expressable in 2 bytes
         internal MetaType ValidateTypeLengths(bool yukonOrNewer) {
             MetaType mt = InternalMetaType;
-            // MDAC 
-
-
-
-
+            // MDAC bug #50839 + #52829 : Since the server will automatically reject any
+            // char, varchar, binary, varbinary, nchar, or nvarchar parameter that has a
+            // byte sizeInCharacters > 8000 bytes, we promote the parameter to image, text, or ntext.  This
+            // allows the user to specify a parameter type using a COM+ datatype and be able to
+            // use that parameter against a BLOB column.
             if ((SqlDbType.Udt != mt.SqlDbType) && (false == mt.IsFixed) && (false == mt.IsLong)) { // if type has 2 byte length
                 long actualSizeInBytes = this.GetActualSize();
                 long sizeInCharacters = this.Size;
 
-                // 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+                // Bug: VSTFDevDiv #636867
+                // Notes:
+                // 'actualSizeInBytes' is the size of value passed; 
+                // 'sizeInCharacters' is the parameter size;
+                // 'actualSizeInBytes' is in bytes; 
+                // 'this.Size' is in charaters; 
+                // 'sizeInCharacters' is in characters; 
+                // 'TdsEnums.TYPE_SIZE_LIMIT' is in bytes;
+                // For Non-NCharType and for non-Yukon or greater variables, size should be maintained;
+                // Reverting changes from bug VSTFDevDiv # 479739 as it caused an regression;
+                // Modifed variable names from 'size' to 'sizeInCharacters', 'actualSize' to 'actualSizeInBytes', and 
+                // 'maxSize' to 'maxSizeInBytes'
+                // The idea is to
+                //  1) revert the regression from bug 479739
+                //  2) fix as many scenarios as possible including bug 636867
+                //  3) cause no additional regression from 3.5 sp1
+                // Keeping these goals in mind - the following are the changes we are making
 
                 long maxSizeInBytes = 0;
                 if ((mt.IsNCharType) && (yukonOrNewer))
index a8951459130eb0c47cd50493300dfa7be5fe6801..4367bc7a67c42b6d31e86eadde43da8042d1affb 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlParameterCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index c50e7ea4f77e53723091dbd314363d816ebca2d9..e26069f2dac58e16f41813d407681af30bdcc23b 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlReferenceCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index a0ff53b1fad939318be022e2f042522a28063b69..75d37032331e654a387fa58e4404494d841fa279 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlRowUpdatedEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 2233e9dff949c3856877fb8fac0a19f69dd64598..6d3bcd921b4039fe27092bec8b8fa828a676f976 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlRowUpdatingEvent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 8236a519bb17a5be357567c6bed2086b5c7b1117..d5e60712a2445ea745e04a38592185a9cbf68f6a 100644 (file)
@@ -180,7 +180,7 @@ namespace System.Data.SqlClient
                                     byteBufferUsed += bytesRead;
                                 }
                                 else {
-                                    // We need more data - setup the callback, and mark this as not completed sync
+                                    // We need more data - setup the callback, and mark this as not completed [....]
                                     completedSynchronously = false;
                                     getBytesTask.ContinueWith((t) =>
                                     {
index 688fe4f3de0c401392cad2f45aff4920d49aec46..be518346a2ebb85f53ef123de46d0148979b7ac4 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlStatistics.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index e80bd516e0167e667c9e623b39b2b6158417b9f9..6fa1900911ec3c2e931b935e13fd9a1130e1a6b6 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlStream.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 namespace System.Data.SqlClient {
 
@@ -244,8 +244,8 @@ namespace System.Data.SqlClient {
         }
 
         internal XmlReader ToXmlReader() {
-            // Dev11 
-
+            // Dev11 Bug #315513: Exception type breaking change from 4.0 RTM when calling GetChars on null xml
+            // We need to wrap all exceptions inside a TargetInvocationException to simulate calling CreateSqlReader via MethodInfo.Invoke
             return SqlTypes.SqlXml.CreateSqlXmlReader(this, closeInput: true, throwTargetInvocationExceptions: true);
         }
         
index e7927edf1a4d90c8d02419f5f5902f5d03fbcdb9..ff02ce923a3131478d2a374e66d45a4d1c1597ee 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlTransaction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index a97f766bfc57c0c63e533852bb94e95dc4645dc8..cfde73a6f2b63fb5affeba47682c1c1187714dcc 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation. All Rights Reserved.
 //     Information Contained Herein is Proprietary and Confidential.
 //  </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index bffbbf250f14cf44575332a5353e9073eddf1fbd..ae7086f0a0608738e7f68bea83af34dc3b580978 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlUtil.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -840,16 +840,115 @@ namespace System.Data.SqlClient {
             }
         }
 
+        static internal Exception NullCspKeyPath(bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.ArgumentNull(TdsEnums.TCE_PARAM_MASTERKEY_PATH, Res.GetString(Res.TCE_NullCspPathSysErr, @"/"));
+            }
+            else {
+                return ADP.ArgumentNull(TdsEnums.TCE_PARAM_MASTERKEY_PATH, Res.GetString(Res.TCE_NullCspPath, @"/"));
+            }
+        }
+
+        static internal Exception NullCngKeyPath(bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.ArgumentNull(TdsEnums.TCE_PARAM_MASTERKEY_PATH, Res.GetString(Res.TCE_NullCngPathSysErr, @"/"));
+            }
+            else {
+                return ADP.ArgumentNull(TdsEnums.TCE_PARAM_MASTERKEY_PATH, Res.GetString(Res.TCE_NullCngPath, @"/"));
+            }
+        }
+
         static internal Exception InvalidCertificatePath(string actualCertificatePath, string[] validLocations, bool isSystemOp) {
             Debug.Assert(2 == validLocations.Length);
             if (isSystemOp) {
                 return ADP.Argument(Res.GetString(Res.TCE_InvalidCertificatePathSysErr, actualCertificatePath, validLocations[0], validLocations[1], @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
-                }
+            }
             else {
                 return ADP.Argument(Res.GetString(Res.TCE_InvalidCertificatePath, actualCertificatePath, validLocations[0], validLocations[1], @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
             }
         }
 
+        static internal Exception InvalidCspPath(string masterKeyPath, bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.Argument(Res.GetString(Res.TCE_InvalidCspPathSysErr, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+            else {
+                return ADP.Argument(Res.GetString(Res.TCE_InvalidCspPath, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+        }
+
+        static internal Exception InvalidCngPath(string masterKeyPath, bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.Argument(Res.GetString(Res.TCE_InvalidCngPathSysErr, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+            else {
+                return ADP.Argument(Res.GetString(Res.TCE_InvalidCngPath, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+        }
+
+        static internal Exception EmptyCspName(string masterKeyPath, bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.Argument(Res.GetString(Res.TCE_EmptyCspNameSysErr, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+            else {
+                return ADP.Argument(Res.GetString(Res.TCE_EmptyCspName, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+        }
+
+        static internal Exception EmptyCngName(string masterKeyPath, bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.Argument(Res.GetString(Res.TCE_EmptyCngNameSysErr, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+            else {
+                return ADP.Argument(Res.GetString(Res.TCE_EmptyCngName, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+        }
+
+        static internal Exception EmptyCspKeyId(string masterKeyPath, bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.Argument(Res.GetString(Res.TCE_EmptyCspKeyIdSysErr, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+            else {
+                return ADP.Argument(Res.GetString(Res.TCE_EmptyCspKeyId, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+        }
+
+        static internal Exception EmptyCngKeyId(string masterKeyPath, bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.Argument(Res.GetString(Res.TCE_EmptyCngKeyIdSysErr, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+            else {
+                return ADP.Argument(Res.GetString(Res.TCE_EmptyCngKeyId, masterKeyPath, @"/"), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+        }
+
+        static internal Exception InvalidCspName(string cspName, string masterKeyPath, bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.Argument(Res.GetString(Res.TCE_InvalidCspNameSysErr, cspName, masterKeyPath), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+            else {
+                return ADP.Argument(Res.GetString(Res.TCE_InvalidCspName, cspName, masterKeyPath), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+        }
+
+        static internal Exception InvalidCspKeyIdentifier(string keyIdentifier, string masterKeyPath, bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.Argument(Res.GetString(Res.TCE_InvalidCspKeyIdSysErr, keyIdentifier, masterKeyPath), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+            else {
+                return ADP.Argument(Res.GetString(Res.TCE_InvalidCspKeyId, keyIdentifier, masterKeyPath), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+        }
+
+        static internal Exception InvalidCngKey(string masterKeyPath, string cngProviderName, string keyIdentifier, bool isSystemOp) {
+            if (isSystemOp) {
+                return ADP.Argument(Res.GetString(Res.TCE_InvalidCngKeySysErr, masterKeyPath, cngProviderName, keyIdentifier), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+            else {
+                return ADP.Argument(Res.GetString(Res.TCE_InvalidCngKey, masterKeyPath, cngProviderName, keyIdentifier), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
+            }
+        }
+
         static internal Exception InvalidCertificateLocation(string certificateLocation, string certificatePath, string[] validLocations, bool isSystemOp) {
             Debug.Assert(2 == validLocations.Length);
             if (isSystemOp) {
@@ -895,14 +994,34 @@ namespace System.Data.SqlClient {
             return ADP.Argument(Res.GetString(Res.TCE_InvalidCiphertextLengthInEncryptedCEK, actual, expected, certificateName), TdsEnums.TCE_PARAM_ENCRYPTED_CEK);
         }
 
+        static internal Exception InvalidCiphertextLengthInEncryptedCEKCsp(int actual, int expected, string masterKeyPath) {
+            return ADP.Argument(Res.GetString(Res.TCE_InvalidCiphertextLengthInEncryptedCEKCsp, actual, expected, masterKeyPath), TdsEnums.TCE_PARAM_ENCRYPTED_CEK);
+        }
+
+        static internal Exception InvalidCiphertextLengthInEncryptedCEKCng(int actual, int expected, string masterKeyPath) {
+            return ADP.Argument(Res.GetString(Res.TCE_InvalidCiphertextLengthInEncryptedCEKCng, actual, expected, masterKeyPath), TdsEnums.TCE_PARAM_ENCRYPTED_CEK);
+        }
+
         static internal Exception InvalidSignatureInEncryptedCEK(int actual, int expected, string masterKeyPath) {
             return ADP.Argument(Res.GetString(Res.TCE_InvalidSignatureInEncryptedCEK, actual, expected, masterKeyPath), TdsEnums.TCE_PARAM_ENCRYPTED_CEK);
         }
 
+        static internal Exception InvalidSignatureInEncryptedCEKCsp(int actual, int expected, string masterKeyPath) {
+            return ADP.Argument(Res.GetString(Res.TCE_InvalidSignatureInEncryptedCEKCsp, actual, expected, masterKeyPath), TdsEnums.TCE_PARAM_ENCRYPTED_CEK);
+        }
+
+        static internal Exception InvalidSignatureInEncryptedCEKCng(int actual, int expected, string masterKeyPath) {
+            return ADP.Argument(Res.GetString(Res.TCE_InvalidSignatureInEncryptedCEKCng, actual, expected, masterKeyPath), TdsEnums.TCE_PARAM_ENCRYPTED_CEK);
+        }
+
         static internal Exception InvalidCertificateSignature(string certificatePath) {
             return ADP.Argument(Res.GetString(Res.TCE_InvalidCertificateSignature, certificatePath), TdsEnums.TCE_PARAM_ENCRYPTED_CEK);
         }
 
+        static internal Exception InvalidSignature(string masterKeyPath) {
+            return ADP.Argument(Res.GetString(Res.TCE_InvalidSignature, masterKeyPath), TdsEnums.TCE_PARAM_ENCRYPTED_CEK);
+        }
+
         static internal Exception CertificateWithNoPrivateKey(string keyPath, bool isSystemOp) {
             if (isSystemOp) {
                 return ADP.Argument(Res.GetString(Res.TCE_CertificateWithNoPrivateKeySysErr, keyPath), TdsEnums.TCE_PARAM_MASTERKEY_PATH);
@@ -1114,6 +1233,17 @@ namespace System.Data.SqlClient {
             return ADP.InvalidOperation(Res.GetString(Res.SQL_OpenResultCountExceeded));
         }
 
+        //
+        // Global Transactions.
+        //
+        static internal Exception GlobalTransactionsNotEnabled() {
+            return ADP.InvalidOperation(Res.GetString(Res.GT_Disabled));
+        }
+
+        static internal Exception UnsupportedSysTxForGlobalTransactions() {
+            return ADP.InvalidOperation(Res.GetString(Res.GT_UnsupportedSysTxVersion));
+        }
+
         static internal readonly byte[] AttentionHeader = new byte[] {
             TdsEnums.MT_ATTN,               // Message Type
             TdsEnums.ST_EOM,                // Status
@@ -1528,4 +1658,50 @@ namespace System.Data.SqlClient {
             }
         }
     }
+
+    /// <summary>
+    /// This class holds methods invoked on System.Transactions through reflection for Global Transactions
+    /// </summary>
+    static internal class SysTxForGlobalTransactions {
+        
+        private static readonly Lazy<MethodInfo> _enlistPromotableSinglePhase = new Lazy<MethodInfo>(() => 
+            typeof(SysTx.Transaction).GetMethod("EnlistPromotableSinglePhase", new Type[] {typeof(SysTx.IPromotableSinglePhaseNotification), typeof(Guid)}));
+
+        private static readonly Lazy<MethodInfo> _setDistributedTransactionIdentifier = new Lazy<MethodInfo>(() => 
+            typeof(SysTx.Transaction).GetMethod("SetDistributedTransactionIdentifier", new Type[] { typeof(SysTx.IPromotableSinglePhaseNotification), typeof(Guid) }));
+
+        private static readonly Lazy<MethodInfo> _getPromotedToken = new Lazy<MethodInfo>(() => 
+            typeof(SysTx.Transaction).GetMethod("GetPromotedToken"));
+
+        /// <summary>
+        /// Enlists the given IPromotableSinglePhaseNotification and Non-MSDTC Promoter type into a transaction
+        /// </summary>
+        /// <returns>The MethodInfo instance to be invoked. Null if the method doesn't exist</returns>
+        public static MethodInfo EnlistPromotableSinglePhase {
+            get {
+                return _enlistPromotableSinglePhase.Value;
+            }
+        }
+
+        /// <summary>
+        /// Sets the given DistributedTransactionIdentifier for a Transaction instance.
+        /// Needs to be invoked when using a Non-MSDTC Promoter type
+        /// </summary>
+        /// <returns>The MethodInfo instance to be invoked. Null if the method doesn't exist</returns>
+        public static MethodInfo SetDistributedTransactionIdentifier {
+            get {
+                return _setDistributedTransactionIdentifier.Value;
+            }
+        }
+
+        /// <summary>
+        /// Gets the Promoted Token for a Transaction
+        /// </summary>
+        /// <returns>The MethodInfo instance to be invoked. Null if the method doesn't exist</returns>
+        public static MethodInfo GetPromotedToken {
+            get {
+                return _getPromotedToken.Value;
+            }
+        }   
+    }
 }//namespace
index 7f9efe37d1d7c4311b880dc7c09f6db836a4d06e..319e252b21b826ab021665c375d7941afb450591 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="TdsEnums.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -200,6 +200,7 @@ namespace System.Data.SqlClient {
         public const byte FEATUREEXT_SRECOVERY  = 0x01;
         public const byte FEATUREEXT_FEDAUTH    = 0x02;
         public const byte FEATUREEXT_TCE        = 0x04;
+        public const byte FEATUREEXT_GLOBALTRANSACTIONS = 0x05;
 
         [Flags]
         public enum FeatureExtension:uint {
@@ -207,6 +208,7 @@ namespace System.Data.SqlClient {
             SessionRecovery=1,
             FedAuth=2,
             Tce=4,
+            GlobalTransactions = 8,
         }
 
         public const byte FEDAUTHLIB_LIVEID        = 0X00;
@@ -1017,6 +1019,13 @@ namespace System.Data.SqlClient {
         ActiveDirectoryPassword,
         ActiveDirectoryIntegrated,
     }
+    // This enum indicates the state of TransparentNetworkIPResolution
+    // The first attempt when TNIR is on should be sequential. If the first attempt failes next attempts should be parallel.
+    internal enum TransparentNetworkResolutionState {
+        DisabledMode = 0,
+        SequentialMode,
+        ParallelMode
+    }; 
 
     internal class ActiveDirectoryAuthentication
     {
index 18da7f1535441a0c73c02f9bc0f7fc18bbe6914b..56a661fe1ae0ea93f3c417c7bf11296ab62f4be8 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="TdsParameterSetter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 74ddcf726a68535f33a81fab0896885fa762b2d1..8c2c8cc5d8764a37eb98ae612a4ea8925a6c355f 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="TdsParser.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -385,6 +385,7 @@ namespace System.Data.SqlClient {
                               bool trustServerCert,
                               bool integratedSecurity,
                               bool withFailover,
+                              bool isFirstTransparentAttempt,
                               SqlAuthenticationMethod authType) {
             if (_state != TdsParserState.Closed) {
                 Debug.Assert(false, "TdsParser.Connect called on non-closed connection!");
@@ -433,8 +434,21 @@ namespace System.Data.SqlClient {
 
             bool fParallel = _connHandler.ConnectionOptions.MultiSubnetFailover;
 
-            _physicalStateObj.CreatePhysicalSNIHandle(serverInfo.ExtendedServerName, ignoreSniOpenTimeout, timerExpire, 
-                        out instanceName, _sniSpnBuffer, false, true, fParallel);
+            TransparentNetworkResolutionState transparentNetworkResolutionState;
+            if(_connHandler.ConnectionOptions.TransparentNetworkIPResolution)
+            {
+                if(isFirstTransparentAttempt)
+                    transparentNetworkResolutionState = TransparentNetworkResolutionState.SequentialMode;
+                else
+                    transparentNetworkResolutionState = TransparentNetworkResolutionState.ParallelMode;
+            }
+            else 
+                transparentNetworkResolutionState = TransparentNetworkResolutionState.DisabledMode;
+
+            int  totalTimeout = _connHandler.ConnectionOptions.ConnectTimeout;
+
+            _physicalStateObj.CreatePhysicalSNIHandle(serverInfo.ExtendedServerName, ignoreSniOpenTimeout, timerExpire,
+                        out instanceName, _sniSpnBuffer, false, true, fParallel, transparentNetworkResolutionState, totalTimeout);
 
             if (TdsEnums.SNI_SUCCESS != _physicalStateObj.Status) {
                 _physicalStateObj.AddError(ProcessSNIError(_physicalStateObj));
@@ -491,7 +505,7 @@ namespace System.Data.SqlClient {
 
                 // On Instance failure re-connect and flush SNI named instance cache.
                 _physicalStateObj.SniContext=SniContext.Snix_Connect;
-                _physicalStateObj.CreatePhysicalSNIHandle(serverInfo.ExtendedServerName, ignoreSniOpenTimeout, timerExpire, out instanceName, _sniSpnBuffer, true, true, fParallel);
+                _physicalStateObj.CreatePhysicalSNIHandle(serverInfo.ExtendedServerName, ignoreSniOpenTimeout, timerExpire, out instanceName, _sniSpnBuffer, true, true, fParallel, transparentNetworkResolutionState, totalTimeout);
 
                 if (TdsEnums.SNI_SUCCESS != _physicalStateObj.Status) {
                     _physicalStateObj.AddError(ProcessSNIError(_physicalStateObj));
@@ -547,7 +561,7 @@ namespace System.Data.SqlClient {
                 _physicalStateObj.AddError(ProcessSNIError(_physicalStateObj));
                 ThrowExceptionAndWarning(_physicalStateObj);
             }
-            // create a new packet encryption changes the internal packet size 
+            // create a new packet encryption changes the internal packet size Bug# 228403
             try {}   // EmptyTry/Finally to avoid FXCop violation
             finally {
                 _physicalStateObj.ClearAllWritePackets();
@@ -977,7 +991,7 @@ namespace System.Data.SqlClient {
                                 ThrowExceptionAndWarning(_physicalStateObj);
                             }
 
-                            // create a new packet encryption changes the internal packet size 
+                            // create a new packet encryption changes the internal packet size Bug# 228403
                             try {} // EmptyTry/Finally to avoid FXCop violation
                             finally {
                                 _physicalStateObj.ClearAllWritePackets();
@@ -1213,11 +1227,11 @@ namespace System.Data.SqlClient {
             // Don't break the connection if it is already closed
             breakConnection &= (TdsParserState.Closed != _state);
             if (breakConnection) {
-                if ((_state == TdsParserState.OpenNotLoggedIn) && (_connHandler.ConnectionOptions.MultiSubnetFailover || _loginWithFailover) && (temp.Count == 1) && ((temp[0].Number == TdsEnums.TIMEOUT_EXPIRED) || (temp[0].Number == TdsEnums.SNI_WAIT_TIMEOUT))) {
-                    // DevDiv2 
-
-
-
+                if ((_state == TdsParserState.OpenNotLoggedIn) && (_connHandler.ConnectionOptions.TransparentNetworkIPResolution || _connHandler.ConnectionOptions.MultiSubnetFailover || _loginWithFailover) && (temp.Count == 1) && ((temp[0].Number == TdsEnums.TIMEOUT_EXPIRED) || (temp[0].Number == TdsEnums.SNI_WAIT_TIMEOUT))) {
+                    // DevDiv2 Bug 459546: With "MultiSubnetFailover=yes" in the Connection String, SQLClient incorrectly throws a Timeout using shorter time slice (3-4 seconds), not honoring the actual 'Connect Timeout'
+                    // http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/459546
+                    // For Multisubnet Failover we slice the timeout to make reconnecting faster (with the assumption that the server will not failover instantaneously)
+                    // However, when timeout occurs we need to not doom the internal connection and also to mark the TdsParser as closed such that the login will be will retried
                     breakConnection = false;
                     Disconnect();
                 }
@@ -1364,10 +1378,10 @@ namespace System.Data.SqlClient {
                     len-=iColon;
                     /*
                         The error message should come back in the following format: "TCP Provider: MESSAGE TEXT"
-                        Fix 
-
-
-*/
+                        Fix Bug 370686, if the message is recieved on a Win9x OS, the error message will not contain MESSAGE TEXT 
+                        per Bug: 269574.  If we get a errormessage with no message text, just return the entire message otherwise 
+                        return just the message text.
+                    */
                     if (len > 0) { 
                         errorMessage = errorMessage.Substring(iColon, len); 
                     }
@@ -1894,8 +1908,8 @@ namespace System.Data.SqlClient {
                                 // anyways so we need to consume all errors.  This is not the case
                                 // if we have already given out a reader.  If we have already given out
                                 // a reader we need to throw the error but not halt further processing.  We used to
-                                // halt processing and that was a 
-
+                                // halt processing and that was a bug preventing the user from
+                                // processing subsequent results.
 
                                 if (null != dataStream) { // Webdata 104560
                                     if (!dataStream.IsInitialized) {
@@ -3230,8 +3244,8 @@ namespace System.Data.SqlClient {
 
             string server;
 
-            // MDAC 
-
+            // MDAC bug #49307 - server sometimes does not send over server field! In those cases
+            // we will use our locally cached value.
             if (byteLen == 0) {
                 server = _server;
             }
@@ -4820,8 +4834,8 @@ namespace System.Data.SqlClient {
                     break;
 
                 case SqlDbType.Timestamp:
-                    // Dev10 
-
+                    // Dev10 Bug #479607 - this should have been the same as SqlDbType.Binary, but it's a rejected breaking change
+                    // Dev10 Bug #752790 - don't assert when it does happen
                     break;
 
                 default:
@@ -7011,6 +7025,18 @@ namespace System.Data.SqlClient {
             return len; // size of data written
         }
 
+        internal int WriteGlobalTransactionsFeatureRequest(bool write /* if false just calculates the length */) {
+            int len = 5; // 1byte = featureID, 4bytes = featureData length
+
+            if (write) {
+                // Write Feature ID
+                _physicalStateObj.WriteByte(TdsEnums.FEATUREEXT_GLOBALTRANSACTIONS);
+                WriteInt(0, _physicalStateObj); // we don't send any data
+            }
+
+            return len;
+        }
+
         internal void TdsLogin(SqlLogin rec,
                                TdsEnums.FeatureExtension requestedFeatures,
                                SessionData recoverySessionData,
@@ -7140,6 +7166,9 @@ namespace System.Data.SqlClient {
                     if ((requestedFeatures & TdsEnums.FeatureExtension.Tce) != 0) {
                         length += WriteTceFeatureRequest (false);
                     }
+                    if ((requestedFeatures & TdsEnums.FeatureExtension.GlobalTransactions) != 0) {
+                        length += WriteGlobalTransactionsFeatureRequest(false);
+                    }
                     length++; // for terminator
                 }
             }
@@ -7371,6 +7400,9 @@ namespace System.Data.SqlClient {
                     if ((requestedFeatures & TdsEnums.FeatureExtension.Tce) != 0) {
                         WriteTceFeatureRequest (true);
                     };
+                    if ((requestedFeatures & TdsEnums.FeatureExtension.GlobalTransactions) != 0) {
+                        WriteGlobalTransactionsFeatureRequest(true);
+                    };
                     _physicalStateObj.WriteByte(0xFF); // terminator
                 }
             } // try
@@ -7809,8 +7841,8 @@ namespace System.Data.SqlClient {
 
                 bool originalThreadHasParserLock = _connHandler.ThreadHasParserLockForClose;
                 try {
-                    // Dev11 
-
+                    // Dev11 Bug 385286 : ExecuteNonQueryAsync hangs when trying to write a parameter which generates ArgumentException and while handling that exception the server disconnects the connection
+                    // Need to set this to true such that if we have an error sending\processing the attention, we won't deadlock ourselves
                     _connHandler.ThreadHasParserLockForClose = true;
 
                     // If _outputPacketNumber prior to ResetBuffer was not equal to 1, a packet was already
@@ -7916,7 +7948,7 @@ namespace System.Data.SqlClient {
                     }, TaskScheduler.Default);
                 }
 
-                // Finished sync
+                // Finished [....]
                 return null;
             }
             catch (Exception e) {
@@ -8105,7 +8137,7 @@ namespace System.Data.SqlClient {
                                   throw SQL.PrecisionValueOutOfRange(precision);
                               }
 
-                              // 
+                              // bug 49512, make sure the value matches the scale the user enters
                               if (!isNull) {
                                   if (isSqlVal) {
                                       value = AdjustSqlDecimalScale((SqlDecimal)value, scale);
@@ -8741,7 +8773,7 @@ namespace System.Data.SqlClient {
                 case SqlDbType.Char:
                     stateObj.WriteByte(TdsEnums.SQLBIGCHAR);
                     WriteUnsignedShort(checked((ushort)(metaData.MaxLength)), stateObj);
-                    WriteUnsignedInt(_defaultCollation.info, stateObj); // 
+                    WriteUnsignedInt(_defaultCollation.info, stateObj); // TODO: Use metadata's collation??
                     stateObj.WriteByte(_defaultCollation.sortId);
                     break;
                 case SqlDbType.DateTime:
@@ -8773,13 +8805,13 @@ namespace System.Data.SqlClient {
                 case SqlDbType.NChar:
                     stateObj.WriteByte(TdsEnums.SQLNCHAR);
                     WriteUnsignedShort(checked((ushort)(metaData.MaxLength*2)), stateObj);
-                    WriteUnsignedInt(_defaultCollation.info, stateObj); // 
+                    WriteUnsignedInt(_defaultCollation.info, stateObj); // TODO: Use metadata's collation??
                     stateObj.WriteByte(_defaultCollation.sortId);
                     break;
                 case SqlDbType.NText:
                     stateObj.WriteByte(TdsEnums.SQLNVARCHAR);
                     WriteUnsignedShort(unchecked((ushort)MSS.SmiMetaData.UnlimitedMaxLengthIndicator), stateObj);
-                    WriteUnsignedInt(_defaultCollation.info, stateObj); // 
+                    WriteUnsignedInt(_defaultCollation.info, stateObj); // TODO: Use metadata's collation??
                     stateObj.WriteByte(_defaultCollation.sortId);
                     break;
                 case SqlDbType.NVarChar:
@@ -8790,7 +8822,7 @@ namespace System.Data.SqlClient {
                     else {
                         WriteUnsignedShort(checked((ushort)(metaData.MaxLength*2)), stateObj);
                     }
-                    WriteUnsignedInt(_defaultCollation.info, stateObj); // 
+                    WriteUnsignedInt(_defaultCollation.info, stateObj); // TODO: Use metadata's collation??
                     stateObj.WriteByte(_defaultCollation.sortId);
                     break;
                 case SqlDbType.Real:
@@ -8816,7 +8848,7 @@ namespace System.Data.SqlClient {
                 case SqlDbType.Text:
                     stateObj.WriteByte(TdsEnums.SQLBIGVARCHAR);
                     WriteUnsignedShort(unchecked((ushort)MSS.SmiMetaData.UnlimitedMaxLengthIndicator), stateObj);
-                    WriteUnsignedInt(_defaultCollation.info, stateObj); // 
+                    WriteUnsignedInt(_defaultCollation.info, stateObj); // TODO: Use metadata's collation??
                     stateObj.WriteByte(_defaultCollation.sortId);
                     break;
                 case SqlDbType.Timestamp:
@@ -8834,7 +8866,7 @@ namespace System.Data.SqlClient {
                 case SqlDbType.VarChar:
                     stateObj.WriteByte(TdsEnums.SQLBIGVARCHAR);
                     WriteUnsignedShort(unchecked((ushort)metaData.MaxLength), stateObj);
-                    WriteUnsignedInt(_defaultCollation.info, stateObj); // 
+                    WriteUnsignedInt(_defaultCollation.info, stateObj); // TODO: Use metadata's collation??
                     stateObj.WriteByte(_defaultCollation.sortId);
                     break;
                 case SqlDbType.Variant:
@@ -9095,7 +9127,7 @@ namespace System.Data.SqlClient {
         /// <returns></returns>
         internal void WriteTceUserTypeAndTypeInfo(SqlMetaDataPriv mdPriv, TdsParserStateObject stateObj) {
             // Write the UserType (4 byte value)
-            WriteInt(0x0, stateObj); // 
+            WriteInt(0x0, stateObj); // TODO: fix this- timestamp columns have 0x50 value here
 
             Debug.Assert(SqlDbType.Xml != mdPriv.type);
             Debug.Assert(SqlDbType.Udt != mdPriv.type);
@@ -9201,7 +9233,7 @@ namespace System.Data.SqlClient {
                     // todo:
                     // for xml WriteTokenLength results in a no-op
                     // discuss this with blaine ...
-                    // (Microsoft) xml datatype does not have token length in its metadata. So it should be a noop.
+                    // ([....]) xml datatype does not have token length in its metadata. So it should be a noop.
 
                     switch (md.type) {
                         case SqlDbType.Decimal:
@@ -11325,7 +11357,8 @@ namespace System.Data.SqlClient {
                             null == _statistics,
                             _statisticsIsInTransaction,
                             _fPreserveTransaction,
-                            null == _connHandler ? "(null)" : _connHandler.ConnectionOptions.MultiSubnetFailover.ToString((IFormatProvider)null));
+                            null == _connHandler ? "(null)" : _connHandler.ConnectionOptions.MultiSubnetFailover.ToString((IFormatProvider)null),
+                            null == _connHandler ? "(null)" : _connHandler.ConnectionOptions.TransparentNetworkIPResolution.ToString((IFormatProvider)null));
         }
 
         private string TraceObjectClass(object instance) {
index 7d2408a90427e9245dd3e076e20996fc7e7c2802..01322f3193b03aef098f7750b65d271124a045dc 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="TdsParserHelperClasses.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index 6ec933e0578ae547114ebbda8582d4ceb5f54306..73286f199c2e7eafe6448b1db9246f691cd30c8d 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="TdsParserSafeHandles.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -132,7 +132,9 @@ namespace System.Data.SqlClient {
             out byte[] instanceName, 
             bool flushCache, 
             bool fSync,
-            bool fParallel)
+            bool fParallel,
+            TransparentNetworkResolutionState transparentNetworkResolutionState,
+            int totalTimeout)
             : base(IntPtr.Zero, true) {
 
             RuntimeHelpers.PrepareConstrainedRegions();
@@ -146,8 +148,9 @@ namespace System.Data.SqlClient {
                     timeout = Timeout.Infinite; // -1 == native SNIOPEN_TIMEOUT_VALUE / INFINITE
                 }
 
+                int transparentNetworkResolutionStateNo = (int)transparentNetworkResolutionState;
                 _status = SNINativeMethodWrapper.SNIOpenSyncEx(myInfo, serverName, ref base.handle,
-                            spnBuffer, instanceName, flushCache, fSync, timeout, fParallel);
+                            spnBuffer, instanceName, flushCache, fSync, timeout, fParallel, transparentNetworkResolutionStateNo, totalTimeout);
             }
         }
 
index cb4d9b10da77bacf0d18e705a046aecd30cced14..d60e9ecdc77b9a5e04316e7643868cdc4a50a3c1 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="TdsParserSessionPool.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index ed189942b101cfaafd192668cdd6c8bdbadcfa5e..75e2a4b30c85da8f852bfbb12892cd57078088b4 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="TdsParserStateObject.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -646,7 +646,7 @@ namespace System.Data.SqlClient {
             // Should only be called for MARS - that is the only time we need to take
             // the ResetConnection lock!
 
-            // SQL BU DT 333026 - it was raised in a security review by Microsoft questioning whether
+            // SQL BU DT 333026 - it was raised in a security review by [....] questioning whether
             // we need to actually process the resulting packet (sp_reset ack or error) to know if the
             // reset actually succeeded.  There was a concern that if the reset failed and we proceeded
             // there might be a security issue present.  We have been assured by the server that if
@@ -744,7 +744,8 @@ namespace System.Data.SqlClient {
             return myInfo;
         }
 
-        internal void CreatePhysicalSNIHandle(string serverName, bool ignoreSniOpenTimeout, long timerExpire, out byte[] instanceName, byte[] spnBuffer, bool flushCache, bool async, bool fParallel) {
+        internal void CreatePhysicalSNIHandle(string serverName, bool ignoreSniOpenTimeout, long timerExpire, out byte[] instanceName, byte[] spnBuffer, bool flushCache, bool async, bool fParallel, TransparentNetworkResolutionState transparentNetworkResolutionState, int totalTimeout)
+        {
             SNINativeMethodWrapper.ConsumerInfo myInfo = CreateConsumerInfo(async);
 
             // Translate to SNI timeout values (Int32 milliseconds)
@@ -761,8 +762,7 @@ namespace System.Data.SqlClient {
                     timeout = 0;
                 }
             }
-
-            _sessionHandle = new SNIHandle(myInfo, serverName, spnBuffer, ignoreSniOpenTimeout, checked((int)timeout), out instanceName, flushCache, !async, fParallel);
+            _sessionHandle = new SNIHandle(myInfo, serverName, spnBuffer, ignoreSniOpenTimeout, checked((int)timeout), out instanceName, flushCache, !async, fParallel, transparentNetworkResolutionState, totalTimeout);
         }
 
         internal bool Deactivate() {
@@ -1611,9 +1611,9 @@ namespace System.Data.SqlClient {
             Debug.Assert(_syncOverAsync || !_asyncReadWithoutSnapshot, "This method is not safe to call when doing sync over async");
 
             if (null == encoding) {
-                // 
-
-
+                // Bug 462435:CR: TdsParser.DrainData(stateObj) hitting timeout exception after Connection Resiliency change
+                // http://vstfdevdiv:8080/web/wi.aspx?pcguid=22f9acc9-569a-41ff-b6ac-fac1b6370209&id=462435
+                // Need to skip the current column before throwing the error - this ensures that the state shared between this and the data reader is consistent when calling DrainData
                 if (isPlp) {
                     ulong ignored;
                     if (!_parser.TrySkipPlpValue((ulong)length, this, out ignored)) {
@@ -2046,8 +2046,8 @@ namespace System.Data.SqlClient {
                         TaskCompletionSource<object> source = _networkPacketTaskSource;
 
                         if (_parser.Connection.IsInPool) {
-                            // Dev11 
-
+                            // Dev11 Bug 390048 : Timing issue between OnTimeout and ReadAsyncCallback results in SqlClient's packet parsing going out of [....]          
+                            // We should never timeout if the connection is currently in the pool: the safest thing to do here is to doom the connection to avoid corruption
                             Debug.Assert(_parser.Connection.IsConnectionDoomed, "Timeout occurred while the connection is in the pool");
                             _parser.State = TdsParserState.Broken;
                             _parser.Connection.BreakConnection();
@@ -2150,7 +2150,7 @@ namespace System.Data.SqlClient {
                 }
 
                 // -1 == Infinite
-                //  0 == Already timed out (NOTE: To simulate the same behavior as sync we will only timeout on 0 if we receive an IO Pending from SNI)
+                //  0 == Already timed out (NOTE: To simulate the same behavior as [....] we will only timeout on 0 if we receive an IO Pending from SNI)
                 // >0 == Actual timeout remaining
                 int msecsRemaining = GetTimeoutRemaining();
                 if (msecsRemaining > 0) {
@@ -2206,7 +2206,7 @@ namespace System.Data.SqlClient {
                     ChangeNetworkPacketTimeout(0, Timeout.Infinite);
                 }
                 // DO NOT HANDLE PENDING READ HERE - which is TdsEnums.SNI_SUCCESS_IO_PENDING state.
-                // That is handled by user who initiated async read, or by ReadNetworkPacket which is sync over async.
+                // That is handled by user who initiated async read, or by ReadNetworkPacket which is [....] over async.
             }
             finally {
                 if (readPacket != IntPtr.Zero) {
@@ -2375,7 +2375,7 @@ namespace System.Data.SqlClient {
                                 // For DB Mirroring Failover during login, never break the connection, just close the TdsParser (Devdiv 846298)
                                 _parser.Disconnect();
                             }
-                            else if ((_parser.State == TdsParserState.OpenNotLoggedIn) && (_parser.Connection.ConnectionOptions.MultiSubnetFailover))
+                            else if ((_parser.State == TdsParserState.OpenNotLoggedIn) && (_parser.Connection.ConnectionOptions.MultiSubnetFailover || _parser.Connection.ConnectionOptions.TransparentNetworkIPResolution))
                             {
                                 // For MultiSubnet Failover during login, never break the connection, just close the TdsParser
                                 _parser.Disconnect();
@@ -3084,7 +3084,7 @@ namespace System.Data.SqlClient {
             Debug.Assert(Parser.Connection._parserLock.ThreadMayHaveLock(), "Thread is writing without taking the connection lock");
             Task task = SNIWritePacket(Handle, packet, out sniError, canAccumulate, callerHasConnectionLock: true);
 
-            // Check to see if the timeout has occured.  This time out code is special case code to allow BCP writes to timeout to fix 
+            // Check to see if the timeout has occured.  This time out code is special case code to allow BCP writes to timeout to fix bug 350558, eventually we should make all writes timeout.
             if (_bulkCopyOpperationInProgress && 0 == GetTimeoutRemaining()) {
                 _parser.Connection.ThreadHasParserLockForClose = true;
                 try {
@@ -3278,7 +3278,7 @@ namespace System.Data.SqlClient {
         internal void AddError(SqlError error) {
             Debug.Assert(error != null, "Trying to add a null error");
 
-            // Switch to sync once we see an error
+            // Switch to [....] once we see an error
             _syncOverAsync = true;
 
             lock (_errorAndWarningsLock) {
@@ -3312,7 +3312,7 @@ namespace System.Data.SqlClient {
         internal void AddWarning(SqlError error) {
             Debug.Assert(error != null, "Trying to add a null error");
 
-            // Switch to sync once we see a warning
+            // Switch to [....] once we see a warning
             _syncOverAsync = true;
 
             lock (_errorAndWarningsLock){
index 26807bf6c1e63a9c238edb60b20832f2d3db542f..187a187d0b684f3bb5cad24e69928dcc021d6568 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="TdsParserStaticFunctionality.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
@@ -67,7 +67,7 @@ namespace System.Data.SqlClient {
                         if (index+1 < aliasLookup.Length) {
                             string parsedAliasName = aliasLookup.Substring(index+1);
 
-                            // Fix 
+                            // Fix bug 298286
                             if ("dbnetlib" == parsedProtocol) {
                                     index = parsedAliasName.IndexOf(':');
                                     if (-1 != index && index + 1 < parsedAliasName.Length) {
index 7b856bb85003c066597f4d9726667143a1883187..406e2b7b6143ff2c490ba6148995aa955f07b170 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="TdsRecordBufferSetter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index 63e1dd4ed68863d288e74ed753a89b43bd05ffc3..aef315de517822974b49b8c05cd7e03423801464 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="TdsValueSetter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index 5fd69f0547e89c4b48db3e4223e3d3e76cb06e0c..b843d55299776632ca0535289f5cae9500809155 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="assemblycache.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 //------------------------------------------------------------------------------
index e09e10f5aa868c1455856cd20b0fd425e64fd062..c717a8efc77794635dc91667a9decff6a2962f00 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="SqlInternalTransaction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data.SqlClient {
index f17f069a00fc8000deb74f7048781afa08c62443..24cfe1c3ee8b0315a382a718808043010969a725 100644 (file)
@@ -3,7 +3,7 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <owner current="true" primary="false">Mugunm</owner>
 //
 //------------------------------------------------------------------------------
index 8bc08c54840eb718b2209ac7269f53192900fbf9..54d94f05102a116b6514ca1c5e213599972be993 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="StateChangeEvent.cs" company="Microsoft">
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 29c3d5a2486f34532a599afcb08b9e3581104bae..c097f9319c2e8061064a3d051fe427a27b1ef862 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="UniqueConstraint.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index fee6ab5be6bb78f1eb431bdb99c346127d89a298..4c8a962083a8f1949afbee4488a78dbb79ec7e3f 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="XDRSchema.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index c240bd1ed33a520a23fe2a5676ed62d36e3ff843..fc3ecb9f9ff2c9199921b22c47948fed8f65b45b 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="XMLDiffLoader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index de839b472bef4f7cab49772c4e1e1dfce028dcec..f23239bdfdf250cbe95d8abf2d0315beb8455873 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XMLSchema.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -1346,7 +1346,7 @@ namespace System.Data {
             table = _ds.Tables.GetTable(XmlConvert.DecodeName(typeName), _TableUri);
 // TOD: Do not do this fix
 //            if (table == null && node.RefName.IsEmpty && !IsTopLevelElement(node) && _TableUri != null && _TableUri.Length > 0) { 
-//                _TableUri = null;    // it means form="qualified", so child element inherits namespace. Microsoft
+//                _TableUri = null;    // it means form="qualified", so child element inherits namespace. [....]
 //            }
             
             if (!FromInference || (FromInference && table == null)) 
@@ -1388,7 +1388,7 @@ namespace System.Data {
                         table.Locale = new CultureInfo(value);
                     }
                     else {
-                        // everett 
+                        // everett bug behavior before <... msdata:Locale=""/> inherit from DataSet
                         table.Locale = CultureInfo.InvariantCulture;
                     }
                 }
@@ -1574,7 +1574,7 @@ namespace System.Data {
             new NameType("byte"                , typeof(SByte)   ), /* XSD Apr */
             new NameType("date"                , typeof(DateTime)), /* XSD Apr */
             new NameType("dateTime"            , typeof(DateTime)), /* XSD Apr */
-            new NameType("decimal"              , typeof(decimal) ), /* XSD 2001 Microsoft */
+            new NameType("decimal"              , typeof(decimal) ), /* XSD 2001 [....] */
             new NameType("double"              , typeof(double)  ), /* XSD Apr */
             new NameType("duration"            , typeof(TimeSpan)), /* XSD Apr */
             new NameType("float"               , typeof(Single)  ), /* XSD Apr */
@@ -2026,7 +2026,7 @@ namespace System.Data {
             }
 
 
-            // XDR Microsoft change
+            // XDR [....] change
             string strDefault = (attrib.Use == XmlSchemaUse.Required) ? GetMsdataAttribute(attr, Keywords.MSD_DEFAULTVALUE) : attr.DefaultValue;
             if ((attr.Use == XmlSchemaUse.Optional) && (strDefault == null ))
                 strDefault = attr.FixedValue;
@@ -2227,7 +2227,7 @@ namespace System.Data {
                     _ds.Locale = new CultureInfo(value);
                 }
                 else {
-                    // everett 
+                    // everett bug behavior before <... msdata:Locale=""/> becoming CultureInfo(0x409)
                     _ds.Locale = CultureInfo.InvariantCulture;
                 }
             }
index 24733de45bc77efddc2941292231b9c762496aed..566e2581f16e36aec3b68084a1619a6acb21f700 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XmlDataLoader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -313,7 +313,7 @@ namespace System.Data {
                 XmlElement e = xdoc.DocumentElement;
                 DataTable topTable = (DataTable) nodeToSchemaMap.GetSchemaForNode(e, FIgnoreNamespace(e));
                 if (topTable != null) {
-                    topRow = topTable.CreateEmptyRow(); //Microsoft perf
+                    topRow = topTable.CreateEmptyRow(); //enzol perf
                     nodeToRowMap[ e ] = topRow;
 
                     // get all field values.
index 4b288fb5f258c4b0b06a2e6178c8b959f52104f9..674f812d5ad225de6e0c42f08347f9d27dbfe747 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="XmlKeywords.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
index 7f46e7e6d5463c7acced663ad414264d8a710c67..a1aab9cd5645377e5770b26e8a2e04a0b7970588 100644 (file)
@@ -2,9 +2,9 @@
 // <copyright file="XmlToDatasetMap.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -128,10 +128,10 @@ namespace System.Data {
         // Used to infere schema
 
         private TableSchemaInfo AddTableSchema(DataTable table, XmlNameTable nameTable) {
-            // Microsoft: Because in our case reader already read the document all names that we can meet in the
+            // [....]: Because in our case reader already read the document all names that we can meet in the
             //       document already has an entry in NameTable.
             //       If in future we will build identity map before reading XML we can replace Get() to Add()
-            // Microsoft: GetIdentity is called from two places: BuildIdentityMap() and LoadRows()
+            // [....]: GetIdentity is called from two places: BuildIdentityMap() and LoadRows()
             //       First case deals with decoded names; Second one with encoded names.
             //       We decided encoded names in first case (instead of decoding them in second) 
             //       because it save us time in LoadRows(). We have, as usual, more data them schemas
@@ -148,10 +148,10 @@ namespace System.Data {
         }
 
         private TableSchemaInfo AddTableSchema(XmlNameTable nameTable, DataTable table) {
-            // Microsoft:This is the opposite of the previous function:
+            // [....]:This is the opposite of the previous function:
             //       we populate the nametable so that the hash comparison can happen as
             //       object comparison instead of strings.
-            // Microsoft: GetIdentity is called from two places: BuildIdentityMap() and LoadRows()
+            // [....]: GetIdentity is called from two places: BuildIdentityMap() and LoadRows()
             //       First case deals with decoded names; Second one with encoded names.
             //       We decided encoded names in first case (instead of decoding them in second) 
             //       because it save us time in LoadRows(). We have, as usual, more data them schemas
index 55e888fd44916953b11b32193a5146aa62f7e781..2129d476241af183f1d07cd6677a9027205ab2aa 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="xmlsaver.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Data {
@@ -153,7 +153,7 @@ namespace System.Data {
             if (propInst is PropertyCollection) {
                 return;
             }
-            // Microsoft: perf: Why not have this as a table?
+            // [....]: perf: Why not have this as a table?
             // there are several xdo properties that equal to some xml attributes, we should not explicitly ouput them.
             if (
                 0 == String.Compare(pd.Name, "Namespace"    , StringComparison.Ordinal) ||
@@ -887,7 +887,7 @@ namespace System.Data {
                     dsElement.SetAttribute(Keywords.MSD_ISDATASET, Keywords.MSDNS, Keywords.TRUE);
                     dsElement.SetAttribute(Keywords.MSD_MAINDATATABLE, Keywords.MSDNS, XmlConvert.EncodeLocalName(((dt.Namespace.Length == 0)?dt.TableName : (dt.Namespace + ":" + dt.TableName))));
 
-                    if (dt.CaseSensitive) { // WebData 111631 :it is a 
+                    if (dt.CaseSensitive) { // WebData 111631 :it is a bug to go and write casesensitive attrib as 'true', by default
                         dsElement.SetAttribute(Keywords.MSD_CASESENSITIVE, Keywords.MSDNS, Keywords.TRUE);
                     }
                     if (dt.ShouldSerializeLocale() || !dt.Locale.Equals(CultureInfo.CurrentCulture)) {
@@ -1093,7 +1093,7 @@ namespace System.Data {
                             schNode.AppendChild(type);
                         }else {
     #if DEBUG
-    // Microsoft: TO DO: replace the constructor with IsEqual(XmlElement)
+    // [....]: TO DO: replace the constructor with IsEqual(XmlElement)
     //                        Debug.Assert(col.SimpleType.IsEqual(new SimpleType(elmSimpeType)), "simpleTypes with the same name have to be the same: "+name);
     #endif
                         }
@@ -1288,7 +1288,7 @@ namespace System.Data {
             minOccurs = (col.AllowDBNull) ? 0 : 1;
 
 
-            // Microsoft 2001 change
+            // [....] 2001 change
             if (col.ColumnMapping == MappingType.Attribute && minOccurs != 0)
                 root.SetAttribute(Keywords.USE, Keywords.REQUIRED);
 
@@ -1582,8 +1582,8 @@ namespace System.Data {
             if (!table.TypeName.IsEmpty) {
                 if (schFormat != SchemaFormat.Remoting)
                     root.SetAttribute( Keywords.TYPE, NewDiffgramGen.QualifiedName((string)prefixes[table.TypeName.Namespace], table.TypeName.Name) );
-// 
-
+// Bug 108292: Since we always write complex type as annonymous type, DO NOT WRITE ITS NAME
+//  DO NOT REVERT THIS CHANGE
             }
 
             XmlElement compositor = null;
index fa67c094ac302f10d5feaa8656e36928c2a4e152..c06feef60f4885b5a0cc479a44984338110bfdab 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="BaseTreeIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 namespace System.Xml {
 
index d2e5280a55434a1fb1bd17e7cb521eed38ac25be..45420d2d287614c2293239fd12d359a97e48af41 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataDocumentXPathNavigator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 #pragma warning disable 618 // ignore obsolete warning about XmlDataDocument
 namespace System.Xml {
index 2b85cf142ea61fbf7dca6ae8460653e0c5a50220..e8f4f51e6e664ec63f8faa611f262f478d4fafd1 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataPointer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 #pragma warning disable 618 // ignore obsolete warning about XmlDataDocument
 namespace System.Xml {
index de28bbd118debc5a088ca537544e5ef327c64842..390bf5780d991a8907718adb3feba20cd3a29e27 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="DataSetMapper.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 #pragma warning disable 618 // ignore obsolete warning about XmlDataDocument
 namespace System.Xml {
index 8e4b622acefe0b265d3387298ab326fbe59190e7..de0c6882c97f15bcbf4a70dd57513e5b6272fa2c 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="RegionIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 #pragma warning disable 618 // ignore obsolete warning about XmlDataDocument
 namespace System.Xml {
index 34099a111b7ec2271f903efa60701b599c653cac..5e90984a748486a25e5a650c5c3e5790d2e1a5eb 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="TreeIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 #pragma warning disable 618 // ignore obsolete warning about XmlDataDocument
 namespace System.Xml {
index b905328c39e32fe228179ae7b3fda672eaf72060..f8f3d1d95c519a2aff87a3ad758b5af41d56cb60 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XPathNodePointer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 #pragma warning disable 618 // ignore obsolete warning about XmlDataDocument
 namespace System.Xml {
@@ -169,7 +169,7 @@ namespace System.Xml {
             }
         }
 
-        //Microsoft: From CodeReview: Perf: We should have another array similar w/ 
+        //[....]: From CodeReview: Perf: We should have another array similar w/ 
         //  xmlNodeType_To_XpathNodeType_Map that will return String.Empty for everything but the element and
         //  attribute case.
         internal string LocalName { 
index 33f8307d359853e33fabaa9ec129427b2cac7cea..476facfa93a118343450211464287e5d5ddc9791 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XmlBoundElement.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="false" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="false" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 #pragma warning disable 618 // ignore obsolete warning about XmlDataDocument
 namespace System.Xml {
index b2dc5d618b85938cc67a376118f16314b4bbcd57..c2b65001e20fdf4314b416854c964de726333424 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XmlDataDocument.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 namespace System.Xml {
     using System;
@@ -606,9 +606,9 @@ namespace System.Xml {
                     DataRow row = node.Row;
 
                     // create new attrs & elements for row
-                    // For detached rows: we are in sync w/ temp values
-                    // For non-detached rows: we are in sync w/ the current values
-                    // For deleted rows: we never sync
+                    // For detached rows: we are in [....] w/ temp values
+                    // For non-detached rows: we are in [....] w/ the current values
+                    // For deleted rows: we never [....]
                     DataRowVersion rowVersion = ( row.RowState == DataRowState.Detached ) ? DataRowVersion.Proposed : DataRowVersion.Current;
                     foreach( DataColumn col in row.Table.Columns ) {
                         if ( !IsNotMapped(col) ) {
@@ -1273,7 +1273,7 @@ namespace System.Xml {
             if ( col.ColumnMapping == MappingType.SimpleContent && Convert.IsDBNull( value ) && !rowElement.IsFoliated )
                 ForceFoliation( rowElement, ElementState.WeakFoliation);
             else {
-                // no need to sync if not foliated
+                // no need to [....] if not foliated
                 if ( !IsFoliated( rowElement ) ) {
 #if DEBUG
                     // If the new value is null, we should be already foliated if there is a DataPointer that points to the column
@@ -1433,7 +1433,7 @@ lblDoNestedRelationSync:
                     XmlBoundElement be = row.Element;
                     Debug.Assert( be != null );
                     if ( be.IsFoliated ) {
-                        // Need to sync changes from ROM to DOM
+                        // Need to [....] changes from ROM to DOM
                         OnColumnValueChanged( row, col, be );
                     }
                 }
@@ -1535,7 +1535,7 @@ lblDoNestedRelationSync:
         // Change the childElement position in the tree to conform to the parent nested relationship in ROM
         private void OnNestedParentChange(DataRow child, XmlBoundElement childElement, DataColumn childCol) {
             Debug.Assert( child.Element == childElement && childElement.Row == child );
-            // This function is (and s/b) called as a result of ROM changes, therefore XML changes done here should not be sync-ed to ROM
+            // This function is (and s/b) called as a result of ROM changes, therefore XML changes done here should not be [....]-ed to ROM
             Debug.Assert( ignoreXmlEvents == true );
 #if DEBUG
             // In order to check that this move does not change the connected/disconnected state of the node
@@ -1697,7 +1697,7 @@ lblDoNestedRelationSync:
                     OnNodeRemovedFromTree( node, oldParent );
                 }
                 else {
-                    // Removing from disconnected tree to disconnected tree: just sync the old region
+                    // Removing from disconnected tree to disconnected tree: just [....] the old region
                     OnNodeRemovedFromFragment( node, oldParent );
                 }
             }
@@ -1742,7 +1742,7 @@ lblDoNestedRelationSync:
             XmlBoundElement oldRowElem;
 
             if ( mapper.GetRegion( oldParent, out oldRowElem ) ) {
-                // Sync the old region if it is not deleted
+                // [....] the old region if it is not deleted
                 DataRow row = oldRowElem.Row;
                 // Since the old old region was disconnected, then the row can be only Deleted or Detached
                 Debug.Assert( ! IsRowLive( row ) );
@@ -2171,7 +2171,7 @@ lblDoNestedRelationSync:
         private void SynchronizeRowFromRowElement( XmlBoundElement rowElement ) {
             SynchronizeRowFromRowElement( rowElement, null );
         }
-        // Sync row fields w/ values from rowElem region.
+        // [....] row fields w/ values from rowElem region.
         // If rowElemList is != null, all subregions of rowElem are appended to it.
         private void SynchronizeRowFromRowElement( XmlBoundElement rowElement, ArrayList rowElemList ) {
             DataRow row = rowElement.Row;
@@ -2402,7 +2402,7 @@ lblDoNestedRelationSync:
                 }
             }
             else {
-                // We only need to sync the embedded sub-regions
+                // We only need to [....] the embedded sub-regions
                 TreeIterator iter = new TreeIterator( node );
                 for (bool fMore = iter.NextRowElement(); fMore; fMore = iter.NextRightRowElement() )
                     rowElemList.Add( iter.CurrentNode );
@@ -2588,7 +2588,7 @@ lblDoNestedRelationSync:
 
             if ( row.RowState == DataRowState.Detached )
                 SynchronizeRowFromRowElementEx( rowElement, rowElemList );
-            // Nothing to do if the row is deleted (there is no sync-ing from XML to ROM for deleted rows)
+            // Nothing to do if the row is deleted (there is no [....]-ing from XML to ROM for deleted rows)
         }
 
         private void SetNestedParentRegion( XmlBoundElement childRowElem ) {
index c3e983958861b665ea460499dc18f1b936087701..ed253a35a148831a33a114737dc49219625a982f 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XmlDataImplementation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 //------------------------------------------------------------------------------
 #pragma warning disable 618 // ignore obsolete warning about XmlDataDocument
 namespace System.Xml {
index 0783a6e8088726b1d47136ecd548fddf092297fb..a2bf64dd4981d86ddef4cb5b671c852af066fe32 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="BidPrivateBase.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
-// <owner current="true" primary="false">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
+// <owner current="true" primary="false">[....]</owner>
 // Last Modified: 6-November-2008
 //-----------------------------------------------------------------------------------------------
 
index 1a53c754fa6bf7286ada8bbbc64b87ce8fadc459..1e7281d0cd71904451b367c46684bc2ecab657c2 100644 (file)
@@ -8,7 +8,7 @@ namespace Microsoft.InfoCards
     using System.Security.Cryptography;
     using System.Security.Cryptography.Xml;
 
-    // copied from IdentityModel\CryptoHelper.cs and they need to be kept in sync.  After V1, we need to rethink how we can have 
+    // copied from IdentityModel\CryptoHelper.cs and they need to be kept in [....].  After V1, we need to rethink how we can have 
     // a single place to ask this question.  Perhaps even add it as an extensibility
 
     internal static class InfoCardCryptoHelper
index 124f9f45a4f77638dfef32a75c0f1ae622f5ef18..8a130a0f34285449d7dc69480eff98e832bf3edd 100644 (file)
@@ -25,7 +25,6 @@ namespace System
         /// We have this separate method for getting the parsed elements out of the TargetFrameworkName so we can
         /// more easily support this on other platforms.
         /// </summary>
-        [System.Security.SecuritySafeCritical]
         private static void ParseTargetFrameworkName(out string identifier, out string profile, out int version)
         {
             string targetFrameworkMoniker = AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName;
index 3513ced8afa331892e7a5a9cb2ec6381f9ff94aa..e879cb1e24b98049549700857aed8e062a6ea87e 100644 (file)
@@ -26,6 +26,11 @@ namespace System
                             LocalAppContextSwitches.SetDefaultsLessOrEqual_452();
                         }
 
+                        if (version <= 40600)
+                        {
+                            LocalAppContextSwitches.SetDefaultsLessOrEqual_46();
+                        }
+
                         break;
                     }
             }
index f958bc9707a59f61a72c39e6e7b2d341ca668d11..d423183a03a40dc218b7ef130b8d56c0b96f9768 100644 (file)
@@ -112,7 +112,7 @@ namespace System.IdentityModel
         {
             if (completed == true)
             {
-                // it is a 
+                // it is a bug to call complete twice
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new AsynchronousOperationException(SR.GetString(SR.ID4005)));
             }
 
index f8a2a4bdfb33eecaa7fa37243b935597de1cfc16..bc90eb0f2fe5427786e63bdc06ec3b187ee0a7ef 100644 (file)
@@ -17,7 +17,7 @@ namespace System.IdentityModel.Claims
     //    ---------------  ----------------  ------------------
     //    "File"           "boot.ini"        "Read"
     //    "HairColor"      "Brown"           "PossessProperty"
-    //    "UserName"       "Microsoft"          "PossessProperty"
+    //    "UserName"       "[....]"          "PossessProperty"
     //    "Service"        "MailService"     "Access"
     //    "Operation"      "ReadMail"        "Invoke"
     // ClaimType:
index 69d2304a9db739855edeb404f0ae3d9b646ca4b8..4113bd328c7cbca5fae68c51b09f8a09eb459ea4 100644 (file)
@@ -172,9 +172,24 @@ namespace System.IdentityModel.Claims
             if (!string.IsNullOrEmpty(value))
                 claims.Add(Claim.CreateX500DistinguishedNameClaim(this.certificate.SubjectName));
 
-            value = this.certificate.GetNameInfo(X509NameType.DnsName, false);
-            if (!string.IsNullOrEmpty(value))
-                claims.Add(Claim.CreateDnsClaim(value));
+            // App context switch for disabling support for multiple dns entries in a SAN certificate
+            if (LocalAppContextSwitches.DisableMultipleDNSEntriesInSANCertificate)
+            {
+                // old behavior, default for <= 4.6
+                value = this.certificate.GetNameInfo(X509NameType.DnsName, false);
+                if (!string.IsNullOrEmpty(value))
+                    claims.Add(Claim.CreateDnsClaim(value));
+            }
+            else
+            {
+                // new behavior as this is the default long term behavior
+                // Since a SAN can have multiple DNS entries
+                string[] entries = GetDnsFromExtensions(this.certificate);
+                for (int i = 0; i < entries.Length; ++i)
+                {
+                    claims.Add(Claim.CreateDnsClaim(entries[i]));
+                }
+            }
 
             value = this.certificate.GetNameInfo(X509NameType.SimpleName, false);
             if (!string.IsNullOrEmpty(value))
@@ -243,10 +258,24 @@ namespace System.IdentityModel.Claims
             {
                 if (right == null || Rights.PossessProperty.Equals(right))
                 {
-                    string value = this.certificate.GetNameInfo(X509NameType.DnsName, false);
-                    if (!string.IsNullOrEmpty(value))
+                    // App context switch for disabling support for multiple dns entries in a SAN certificate
+                    if (LocalAppContextSwitches.DisableMultipleDNSEntriesInSANCertificate)
+                    {
+                        // old behavior, default for <= 4.6
+                        string value = this.certificate.GetNameInfo(X509NameType.DnsName, false);
+                        if (!string.IsNullOrEmpty(value))
+                        {
+                            yield return Claim.CreateDnsClaim(value);
+                        }
+                    }
+                    else
                     {
-                        yield return Claim.CreateDnsClaim(value);
+                        // new behavior since this is the default long term behavior
+                        string[] entries = GetDnsFromExtensions(certificate);
+                        for (int i = 0; i < entries.Length; ++i)
+                        {
+                            yield return Claim.CreateDnsClaim(entries[i]);
+                        }
                     }
                 }
             }
@@ -270,6 +299,33 @@ namespace System.IdentityModel.Claims
             }
         }
 
+        // Fixing Bug 795660: SAN having multiple DNS entries
+        private static string[] GetDnsFromExtensions(X509Certificate2 cert)
+        {
+            foreach (X509Extension ext in cert.Extensions)
+            {
+                // Extension is SAN or SAN2
+                if (ext.Oid.Value == "2.5.29.7" || ext.Oid.Value == "2.5.29.17")
+                {
+                    string asnString = ext.Format(true);
+                    if (string.IsNullOrEmpty(asnString))
+                    {
+                        return new string[0];
+                    }
+
+                    string[] rawDnsEntries = asnString.Split(new string[1] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
+                    string[] dnsEntries = new string[rawDnsEntries.Length];
+                    for (int i = 0; i < rawDnsEntries.Length; ++i)
+                    {
+                        int equalSignIndex = rawDnsEntries[i].IndexOf('=');
+                        dnsEntries[i] = rawDnsEntries[i].Substring(equalSignIndex + 1).Trim();
+                    }
+                    return dnsEntries;
+                }
+            }
+            return new string[0];
+        }
+
         public override IEnumerator<Claim> GetEnumerator()
         {
             ThrowIfDisposed();
@@ -347,7 +403,7 @@ namespace System.IdentityModel.Claims
             {
                 ThrowIfDisposed();
                 if (this.name == null)
-                {   
+                {
                     //
                     // DCR 48092: PrincipalPermission authorization using certificates could cause Elevation of Privilege.
                     // because there could be duplicate subject name.  In order to be more unique, we use SubjectName + Thumbprint
index 076e4f390441b665b427d63997397a2d42e31685..bd3cd02844dea64545d24065ad61142d884cc9ab 100644 (file)
@@ -363,7 +363,7 @@ namespace System.IdentityModel
 
         protected override bool ReleaseHandle()
         {
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // We are not interested in throwing an exception here if CloseHandle fails.
             return CAPI.CertCloseStore(handle, 0);
         }
@@ -390,7 +390,7 @@ namespace System.IdentityModel
 
         protected override bool ReleaseHandle()
         {
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // We are not interested in throwing an exception here if CloseHandle fails.
             return CAPI.CertFreeCertificateContext(handle);
         }
@@ -416,7 +416,7 @@ namespace System.IdentityModel
 
         protected override bool ReleaseHandle()
         {
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // We are not interested in throwing an exception here if CloseHandle fails.
             CAPI.CertFreeCertificateChain(handle);
             return true;
index bfe9e626697147ff603bf4daa09993dda5d2f7fe..bfcc748bf4b8bfd3f4b1263b0b611241b999c3b6 100644 (file)
@@ -865,7 +865,7 @@ namespace System.IdentityModel
             catch (InvalidOperationException)
             {
                 algorithmObject = null;
-                // We swallow the exception and continue.
+                // We ---- the exception and continue.
             }
 
             if (algorithmObject != null)
@@ -901,7 +901,7 @@ namespace System.IdentityModel
             catch (InvalidOperationException)
             {
                 algorithmObject = null;
-                // We swallow the exception and continue.
+                // We ---- the exception and continue.
             }
             if (algorithmObject != null)
             {
@@ -952,7 +952,7 @@ namespace System.IdentityModel
             }
             catch (InvalidOperationException)
             {
-                // We swallow the exception and continue.
+                // We ---- the exception and continue.
             }
             if (algorithmObject != null)
             {
index fe8fee081de60e06365d44e200cc152655dfb586..94b7abc729b95780871fb100d4af4cb9c9d7b925 100644 (file)
@@ -57,7 +57,7 @@ namespace System.IdentityModel
             get { return this.length; }
             set
             {
-                // PreSharp 
+                // PreSharp Bug: Property get methods should not throw exceptions.
 #pragma warning suppress 56503
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException());
             }
index 8705ddf14e623875cf3cf31c57b42383135da625..f18ab5dd5824bbf60ee56a465b811217cd3f5877 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//------------------------------------------------------------
 // Copyright (c) Microsoft Corporation.  All rights reserved.
 //------------------------------------------------------------
+
 namespace System.IdentityModel
 {
     using System;
@@ -13,7 +14,10 @@ namespace System.IdentityModel
     internal static class LocalAppContextSwitches
     {
         private const string EnableCachedEmptyDefaultAuthorizationContextString = "Switch.System.IdentityModel.EnableCachedEmptyDefaultAuthorizationContext";
+        private const string DisableMultipleDNSEntriesInSANCertificateString = "Switch.System.IdentityModel.DisableMultipleDNSEntriesInSANCertificate";
+
         private static int enableCachedEmptyDefaultAuthorizationContext;
+        private static int disableMultipleDNSEntriesInSANCertificate;
 
         public static bool EnableCachedEmptyDefaultAuthorizationContext
         {
@@ -24,10 +28,25 @@ namespace System.IdentityModel
             }
         }
 
+        public static bool DisableMultipleDNSEntriesInSANCertificate
+        {
+            [MethodImpl(MethodImplOptions.AggressiveInlining)]
+            get
+            {
+                return LocalAppContext.GetCachedSwitchValue(DisableMultipleDNSEntriesInSANCertificateString, ref disableMultipleDNSEntriesInSANCertificate);
+            }
+        }
+
         public static void SetDefaultsLessOrEqual_452()
         {
             // Define the switches that should be true for 4.5.2 or less, false for 4.6+.
             LocalAppContext.DefineSwitchDefault(EnableCachedEmptyDefaultAuthorizationContextString, true);
         }
+
+        public static void SetDefaultsLessOrEqual_46()
+        {
+            // Define the switches that should be true for 4.6 or less, false for 4.6.1+.
+            LocalAppContext.DefineSwitchDefault(DisableMultipleDNSEntriesInSANCertificateString, true);
+        }
     }
 }
index dba47077c6fd5997dd50f285c931f1177b73ef77..82834bcae4577c716445e8abcea8a1f72ba40742 100644 (file)
@@ -688,7 +688,7 @@ namespace System.IdentityModel.Protocols.WSTrust
             }
 
             // Step 3: Write the custom attributes here from the Attributes bag.
-            // IDFX beta work item 
+            // IDFX beta work item bug 878
 
             // Step 4: Write the first class Element here
             requestSerializer.WriteKnownRequestElement(rst, writer, context);
index f489407af89e4920748fde53ef83fbb1bb717f94..20faf7715d5f4693090aea33d31e45f0baca1e1c 100644 (file)
@@ -31,7 +31,7 @@ namespace System.IdentityModel
 
         protected override bool ReleaseHandle()
         {
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // We are not interested in throwing an exception here if CloseHandle fails.
             return NativeMethods.CryptReleaseContext(handle, 0);
         }
@@ -58,7 +58,7 @@ namespace System.IdentityModel
 
         protected override bool ReleaseHandle()
         {
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // We are not interested in throwing an exception here if CloseHandle fails.
             bool ret = NativeMethods.CryptDestroyKey(handle);
             if (this.provHandle != null)
index 297c9df09bfa3371076f41c28a110574fd8f7ccc..7b2b9f1898730d6715fbd46fbc94d4181690e3ed 100644 (file)
@@ -28,7 +28,7 @@ namespace System.IdentityModel
         public const int WindowsVistaMajorNumber = 6;
         static IIdentity anonymousIdentity;
 
-        // these should be kept in sync with IIS70
+        // these should be kept in [....] with IIS70
         public const string AuthTypeNTLM = "NTLM";
         public const string AuthTypeNegotiate = "Negotiate";
         public const string AuthTypeKerberos = "Kerberos";
@@ -727,7 +727,7 @@ namespace System.IdentityModel
     }
 
     /// <summary>
-    /// Internal helper class to help keep Kerberos and Spnego in sync.
+    /// Internal helper class to help keep Kerberos and Spnego in [....].
     /// This code is shared by: 
     ///     System\IdentityModel\Tokens\KerberosReceiverSecurityToken.cs
     ///     System\ServiceModel\Security\WindowsSspiNegotiation.cs
@@ -736,7 +736,7 @@ namespace System.IdentityModel
     internal class ExtendedProtectionPolicyHelper
     {
         //
-        // keep the defaults: _protectionScenario and _policyEnforcement, in sync with: static class System.ServiceModel.Channel.ChannelBindingUtility
+        // keep the defaults: _protectionScenario and _policyEnforcement, in [....] with: static class System.ServiceModel.Channel.ChannelBindingUtility
         // We can't access those defaults as IdentityModel cannot take a dependency on ServiceModel
         //
         static ExtendedProtectionPolicy disabledPolicy = new ExtendedProtectionPolicy(PolicyEnforcement.Never);
@@ -893,11 +893,11 @@ namespace System.IdentityModel
         }
 
         /// <summary>
-        /// Keep this in sync with \System\ServiceModel\Channels\ChannelBindingUtility.cs
+        /// Keep this in [....] with \System\ServiceModel\Channels\ChannelBindingUtility.cs
         /// </summary>
         public static ExtendedProtectionPolicy DefaultPolicy
         {   //
-            //keep the default in sync with : static class System.ServiceModel.Channels.ChannelBindingUtility
+            //keep the default in [....] with : static class System.ServiceModel.Channels.ChannelBindingUtility
             //we can't use these defaults as IdentityModel cannot take a dependency on ServiceModel
             //
 
index e6e3578126e4818eeddd45615909a95a77436932..183692828881ff96a696bed1aad827ce8a342f63 100644 (file)
@@ -155,6 +155,11 @@ namespace System.IdentityModel
             this.Signature.SignedInfo.EnsureDigestValidity(id, resolvedXmlSource);
         }
 
+        public bool EnsureDigestValidityIfIdMatches(string id, object resolvedXmlSource)
+        {
+            return this.Signature.SignedInfo.EnsureDigestValidityIfIdMatches(id, resolvedXmlSource);
+        }
+
         public byte[] GetSignatureValue()
         {
             return this.Signature.GetSignatureBytes();
@@ -1226,7 +1231,7 @@ namespace System.IdentityModel
             {
                 this.transformChain.ReadFrom(reader, transformFactory, dictionaryManager, ShouldPreserveComments(this.Uri));
             }
-                       
+
             this.digestMethodElement.ReadFrom(reader, dictionaryManager);
             this.digestValueElement.ReadFrom(reader, dictionaryManager);
 
index ff70861495c490dedf057c79d01cccf65c173eb2..9f61b67d9cad7e4d53e763af258e0146224c1cea 100644 (file)
@@ -391,7 +391,7 @@ namespace System.IdentityModel
                 {
 
                     SSPIHandle credentialHandle = inCredentials._handle;
-                    // PreSharp 
+                    // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // This API does not set Win32 Last Error.
                     errorCode = InitializeSecurityContextW(
                         ref credentialHandle,
@@ -661,7 +661,7 @@ namespace System.IdentityModel
                 {
 
                     SSPIHandle credentialHandle = inCredentials._handle;
-                    // PreSharp 
+                    // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // This API does not set Win32 Last Error.
                     errorCode = AcceptSecurityContext(
                         ref credentialHandle,
@@ -741,7 +741,7 @@ namespace System.IdentityModel
 
                 if (b)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. It returns a error code.
                     status = ImpersonateSecurityContext(ref context._handle);
                     context.DangerousRelease();
@@ -777,7 +777,7 @@ namespace System.IdentityModel
             {
                 if (b)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. It returns a error code.
                     status = EncryptMessage(ref context._handle, 0, inputOutput, sequenceNumber);
                     context.DangerousRelease();
@@ -857,7 +857,7 @@ namespace System.IdentityModel
             {
                 if (b)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. The API returns a error code.
                     status = QuerySecurityContextToken(ref _handle, out safeHandle);
                     DangerousRelease();
@@ -875,7 +875,7 @@ namespace System.IdentityModel
             if (this._EffectiveCredential != null)
                 this._EffectiveCredential.DangerousRelease();
 
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. It returns a error code.
             return DeleteSecurityContext(ref _handle) == 0;
         }
@@ -992,7 +992,7 @@ namespace System.IdentityModel
             try { }
             finally
             {
-                // PreSharp 
+                // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. It returns a error code.
                 errorCode = AcquireCredentialsHandleW(
                     null,
@@ -1027,7 +1027,7 @@ namespace System.IdentityModel
             try { }
             finally
             {
-                // PreSharp 
+                // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. It returns a error code.
                 errorCode = AcquireCredentialsHandleW(
                                 null,
@@ -1073,7 +1073,7 @@ namespace System.IdentityModel
                 try { }
                 finally
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. It returns a error code.
                     errorCode = AcquireCredentialsHandleW(
                                     null,
@@ -1114,7 +1114,7 @@ namespace System.IdentityModel
             try { }
             finally
             {
-                // PreSharp 
+                // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. It returns a error code.
                 errorCode = AcquireCredentialsHandleW(
                                     null,
@@ -1138,7 +1138,7 @@ namespace System.IdentityModel
 
         protected override bool ReleaseHandle()
         {
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. It returns a error code.
             return FreeCredentialsHandle(ref _handle) == 0;
         }
@@ -1220,7 +1220,7 @@ namespace System.IdentityModel
 
         protected override bool ReleaseHandle()
         {
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error.
             return CertFreeCertificateContext(handle);
         }
@@ -1242,7 +1242,7 @@ namespace System.IdentityModel
         internal static int EnumeratePackages(out int pkgnum, out SafeFreeContextBuffer pkgArray)
         {
             int res = -1;
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. The API returns a error code.
             res = SafeFreeContextBuffer.EnumerateSecurityPackagesW(out pkgnum, out pkgArray);
 
@@ -1295,7 +1295,7 @@ namespace System.IdentityModel
             {
                 if (b)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. The API returns a error code.
                     status = SafeFreeContextBuffer.QueryContextAttributesW(ref phContext._handle, contextAttribute, buffer);
                     phContext.DangerousRelease();
@@ -1330,7 +1330,7 @@ namespace System.IdentityModel
 
         protected override bool ReleaseHandle()
         {
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // The API does not set Win32 Last Error. The API returns a error code.
             return FreeContextBuffer(handle) == 0;
         }
@@ -1371,7 +1371,7 @@ namespace System.IdentityModel
 
         protected override bool ReleaseHandle()
         {
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // We are not interested to throw an exception here. We can ignore the Last Error code.
             return CloseHandle(handle);
         }
index 3d76a71a0db46af6837198cbe3d2f7047ec80062..7ba89951f104892bb393596b028a8bd583536a94 100644 (file)
@@ -52,7 +52,7 @@ namespace System.IdentityModel.Tokens
         {
             BinaryKeyIdentifierClause that = keyIdentifierClause as BinaryKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
             #pragma warning suppress 56506
             return ReferenceEquals(this, that) || (that != null && that.Matches(this.identificationData));
         }
index 51d63656e9d4d98919fab4c2f5ef693fdbde7e2f..ff6808845dce99aed8742bbef05885d468a5e1dc 100644 (file)
@@ -62,7 +62,7 @@ namespace System.IdentityModel.Tokens
         {
             EncryptedKeyIdentifierClause that = keyIdentifierClause as EncryptedKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
             #pragma warning suppress 56506
             return ReferenceEquals(this, that) || (that != null && that.Matches(this.GetRawBuffer(), this.encryptionMethod, this.carriedKeyName));
         }
index 4aa931b597f18180794141398d4ca1bcac3ff811..510637d61fbfd6fd4014ffc271c230e4ba3c5538 100644 (file)
@@ -31,7 +31,7 @@ namespace System.IdentityModel.Tokens
         {
             GenericXmlSecurityKeyIdentifierClause that = keyIdentifierClause as GenericXmlSecurityKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506
             return ReferenceEquals(this, that) || (that != null && that.Matches(this.ReferenceXml));
         }
index d019ee2017a69600a5a258fc8c0e678a5702e2b8..a58c07bc41f99d41bcc34d5b728bc4c4c01b46c3 100644 (file)
@@ -60,7 +60,7 @@ namespace System.IdentityModel.Tokens
         {
             LocalIdKeyIdentifierClause that = keyIdentifierClause as LocalIdKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506
             return ReferenceEquals(this, that) || (that != null && that.Matches(this.localId, this.OwnerType));
         }
index ff88bc9bdb6a116a2876c85c9ea83e0c970cdb5e..6071c80be3edd04d24961e064d4fb9b61ea95e97 100644 (file)
@@ -58,7 +58,7 @@ namespace System.IdentityModel.Tokens
         {
             RsaKeyIdentifierClause that = keyIdentifierClause as RsaKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
             #pragma warning suppress 56506
             return ReferenceEquals(this, that) || (that != null && that.Matches(this.rsa));
         }
index 63ea232ef93b316866436f827f63cfe4cd363132..3911fb6480ccc104c10e55bfe26b0960c1ad45cd 100644 (file)
@@ -370,7 +370,7 @@ namespace System.IdentityModel.Tokens
 
                 if (this.samlSecurityTokenRequirement.MapToWindows)
                 {
-                    // TFS: 153865, Microsoft WindowsIdentity does not set Authtype. I don't think that authtype should be set here anyway.
+                    // TFS: 153865, [....] WindowsIdentity does not set Authtype. I don't think that authtype should be set here anyway.
                     // The authtype will be S4U (kerberos) it doesn't really matter that the upn arrived in a SAML token.
                     claimsIdentity = this.CreateWindowsIdentity(this.FindUpn(claimsIdentity));
 
@@ -3447,8 +3447,8 @@ namespace System.IdentityModel.Tokens
                 }
 
                 // We are now laxing the uri check for audience restriction to support interop partners 
-                // This is a specific request from server : 
-
+                // This is a specific request from server : Bug 11850
+                // ReadSimpleUriElement now has a flag that turns lax reading ON/OFF.
                 audienceRestriction = new Saml2AudienceRestriction(ReadSimpleUriElement(reader, UriKind.RelativeOrAbsolute, true));
                 while (reader.IsStartElement(Saml2Constants.Elements.Audience, Saml2Constants.Namespace))
                 {
index 39d9aa6fbd0feeaf4aabed781535bf49bc1b379e..e455fc17b9dc9b571d925d31ee6c67221590b594 100644 (file)
@@ -74,7 +74,7 @@ namespace System.IdentityModel.Tokens
         {
             SamlAssertionKeyIdentifierClause that = keyIdentifierClause as SamlAssertionKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
             #pragma warning suppress 56506
             return ReferenceEquals(this, that) || (that != null && that.Matches(this.assertionId));
         }
index 0fbf94a87c6f3b563250f16a1e72fbb44ba6398c..3ee5369d33f59d5420686993f1624a6b160f07b5 100644 (file)
@@ -1020,7 +1020,7 @@ namespace System.IdentityModel.Tokens
 
                 if (_samlSecurityTokenRequirement.MapToWindows)
                 {
-                    // TFS: 153865, Microsoft WindowsIdentity does not set Authtype. I don't think that authtype should be set here anyway.
+                    // TFS: 153865, [....] WindowsIdentity does not set Authtype. I don't think that authtype should be set here anyway.
                     // The authtype will be S4U (kerberos) it doesn't really matter that the upn arrived in a SAML token.
                     WindowsIdentity windowsIdentity = CreateWindowsIdentity(FindUpn(claimsIdentity));
 
index 05109450c4a9bc1430a203109c3b887868362239..473c17bff56e424fa7788cc46295d042da9c6cca 100644 (file)
@@ -11,9 +11,9 @@ namespace System.IdentityModel.Tokens
     
     /// <summary>
     /// This class wraps a Saml2AssertionKeyIdentifierClause and delegates to the wrapped clause.
-    /// It derives off the SamlAssertionKeyIdentifierClause to get around a specific 
-
-
+    /// It derives off the SamlAssertionKeyIdentifierClause to get around a specific bug in WCF
+    /// where the WCF runtime will call the Saml2SecurityToken to create a SamlAssertionKeyIdentifierClause.
+    /// </summary>
     internal class WrappedSaml2AssertionKeyIdentifierClause : SamlAssertionKeyIdentifierClause
     {
         private Saml2AssertionKeyIdentifierClause clause;
index 5da0cc8a5d3a70ab2d9a7e8a9586eb988ffedcbc..f714137f1ee20b11d11d3a96cb123a3645f19aeb 100644 (file)
@@ -50,7 +50,7 @@ namespace System.IdentityModel.Tokens
         {
             X509IssuerSerialKeyIdentifierClause that = keyIdentifierClause as X509IssuerSerialKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506
             return ReferenceEquals(this, that) || (that != null && that.Matches(this.issuerName, this.issuerSerialNumber));
         }
index afdb09f58047af79199f7ebcced8b6398024f74c..965002cd32ee7d16cd656195cc1bd3bbc088311b 100644 (file)
@@ -165,7 +165,7 @@ namespace System.IdentityModel
         /// <param name="revocationMode">The revocation mode to use.</param>
         /// <param name="trustedStoreLocation">The store to use.</param>
         /// <returns>The X509CertificateValidator.</returns>
-        /// <remarks>Due to a WCF 
+        /// <remarks>Due to a WCF bug, X509CertificateValidatorEx must be used rather than WCF's validators directly</remarks>
         internal static X509CertificateValidator CreateCertificateValidator(
             System.ServiceModel.Security.X509CertificateValidationMode certificateValidationMode,
             X509RevocationMode revocationMode,
index 6389818fd19e0ad14c34be25e24cb2c8e89c7ba0..79ce39c17ca889bdc60291e8f24dc7a9925afcf8 100644 (file)
@@ -50,7 +50,7 @@ namespace System.ServiceModel.Security
         {
             BinarySecretKeyIdentifierClause that = keyIdentifierClause as BinarySecretKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506
             return ReferenceEquals(this, that) || (that != null && that.Matches(this.GetRawBuffer()));
         }
index a36d14136bce04c5592819f57b8f27e797de78cb..6bbb93644bbe122bb771568ac4c85f739eb62f19 100644 (file)
@@ -32,7 +32,7 @@ namespace System.ServiceModel.Security
         {
             KeyNameIdentifierClause that = keyIdentifierClause as KeyNameIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
             #pragma warning suppress 56506
             return ReferenceEquals(this, that) || (that != null && that.Matches(this.keyName));
         }
index 2972098749ea154616e932aad59dba8164c71a02..38447200d38b72fc7cd3ae12d5d4f76e8e69e4b5 100644 (file)
@@ -38,7 +38,7 @@ namespace System.ServiceModel.Security
         {
             get
             {
-                // PreSharp 
+                // PreSharp Bug: Property get methods should not throw exceptions.
                 #pragma warning suppress 56503
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException());
             }
index 7a8ac3dc6c5b16a66f07671ea2da2baaefd18f3b..792dac6c2e66f6dd0a3b1327555aa2df95b2775c 100644 (file)
@@ -32,7 +32,7 @@ namespace System.ServiceModel.Security
         {
             RelAssertionDirectKeyIdentifierClause that = keyIdentifierClause as RelAssertionDirectKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506
             return (ReferenceEquals(this, that) || (that != null && that.AssertionId == this.AssertionId));
         }
index 94c196b3426ed93879adb965de617620d04c9f33..517a9a502503a7f6c9538311580caa93bd457a54 100644 (file)
@@ -32,7 +32,7 @@ namespace System.ServiceModel.Security
         {
             SamlAssertionDirectKeyIdentifierClause that = keyIdentifierClause as SamlAssertionDirectKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506
             return (ReferenceEquals(this, that) || (that != null && that.SamlUri == this.SamlUri));
         }
index 3813a4e1658a0acb73b13dff47f069a68ebf5462..6f6c70a7a5e81f126a50dd0e590a65264d155e75 100644 (file)
@@ -50,7 +50,7 @@ namespace System.ServiceModel.Security
         {
             SecurityContextKeyIdentifierClause that = keyIdentifierClause as SecurityContextKeyIdentifierClause;
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'that' to this public method must be validated: A null-dereference can occur here.
             #pragma warning suppress 56506
             return ReferenceEquals(this, that) || (that != null && that.Matches(this.contextId, this.generation));
         }
index 0a863133e1b2394210a31df92744c409398bc6bc..de8d5aab8f23dff9b835ea9a44a0d8486fd259c3 100644 (file)
@@ -1561,7 +1561,7 @@ namespace System.Net.PeerToPeer.Collaboration
             object userToken = createAsyncState.UserToken;
 
             //
-            // Call the sync version of createcontact
+            // Call the [....] version of createcontact
             //
             try{
                 peerContact = CreateContact(peerNearMe);
index b72b6f990f34225d8793d5da36ca9ebbe050b5d5..66fae79abbd0c0112fcd114e8029bda056dea00c 100644 (file)
@@ -315,7 +315,7 @@ namespace System.Net.PeerToPeer.Collaboration
 
                     if (exception != null){
                         //
-                        // Throw exception for sync but call callback for async with exception
+                        // Throw exception for [....] but call callback for async with exception
                         //
                         if (!isAsync)
                             throw exception;
@@ -328,7 +328,7 @@ namespace System.Net.PeerToPeer.Collaboration
                         Logging.P2PTraceSource.TraceEvent(TraceEventType.Information, 0, "Found endpoint match in Request status changed.");
 
                         //
-                        // For async call the callback and for sync just return
+                        // For async call the callback and for [....] just return
                         //
                         if (isAsync){
                             RefreshDataCompletedEventArgs args = new
@@ -352,7 +352,7 @@ namespace System.Net.PeerToPeer.Collaboration
 
             //
             // Async case with exception fire callback here
-            // Sync would have already thrown this by now
+            // [....] would have already thrown this by now
             //
             if (exception != null){
                 RefreshDataCompletedEventArgs args = new
index b9502c116d7ba9004ac4bf43e2ea0d6f9272aef3..e4c8f05b975ae73f14ca46570edd8a07c6e98769 100644 (file)
@@ -433,7 +433,7 @@ namespace System.Net.PeerToPeer
         /// I have considered using regular expressions. However, the regular expressions offer 
         /// poor performance and or startup cost. Really there is no substiture for custom 
         /// parsing logic. I decided to write this piece of code to parse the peername for now 
-        /// - Microsoft 6/6/2005
+        /// - [....] 6/6/2005
         /// </summary>
         /// <param name="peerName"></param>
         /// <param name="authority"></param>
index 62397d824d7ac2680cecd231ddf8fee0a7f6b81a..887280f9238c930fedb69b22755bde89473756d3 100644 (file)
@@ -490,7 +490,7 @@ namespace System.Net.PeerToPeer
     
 
     /// <summary>
-    /// PeerNameResolver does sync and async resolves. 
+    /// PeerNameResolver does [....] and async resolves. 
     /// PeerNameResolver supports multiple outstanding async calls
     /// </summary>
     public class PeerNameResolver
@@ -581,7 +581,7 @@ namespace System.Net.PeerToPeer
         }
 
         /// <summary>
-        /// Implements sync resolve of the PeerName in the cloud given
+        /// Implements [....] resolve of the PeerName in the cloud given
         /// </summary>
         /// <param name="peerName"></param>
         /// <param name="cloud"></param>
@@ -641,7 +641,7 @@ namespace System.Net.PeerToPeer
             //---------------------------------------------------------------
             //Trace log
             //---------------------------------------------------------------
-            Logging.P2PTraceSource.TraceEvent(TraceEventType.Information, 0, "Sync Resolve called with PeerName: {0}, Cloud: {1}, MaxRecords {2}", peerName, cloud, maxRecords);
+            Logging.P2PTraceSource.TraceEvent(TraceEventType.Information, 0, "[....] Resolve called with PeerName: {0}, Cloud: {1}, MaxRecords {2}", peerName, cloud, maxRecords);
 
             SafePeerData shEndPointInfoArray;
             string NativeCloudName = cloud.InternalName;
@@ -721,7 +721,7 @@ namespace System.Net.PeerToPeer
                     shEndPointInfoArray.Dispose();
                 }
             }
-            Logging.P2PTraceSource.TraceEvent(TraceEventType.Information, 0, "Sync Resolve returnig with PeerNameRecord count :{0}", PeerNameRecords.Count);
+            Logging.P2PTraceSource.TraceEvent(TraceEventType.Information, 0, "[....] Resolve returnig with PeerNameRecord count :{0}", PeerNameRecords.Count);
             return PeerNameRecords;
         }
         
index ce88cda7498d93383e91446811c5ef9156ed5b41..42c854dcbf6470affbfff71145617ec6909d861b 100644 (file)
@@ -290,7 +290,7 @@ namespace System.Numerics {
             return new Complex(Math.Sin(a) * Math.Cosh(b), Math.Cos(a) * Math.Sinh(b));
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Sinh", Justification = "Microsoft: Existing Name")]
+        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Sinh", Justification = "[....]: Existing Name")]
         public static Complex Sinh(Complex value) /* Hyperbolic sin */
         {
             double a = value.m_real;
@@ -313,7 +313,7 @@ namespace System.Numerics {
             return new Complex(Math.Cos(a) * Math.Cosh(b), - (Math.Sin(a) * Math.Sinh(b)));
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cosh", Justification = "Microsoft: Existing Name")]
+        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cosh", Justification = "[....]: Existing Name")]
         public static Complex Cosh(Complex value) /* Hyperbolic cos */
         {
             double a = value.m_real;
@@ -333,7 +333,7 @@ namespace System.Numerics {
             return (Sin(value) / Cos(value));
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Tanh", Justification = "Microsoft: Existing Name")]
+        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Tanh", Justification = "[....]: Existing Name")]
         public static Complex Tanh(Complex value) /* Hyperbolic tan */
         {
             return (Sinh(value) / Cosh(value));
@@ -370,7 +370,7 @@ namespace System.Numerics {
             return (new Complex(result_re, result_im));
         }
 
-        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Sqrt", Justification = "Microsoft: Existing Name")]
+        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Sqrt", Justification = "[....]: Existing Name")]
         public static Complex Sqrt(Complex value) /* Square root ot the complex number */
         {
             return Complex.FromPolarCoordinates(Math.Sqrt(value.Magnitude), value.Phase / 2.0);
index 167a9156342b115778e067d28e806ea5e5835f72..cd526bd34caffc6a194c407bd14ac4ddc81cf6c7 100644 (file)
@@ -64,11 +64,18 @@ namespace System.Numerics
         public void CopyTo(Single[] array, int index)
         {
             if (array == null)
-                throw new ArgumentNullException("values");
+            {
+                // Match the JIT's exception type here. For perf, a NullReference is thrown instead of an ArgumentNull.
+                throw new NullReferenceException(SR.GetString("Arg_NullArgumentNullRef"));
+            }
             if (index < 0 || index >= array.Length)
+            {
                 throw new ArgumentOutOfRangeException(SR.GetString("Arg_ArgumentOutOfRangeException", index));
+            }
             if ((array.Length - index) < 2)
+            {
                 throw new ArgumentException(SR.GetString("Arg_ElementsInSourceIsGreaterThanDestination", index));
+            }
             array[index] = X;
             array[index + 1] = Y;
         }
index 925fcc9f68b57dbbdac7c5fbb91e03184bffa0f0..628301fd81d420afca06bf28766bfab02af9e656 100644 (file)
@@ -78,11 +78,18 @@ namespace System.Numerics
         public void CopyTo(Single[] array, int index)
         {
             if (array == null)
-                throw new ArgumentNullException("values");
+            {
+                // Match the JIT's exception type here. For perf, a NullReference is thrown instead of an ArgumentNull.
+                throw new NullReferenceException(SR.GetString("Arg_NullArgumentNullRef"));
+            }
             if (index < 0 || index >= array.Length)
+            {
                 throw new ArgumentOutOfRangeException(SR.GetString("Arg_ArgumentOutOfRangeException", index));
+            }
             if ((array.Length - index) < 3)
+            {
                 throw new ArgumentException(SR.GetString("Arg_ElementsInSourceIsGreaterThanDestination", index));
+            }
             array[index] = X;
             array[index + 1] = Y;
             array[index + 2] = Z;
index 87c76a360ee44f0be52977fac09b3c71bda395ce..97ca8021fc175b0a168c5e7169331a825bb99e31 100644 (file)
@@ -106,11 +106,18 @@ namespace System.Numerics
         public void CopyTo(Single[] array, int index)
         {
             if (array == null)
-                throw new ArgumentNullException("values");
+            {
+                // Match the JIT's exception type here. For perf, a NullReference is thrown instead of an ArgumentNull.
+                throw new NullReferenceException(SR.GetString("Arg_NullArgumentNullRef"));
+            }
             if (index < 0 || index >= array.Length)
+            {
                 throw new ArgumentOutOfRangeException(SR.GetString("Arg_ArgumentOutOfRangeException", index));
+            }
             if ((array.Length - index) < 4)
+            {
                 throw new ArgumentException(SR.GetString("Arg_ElementsInSourceIsGreaterThanDestination", index));
+            }
             array[index] = X;
             array[index + 1] = Y;
             array[index + 2] = Z;
index 5b489d93e7a4ab9e8cd8731b66ce99af60835ad3..816319755cb9a6ba3d5fe0d93211753585a1c8b4 100644 (file)
@@ -494,7 +494,7 @@ namespace System.Runtime.Caching {
             return (GetInternal(key, regionName) != null);
         }
 
-        // Dev10 907758: Breaking 
+        // Dev10 907758: Breaking bug in System.RuntimeCaching.MemoryCache.AddOrGetExisting (CacheItem, CacheItemPolicy)
         public override bool Add(CacheItem item, CacheItemPolicy policy) {
             CacheItem existingEntry = AddOrGetExisting(item, policy);
             return (existingEntry == null || existingEntry.Value == null);
index 44605faaf37d96a89e8819febba7d785a12b4efb..1b481f800f7ea64739b9d2f130c538316f88ca77 100644 (file)
@@ -137,7 +137,7 @@ namespace System.Runtime.Caching {
                 for (int i = 0; i < NUM_COUNTERS; i++) {
                     PerformanceCounter counter = counters[i];
                     if (counter != null) {
-                        // decrement counter by its current value, to zero it out for this instance of the named cache (see Dev10 
+                        // decrement counter by its current value, to zero it out for this instance of the named cache (see Dev10 Bug 680819)
                         long value = Interlocked.Exchange(ref _counterValues[i], 0);
                         if (value != 0) {
                             counter.IncrementBy(-value);
index fc6f606c09770309a767d6c4b5cc2c17869dfc6f..95764cc2bfc4825e4d3142c2adc5000b712eb362 100644 (file)
@@ -89,7 +89,7 @@ namespace System.Runtime.DurableInstancing
             {
                 Fx.Assert(value != Guid.Empty, "Cannot set an empty Id.");
                 Fx.Assert(this.id == Guid.Empty, "Cannot set Id more than once.");
-                Fx.Assert(!this.idIsSet, "idIsSet out of sync with id.");
+                Fx.Assert(!this.idIsSet, "idIsSet out of [....] with id.");
 
                 this.id = value;
 
index 10f946682599a4ed6bb67a98a34bb028750b8f54..f5e657cf682fc432b1f868a499f727623e4d18df 100644 (file)
@@ -1596,7 +1596,7 @@ namespace System.Runtime.DurableInstancing
                 }
                 finally
                 {
-                    Fx.AssertAndThrowFatal(this.context.Active, "Out-of-sync between InstanceExecutionContext and ExecutionAsyncResult.");
+                    Fx.AssertAndThrowFatal(this.context.Active, "Out-of-[....] between InstanceExecutionContext and ExecutionAsyncResult.");
 
                     this.context.LastAsyncResult = null;
                     this.context.RootAsyncResult = null;
index 7b73dabbe5abd7b77772dca3e1007f6045579008..044ffea1746299643a403b48fb9ed8bdfa0aa130 100644 (file)
@@ -13,7 +13,7 @@ namespace System.Runtime.Serialization.Configuration
             {
                 throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("config");
             }
-#pragma warning suppress 56506 // Microsoft, config is checked above
+#pragma warning suppress 56506 // [....], config is checked above
             return (SerializationSectionGroup)config.SectionGroups[ConfigurationStrings.SectionGroupName];
         }
 
index dcb716e6fc18a94934c418642ff8f391b998b402..ca40aeefd65a81edbb7de78c06ba8862365e47ff 100644 (file)
@@ -509,8 +509,16 @@ namespace System.Runtime.Serialization
                         CollectionDataContract.IsCollection(type, out itemType) ||
                         ClassDataContract.IsNonAttributedTypeValidForSerialization(type));
             }
-            catch (System.IO.FileLoadException)
-            { // this can happen in Type.IsDefined when trying to load a referenced library that is not available at design time.
+            catch (Exception ex)
+            {
+                // An exception can be thrown in the designer when a project has a runtime binding redirection for a referenced assembly or a reference dependent assembly.
+                // Type.IsDefined is known to throw System.IO.FileLoadException.
+                // ClassDataContract.IsNonAttributedTypeValidForSerialization is known to throw System.IO.FileNotFoundException.
+                // We guard against all non-critical exceptions.
+                if (Fx.IsFatal(ex))
+                {
+                    throw;
+                }
             }
             
             return false;
index b8620e452ad97abc86099249baa9a8220d85f36a..3f756c1dcd527791aca59a32bc9d34ac23ead0e7 100644 (file)
@@ -14,7 +14,7 @@ namespace System.Runtime.Serialization.Json
 
     // This wrapper does not support seek.
     // Supports: UTF-8, Unicode, BigEndianUnicode
-    // ASSUMPTION (Microsoft): This class will only be used for EITHER reading OR writing.  It can be done, it would just mean more buffers.
+    // ASSUMPTION ([....]): This class will only be used for EITHER reading OR writing.  It can be done, it would just mean more buffers.
     class JsonEncodingStreamWrapper : Stream
     {
         [Fx.Tag.SecurityNote(Miscellaneous = "RequiresReview - Static fields are marked SecurityCritical or readonly to prevent"
index 736af7f520b9e3b85218fe6181065306c1108ea0..dc71490b99091a74dc877f42c8f87d389758097f 100644 (file)
@@ -199,7 +199,7 @@ namespace System.Runtime.Serialization.Json
         void WriteDateTimeInDefaultFormat(DateTime value)
         {
             // ToUniversalTime() truncates dates to DateTime.MaxValue or DateTime.MinValue instead of throwing
-            // This will break round-tripping of these dates (see 
+            // This will break round-tripping of these dates (see bug 9690 in CSD Developer Framework)
             if (value.Kind != DateTimeKind.Utc)
             {
                 long tickCount = value.Ticks - TimeZone.CurrentTimeZone.GetUtcOffset(value).Ticks;
index de0ed526f1a4208931e24641eec75856881f757f..581e40aee0c5acbc0851fdfe67967c60eb5818ad 100644 (file)
@@ -792,7 +792,7 @@ namespace System.Runtime.Serialization.Json
             WriteString(new string(buffer, index, count));
         }
 
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] // Microsoft, ToLowerInvariant is just used in Json error message
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] // [....], ToLowerInvariant is just used in Json error message
         public override void WriteStartAttribute(string prefix, string localName, string ns)
         {
             if (IsClosed)
@@ -1374,7 +1374,7 @@ namespace System.Runtime.Serialization.Json
             }
         }
 
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] // Microsoft, ToLowerInvariant is just used in Json error message
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] // [....], ToLowerInvariant is just used in Json error message
         void ThrowInvalidAttributeContent()
         {
             if (HasOpenAttribute)
index 4479f5055aba66d5e37e3434466d28420ba557a8..acc54533c820684758817b142bec796baf70f6d4 100644 (file)
@@ -193,7 +193,7 @@ namespace System.Runtime.Serialization
         {
             if (TD.DCDeserializeWithSurrogateStartIsEnabled())
             {
-                TD.DCDeserializeWithSurrogateStart(surrogateDataContract.UnderlyingType.FullName);
+                TD.DCDeserializeWithSurrogateStart(declaredType.FullName);
             }
 
             DataContract dataContract = surrogateDataContract ??
index b0a6487fc6d71f98e59419f5efad272034db1a6f..bea64bce4d95ecfe4dfe81a6305c1e6285ff183e 100644 (file)
@@ -11,9 +11,9 @@ namespace System.Xml
     // This wrapper does not support seek.
     // Constructors consume/emit byte order mark.
     // Supports: UTF-8, Unicode, BigEndianUnicode
-    // ASSUMPTION (Microsoft): This class will only be used for EITHER reading OR writing.  It can be done, it would just mean more buffers.
-    // ASSUMPTION (Microsoft): The byte buffer is large enough to hold the declaration
-    // ASSUMPTION (Microsoft): The buffer manipulation methods (FillBuffer/Compare/etc.) will only be used to parse the declaration
+    // ASSUMPTION ([....]): This class will only be used for EITHER reading OR writing.  It can be done, it would just mean more buffers.
+    // ASSUMPTION ([....]): The byte buffer is large enough to hold the declaration
+    // ASSUMPTION ([....]): The buffer manipulation methods (FillBuffer/Compare/etc.) will only be used to parse the declaration
     //                      during construction.
     class EncodingStreamWrapper : Stream
     {
@@ -749,7 +749,7 @@ namespace System.Xml
 
     // Add format exceptions
     // Do we need to modify the stream position/Seek to account for the buffer?
-    // ASSUMPTION (Microsoft): This class will only be used for EITHER reading OR writing.
+    // ASSUMPTION ([....]): This class will only be used for EITHER reading OR writing.
 #if NO
     class UTF16Stream : Stream
     {
index 53fe8347cac2db612a08d929fec94a93fa2fcb07..2db9f63d632e8313b7a477fce952ca88e1cadb45 100644 (file)
@@ -352,7 +352,7 @@ namespace System.Xml
             if (object.ReferenceEquals(id1, null) || object.ReferenceEquals(id2, null))
                 return false;
 
-#pragma warning suppress 56506 // Microsoft, checks for whether id1 and id2 are null done above.
+#pragma warning suppress 56506 // [....], checks for whether id1 and id2 are null done above.
             if (id1.IsGuid && id2.IsGuid)
             {
                 return id1.idLow == id2.idLow && id1.idHigh == id2.idHigh;
index 5d18e55fe92d97d8dc3a47bedfa8f3a2d94ef16f..74313dec99b14dd7dcacaf64501763518a77e3b7 100644 (file)
@@ -539,7 +539,7 @@ namespace System.Xml
             }
         }
 
-        // ASSUMPTION (Microsoft): all chars in str will be ASCII
+        // ASSUMPTION ([....]): all chars in str will be ASCII
         public bool Equals2(string str, bool checkLower)
         {
             if (this.type != ValueHandleType.UTF8)
index 92000c475b5c4630b7421c2d548bfdd0dddb17ec..008ed195fb5be846e544d683f6ae95ec2f25c1fe 100644 (file)
@@ -1,8 +1,8 @@
 //------------------------------------------------------------
 // Copyright (c) Microsoft Corporation.  All rights reserved.
 //------------------------------------------------------------
-// PERF, Microsoft, Microsoft: Make LookupNamespace do something smarter when lots of names
-// PERF, Microsoft, Microsoft: Make Attribute lookup smarter when lots of attributes
+// PERF, [....], [....]: Make LookupNamespace do something smarter when lots of names
+// PERF, [....], [....]: Make Attribute lookup smarter when lots of attributes
 namespace System.Xml
 {
     using System;
@@ -1566,7 +1566,13 @@ namespace System.Xml
                 {
                     int actualCharCount;
                     if (readContent)
+                    {
                         actualCharCount = ReadContentAsChars(chars, charCount, maxCharCount - charCount);
+                        // When deserializing base64 content which contains new line chars (CR, LF) chars from ReadObject, the reader reads in chunks of base64 content, LF char, base64 content, LF char and so on
+                        // Relying on encoding.GetBytes' exception to handle LF char would result in performance degradation so skipping LF char here
+                        if (actualCharCount == 1 && chars[charCount] == '\n')
+                            continue;
+                    }
                     else
                         actualCharCount = ReadValueChunk(chars, charCount, maxCharCount - charCount);
                     if (actualCharCount == 0)
index 3f683a49570e4c594fb3938a5f51344b1e03fb7c..3497ba645cabddd3f7e63685331e91d58833fc26 100644 (file)
@@ -1,9 +1,9 @@
 //------------------------------------------------------------
 // Copyright (c) Microsoft Corporation.  All rights reserved.
 //------------------------------------------------------------
-// PERF, Microsoft, Microsoft: Make LookupNamespace do something smarter when lots of names
-// PERF, Microsoft, Microsoft: Make Attribute lookup smarter when lots of attributes
-// PERF: Microsoft, Microsoft: Compare safe/unsafe versions
+// PERF, [....], [....]: Make LookupNamespace do something smarter when lots of names
+// PERF, [....], [....]: Make Attribute lookup smarter when lots of attributes
+// PERF: [....], [....]: Compare safe/unsafe versions
 
 namespace System.Xml
 {
index 3868664cd2379a019b713a53ea393678762dd850..bfb1b2a98276ca89ff962721b9639cc96fdd6c0e 100644 (file)
@@ -145,7 +145,7 @@ namespace System.Xml
             {
                 if (LookupPrefix(namespaceUri) != null)
                     return;
-#pragma warning suppress 56506 // Microsoft, namespaceUri is already checked
+#pragma warning suppress 56506 // [....], namespaceUri is already checked
                 prefix = namespaceUri.Length == 0 ? string.Empty : string.Concat("d", namespaceUri.Length.ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
             }
             WriteAttributeString("xmlns", prefix, null, namespaceUri);
@@ -196,7 +196,7 @@ namespace System.Xml
                 throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("localName"));
             if (namespaceUri == null)
                 namespaceUri = XmlDictionaryString.Empty;
-#pragma warning suppress 56506 // Microsoft, XmlDictionaryString.Empty is never null
+#pragma warning suppress 56506 // [....], XmlDictionaryString.Empty is never null
             WriteQualifiedName(localName.Value, namespaceUri.Value);
         }
 
@@ -301,7 +301,7 @@ namespace System.Xml
             {
                 if (completionException == null)
                 {
-                    // only release stream when no exception (mirrors sync behaviour)
+                    // only release stream when no exception (mirrors [....] behaviour)
                     this.streamProvider.ReleaseStream(this.stream);
                     this.stream = null;
                 }
@@ -311,7 +311,7 @@ namespace System.Xml
 
             void ContinueWork(bool completedSynchronously, Exception completionException = null)
             {
-                // Individual Reads or writes may complete sync or async. A callback however 
+                // Individual Reads or writes may complete [....] or async. A callback however 
                 // will always all ContinueWork() with CompletedSynchronously=false this flag 
                 // is used to complete this AsyncResult.
                 try
@@ -565,7 +565,7 @@ namespace System.Xml
             {
                 if (completionException == null)
                 {
-                    // only release stream when no exception (mirrors sync behaviour)
+                    // only release stream when no exception (mirrors [....] behaviour)
                     this.streamProvider.ReleaseStream(this.stream);
                     this.stream = null;
                 }
@@ -582,7 +582,7 @@ namespace System.Xml
                     {
                         if (HandleReadBlock(result))
                         {
-                            // Read completed (sync or async, doesn't matter) 
+                            // Read completed ([....] or async, doesn't matter) 
                             if (this.bytesRead > 0)
                             {
                                 // allow loop to continue at Write
@@ -604,7 +604,7 @@ namespace System.Xml
                     {
                         if (this.writeBlockHandler(result, this))
                         {
-                            // Write completed (sync or async, doesn't matter) 
+                            // Write completed ([....] or async, doesn't matter) 
                             AdjustBlockSize();
                             operation = Operation.Read;
                         }
index 1c5fd2c4cfdbe3342d1edbde3ae67caf041added..69831c0d846ab89693ca98cffb0788052c2229ac 100644 (file)
@@ -2102,7 +2102,7 @@ namespace System.Xml
 
             public override long Length
             {
-#pragma warning suppress 56503 // Microsoft, required by the XmlReader
+#pragma warning suppress 56503 // [....], required by the XmlReader
                 get { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.SeekNotSupportedOnStream, this.GetType().FullName))); }
             }
 
@@ -2110,7 +2110,7 @@ namespace System.Xml
             {
                 get
                 {
-#pragma warning suppress 56503 // Microsoft, required by the XmlReader
+#pragma warning suppress 56503 // [....], required by the XmlReader
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.SeekNotSupportedOnStream, this.GetType().FullName)));
                 }
                 set { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.SeekNotSupportedOnStream, this.GetType().FullName))); }
@@ -2831,7 +2831,7 @@ namespace System.Xml
         {
             get
             {
-#pragma warning suppress 56503 // Microsoft, required by the Stream contract
+#pragma warning suppress 56503 // [....], required by the Stream contract
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.SeekNotSupportedOnStream, stream.GetType().FullName)));
             }
         }
@@ -2840,7 +2840,7 @@ namespace System.Xml
         {
             get
             {
-#pragma warning suppress 56503 // Microsoft, required by the Stream contract
+#pragma warning suppress 56503 // [....], required by the Stream contract
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.SeekNotSupportedOnStream, stream.GetType().FullName)));
             }
             set
index a31aeb76682a77f7990425cda821a6dacd0c7cb8..7162dbfa38bc73abb2d68719bc2ea90d17e10e76 100644 (file)
@@ -656,9 +656,13 @@ namespace System.Xml
 
                     while (true)
                     {
-                        while (chars < charsMax && *chars < 0x80)
+                        while (chars < charsMax)
                         {
-                            *bytes = (byte)(*chars);
+                            char t = *chars;
+                            if (t >= 0x80)
+                                break;
+
+                            *bytes = (byte)t;
                             bytes++;
                             chars++;
                         }
index 35fc01d8c567a35f594f68b573a3929b8054e4a0..7c0fda2a9647da94a5afbc9e9f8d100afc364cc2 100644 (file)
@@ -193,7 +193,7 @@ namespace System.ServiceModel.Activation
         {
             HttpInput httpInput = this.GetHttpInput(false);
 
-            // work around http.sys keep alive 
+            // work around http.sys keep alive bug with chunked requests, see MB 49676, this is fixed in Vista
             if ((httpInput != null && httpInput.ContentLength == -1 && !OSEnvironmentHelper.IsVistaOrGreater) || !this.KeepAliveEnabled)
             {
                 result.SetConnectionClose();
index 591bf22f0ba8946281619fd7584b139366e431a7..336347f166357da019f9a579dcc464e6b9569d83 100644 (file)
@@ -59,7 +59,7 @@ namespace System.ServiceModel.Activation
         [SecurityCritical]
         static void CloseInvalidOutSafeHandleCritical(SafeHandle handle)
         {
-            // Workaround for 64-bit CLR 
+            // Workaround for 64-bit CLR bug VSWhidbey 546830 - sometimes invalid SafeHandles come back null.
             if (handle != null)
             {
                 Fx.Assert(handle.IsInvalid, "CloseInvalidOutSafeHandle called with a valid handle!");
index bede66c59b03a0e1e50e2af246ba79c16986c656..6b5fd7e5ba1b3fde0b34719668b9460cbf95eaf3 100644 (file)
@@ -516,7 +516,7 @@ namespace System.ServiceModel
         static bool GetIsSimpleApplicationHost()
         {
             // ASPNET won't provide API to check Cassini. But it's safe and performant to check only
-            // the ApplicationID prefix (MessageBus 
+            // the ApplicationID prefix (MessageBus Bug 24832).
             return (string.Compare(ISAPIApplicationIdPrefix, 0,
                     HostingEnvironmentWrapper.UnsafeApplicationID, 0, ISAPIApplicationIdPrefix.Length, StringComparison.OrdinalIgnoreCase) != 0);
         }
index b240804d46db24404ca2b07631ac082e38aac126..e8670e2a0a6fa8aa6d137bc1ea841f59c1765f06 100644 (file)
@@ -83,7 +83,7 @@ namespace System.ServiceModel.Activities.Dispatcher
                                 // Actual Buffering
                                 lock (this.thisLock)
                                 {
-                                    // Optimistic state check in case we just raced with the receiveContext
+                                    // Optimistic state check in case we just ----d with the receiveContext
                                     // faulting. If the receiveContext still faults after the state check, the above
                                     // cleanup routine will handle things correctly. In both cases, a double-release
                                     // of the throttle is protected.
index 198c511575b2323cea95987c93a410db13488f14..2ff32b65c217bbf6e9f5d8168788ffa7adc52e73 100644 (file)
@@ -1323,7 +1323,7 @@ namespace System.ServiceModel.Activities.Dispatcher
 
         // This async result waits for store events and handle them (currently only support HasRunnableWorkflowEvent).
         // It is intended to always complete async to simplify caller usage. 
-        // 1) no code to handle sync completion. 
+        // 1) no code to handle [....] completion. 
         // 2) recursive call will be safe from StackOverflow.
         // For simplicity, we handle (load/run) each event one-by-one.
         // We ---- certain set of exception (see HandleException).  Other will crash the process.
index 96a92a8fed856a98323a9bf2306b5fac2201c62c..eb135add289ae6c09f0d9472e3570b630c1b58fe 100644 (file)
@@ -102,7 +102,7 @@ namespace System.ServiceModel.Activities.Dispatcher
                 ReadSuspendedInfo(view);
             }
 
-            // If we were loaded or we locked the instance, the keys will have been sync'd.
+            // If we were loaded or we locked the instance, the keys will have been [....]'d.
             if (IsInitialized || IsLocked)
             {
                 RationalizeSavedKeys(false);
index 126936ab2c9c9d704bd874ec39bb6c77a0377c22..ed99706cbfa9c09aa8ebeeb9324884ea874ae7ec 100644 (file)
@@ -1178,7 +1178,7 @@ namespace System.ServiceModel.Activities.Dispatcher
                     this.pipeline.Publish();
                 }
 
-                // PersistenceContext.Open doesn't do anything, so it's ok to call sync.
+                // PersistenceContext.Open doesn't do anything, so it's ok to call [....].
                 this.context.Open(TimeSpan.Zero);
 
                 IAsyncResult result;
index 539cdf5804b4a2d841d379388c8d71328ed4688a..e5ea1459fff7b1cd603c92ad680205fd8d059d63 100644 (file)
@@ -42,7 +42,7 @@ namespace System.ServiceModel.Activities.Dispatcher
     //   NOTE: There is a small period of time where no one things they own the lock.  Exit has "handed
     //   off the lock by calling Set on the waiter, but the waiter has not yet executed the code
     //   which sets ownsLock to true.
-    // Sync Handoff - During sync handoff the ref bool ownsLock will be set accordingly by the
+    // [....] Handoff - During [....] handoff the ref bool ownsLock will be set accordingly by the
     //   Acquire* method.  These methods should always be called in a try block with a finally
     //   which calls ReleaseLock.
     // Async Handoff - During async handoff the callback can assume it has the lock if either
@@ -655,12 +655,12 @@ namespace System.ServiceModel.Activities.Dispatcher
             {
                 if (!this.idleWaiters.Remove(idleEvent))
                 {
-                    // If it wasn't in the list that means we raced between throwing from Wait
+                    // If it wasn't in the list that means we ----d between throwing from Wait
                     // and setting the event.  This thread now is responsible for the lock.
                     if (waitException is TimeoutException)
                     {
                         // In the case of Timeout we let setting the event win and signal to
-                        // swallow the exception
+                        // ---- the exception
 
                         ownsLock = true;
                         return false;
@@ -814,7 +814,7 @@ namespace System.ServiceModel.Activities.Dispatcher
                     if (!this.executorLock.Exit(isRunnable, ref ownsLock))
                     {
                         // No one was waiting, but we had activeOperations (otherwise we would not have gotten
-                        // to this branch of the if).  This means that we raced with a timeout and should resume
+                        // to this branch of the if).  This means that we ----d with a timeout and should resume
                         // the workflow's execution.  If we don't resume execution we'll just hang ... no one
                         // has the lock, the workflow is ready to execute, but it is not.
                         Fx.Assert(this.activeOperations > 0, "We should always have active operations otherwise we should have taken a different code path.");
@@ -3268,7 +3268,7 @@ namespace System.ServiceModel.Activities.Dispatcher
                     {
                         // If the waitHandle is not in either of these lists then it must have
                         // been removed by the Set() path - that means we've got the lock, so let's
-                        // just run with it (IE - swallow the exception).
+                        // just run with it (IE - ---- the exception).
                         if (thisPtr.instance.nextIdleWaiters.Remove(thisPtr.waitHandle) || thisPtr.instance.idleWaiters.Remove(thisPtr.waitHandle))
                         {
                             thisPtr.Complete(false, asyncException);
@@ -5311,7 +5311,7 @@ namespace System.ServiceModel.Activities.Dispatcher
                     {
                         if (!asyncWaiter.Owner.waiters.Remove(asyncWaiter.Token))
                         {
-                            // We raced between timing out and getting signaled.
+                            // We ----d between timing out and getting signaled.
                             // We'll take the signal which means we now own the lock
 
                             completionException = null;
@@ -5604,7 +5604,7 @@ namespace System.ServiceModel.Activities.Dispatcher
             {
                 // In the interest of allocating less objects we don't implement
                 // the full async pattern here.  Instead, we've flattened it to
-                // do the sync part and then optionally delegate down to the inner
+                // do the [....] part and then optionally delegate down to the inner
                 // BeginCommit.
                 if (this.contextOwnedTransaction != null)
                 {
index ffbe82df40d3c4aa70d5dc8a77446d31df581bf8..835190494108cebabd4a3d212724f7008cd05e72 100644 (file)
@@ -1830,7 +1830,7 @@ namespace System.ServiceModel.Activities
                         {
                             if (asyncSend)
                             {
-                                //If there is a transaction that we could be flowing out then we create this blocking clone to sync with the commit processing.
+                                //If there is a transaction that we could be flowing out then we create this blocking clone to [....] with the commit processing.
                                 if (this.currentTransactionContext != null)
                                 {
                                     this.dependentClone = this.currentTransactionContext.DependentClone(DependentCloneOption.BlockCommitUntilComplete);
@@ -2664,9 +2664,9 @@ namespace System.ServiceModel.Activities
                         property.Instance.CorrelationSynchronizer.NotifyRequestSetByChannel(new Action<Message>(OnWorkflowCorrelationProcessingComplete));
 
                         // We have to do this dance with the lock because
-                        // we aren't sure if we've been running sync or not.
+                        // we aren't sure if we've been running [....] or not.
                         // NOTE: It is possible for us to go async and
-                        // still decide we're completing sync.  This is fine
+                        // still decide we're completing [....].  This is fine
                         // as it does not violate the async pattern since
                         // the work is done by the time Begin completes.
                         completeSelf = false;
@@ -2697,9 +2697,9 @@ namespace System.ServiceModel.Activities
                     this.message = updatedMessage;
 
                     // We have to do this dance with the lock because
-                    // we aren't sure if we've been running sync or not.
+                    // we aren't sure if we've been running [....] or not.
                     // NOTE: It is possible for us to go async and
-                    // still decide we're completing sync.  This is fine
+                    // still decide we're completing [....].  This is fine
                     // as it does not violate the async pattern since
                     // the work is done by the time Begin completes.
                     bool completeSelf = false;
index 812d50813d4f22ae904200aa08aa7a19a5f1220a..d9edb71a70f8ae0f0056bfc079fc3409373c264f 100644 (file)
@@ -94,7 +94,7 @@ namespace System.ServiceModel.Activities
 
             try
             {
-                // set activity ID on the executing thread (
+                // set activity ID on the executing thread (Bug 113386)
                 if (TraceUtility.MessageFlowTracingOnly)
                 {
                     this.e2eActivityId = TraceUtility.GetReceivedActivityId(this.OperationContext);
index 6e0f45677ef5f0d93367a14548b24bea60880393..bd420a64d62d636058a7ce5925ca3f9297e5ed2d 100644 (file)
@@ -481,7 +481,7 @@ namespace System.ServiceModel.Channels
                 // AsyncResult.AsyncCompletionWrapperCallback takes care of catching the exceptions for us. 
                 IAsyncResult result = this.channel.UdpOutputChannel.BeginClose(this.timeoutHelper.RemainingTime(), this.PrepareAsyncCompletion(completeCloseOutputChannelCallback), this);
                 
-                // SyncContinue calls CompleteCloseOutputChannel for us in sync case. 
+                // SyncContinue calls CompleteCloseOutputChannel for us in [....] case. 
                 return this.SyncContinue(result);
             }
 
@@ -490,7 +490,7 @@ namespace System.ServiceModel.Channels
                 // AsyncResult.AsyncCompletionWrapperCallback takes care of catching the exceptions for us. 
                 IAsyncResult result = this.baseBeginClose(this.timeoutHelper.RemainingTime(), this.PrepareAsyncCompletion(completeBaseCloseCallback), this);
                 
-                // SyncContinue calls CompleteBaseClose for us in sync case. 
+                // SyncContinue calls CompleteBaseClose for us in [....] case. 
                 return this.SyncContinue(result);
             }
         }
index ebc66d5ea6bd921ea9ff8bbeb4beda603d939a91..2a932ecbe3564c456fba15cabbd61f8308c729a7 100644 (file)
@@ -664,7 +664,7 @@ namespace System.ServiceModel.Channels
 
                     if (completedSynchronously && this.retransmissionEnabled)
                     {
-                        // initial send completed sync, now we need to start the retransmission process...
+                        // initial send completed [....], now we need to start the retransmission process...
                         completedSynchronously = this.BeginRetransmission();
                     }
 
index 3ee507f1b3ff812423727fdbc84c77b614acfce7..2b746ed3fb43795f73fbda114e0751858c129039 100644 (file)
@@ -222,8 +222,8 @@ namespace System.ServiceModel.Channels
 
             if (socketException.ErrorCode == UnsafeNativeMethods.ERROR_INVALID_HANDLE)
             {
-                //This would likely indicate a 
-
+                //This would likely indicate a bug in our ref-counting 
+                //for instance, a channel is closing the socket multiple times...
                 Fx.Assert("The socket appears to have been closed unexpectedly.  This probably indicates incorrect ref counting (i.e. a channel is closing the socket multiple times)");
                 result = new CommunicationObjectAbortedException(socketException.Message, socketException);
             }
index f464d031ec082b74de1677ae1a277c6390bd7843..89dd02a9aff623cd2e050a5535a0648c5e87b00e 100644 (file)
@@ -46,7 +46,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContractApril2005.HelloOperation(HelloMessageApril2005 message)
         {
-            Fx.Assert("The sync method IAnnouncementContractApril2005.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContractApril2005.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContractApril2005.BeginHelloOperation(HelloMessageApril2005 message, AsyncCallback callback, object state)
@@ -61,7 +61,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContractApril2005.ByeOperation(ByeMessageApril2005 message)
         {
-            Fx.Assert("The sync method IAnnouncementContractApril2005.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContractApril2005.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContractApril2005.BeginByeOperation(ByeMessageApril2005 message, AsyncCallback callback, object state)
@@ -76,7 +76,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContract11.HelloOperation(HelloMessage11 message)
         {
-            Fx.Assert("The sync method IAnnouncementContract11.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContract11.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContract11.BeginHelloOperation(HelloMessage11 message, AsyncCallback callback, object state)
@@ -91,7 +91,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContract11.ByeOperation(ByeMessage11 message)
         {
-            Fx.Assert("The sync method IAnnouncementContract11.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContract11.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContract11.BeginByeOperation(ByeMessage11 message, AsyncCallback callback, object state)
@@ -106,7 +106,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContractCD1.HelloOperation(HelloMessageCD1 message)
         {
-            Fx.Assert("The sync method IAnnouncementContractCD1.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContractCD1.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContractCD1.BeginHelloOperation(HelloMessageCD1 message, AsyncCallback callback, object state)
@@ -121,7 +121,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContractCD1.ByeOperation(ByeMessageCD1 message)
         {
-            Fx.Assert("The sync method IAnnouncementContractCD1.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContractCD1.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContractCD1.BeginByeOperation(ByeMessageCD1 message, AsyncCallback callback, object state)
index 7f2946925e59c319890ce00b65e21a54ce91bd33..8b32eb3d74b72cb656287fdbbe0802c0b05121ad 100644 (file)
@@ -65,7 +65,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContractApril2005.HelloOperation(HelloMessageApril2005 message)
         {
-            Fx.Assert("The sync method IAnnouncementContractApril2005.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContractApril2005.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContractApril2005.BeginHelloOperation(HelloMessageApril2005 message, AsyncCallback callback, object state)
@@ -80,7 +80,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContractApril2005.ByeOperation(ByeMessageApril2005 message)
         {
-            Fx.Assert("The sync method IAnnouncementContractApril2005.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContractApril2005.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContractApril2005.BeginByeOperation(ByeMessageApril2005 message, AsyncCallback callback, object state)
@@ -95,7 +95,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContract11.HelloOperation(HelloMessage11 message)
         {
-            Fx.Assert("The sync method IAnnouncementContract11.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContract11.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContract11.BeginHelloOperation(HelloMessage11 message, AsyncCallback callback, object state)
@@ -110,7 +110,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContract11.ByeOperation(ByeMessage11 message)
         {
-            Fx.Assert("The sync method IAnnouncementContract11.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContract11.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContract11.BeginByeOperation(ByeMessage11 message, AsyncCallback callback, object state)
@@ -125,7 +125,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContractCD1.HelloOperation(HelloMessageCD1 message)
         {
-            Fx.Assert("The sync method IAnnouncementContractCD1.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContractCD1.HelloOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContractCD1.BeginHelloOperation(HelloMessageCD1 message, AsyncCallback callback, object state)
@@ -140,7 +140,7 @@ namespace System.ServiceModel.Discovery
 
         void IAnnouncementContractCD1.ByeOperation(ByeMessageCD1 message)
         {
-            Fx.Assert("The sync method IAnnouncementContractCD1.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IAnnouncementContractCD1.ByeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IAnnouncementContractCD1.BeginByeOperation(ByeMessageCD1 message, AsyncCallback callback, object state)
@@ -155,7 +155,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractApril2005.ProbeOperation(ProbeMessageApril2005 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractApril2005.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractApril2005.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractApril2005.BeginProbeOperation(ProbeMessageApril2005 request, AsyncCallback callback, object state)
@@ -170,7 +170,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractApril2005.ResolveOperation(ResolveMessageApril2005 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractApril2005.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractApril2005.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractApril2005.BeginResolveOperation(ResolveMessageApril2005 request, AsyncCallback callback, object state)
@@ -185,7 +185,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractAdhoc11.ProbeOperation(ProbeMessage11 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractAdhoc11.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractAdhoc11.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractAdhoc11.BeginProbeOperation(ProbeMessage11 request, AsyncCallback callback, object state)
@@ -200,7 +200,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractAdhoc11.ResolveOperation(ResolveMessage11 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractAdhoc11.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractAdhoc11.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractAdhoc11.BeginResolveOperation(ResolveMessage11 request, AsyncCallback callback, object state)
@@ -215,7 +215,7 @@ namespace System.ServiceModel.Discovery
 
         ProbeMatchesMessage11 IDiscoveryContractManaged11.ProbeOperation(ProbeMessage11 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractManaged11.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractManaged11.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
             return null;
         }
 
@@ -231,7 +231,7 @@ namespace System.ServiceModel.Discovery
 
         ResolveMatchesMessage11 IDiscoveryContractManaged11.ResolveOperation(ResolveMessage11 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractManaged11.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractManaged11.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
             return null;
         }
 
@@ -247,7 +247,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractAdhocCD1.ProbeOperation(ProbeMessageCD1 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractAdhocCD1.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractAdhocCD1.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractAdhocCD1.BeginProbeOperation(ProbeMessageCD1 request, AsyncCallback callback, object state)
@@ -262,7 +262,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractAdhocCD1.ResolveOperation(ResolveMessageCD1 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractAdhocCD1.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractAdhocCD1.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractAdhocCD1.BeginResolveOperation(ResolveMessageCD1 request, AsyncCallback callback, object state)
@@ -277,7 +277,7 @@ namespace System.ServiceModel.Discovery
 
         ProbeMatchesMessageCD1 IDiscoveryContractManagedCD1.ProbeOperation(ProbeMessageCD1 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractManagedCD1.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractManagedCD1.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
             return null;
         }
 
@@ -293,7 +293,7 @@ namespace System.ServiceModel.Discovery
 
         ResolveMatchesMessageCD1 IDiscoveryContractManagedCD1.ResolveOperation(ResolveMessageCD1 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractManagedCD1.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractManagedCD1.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
             return null;
         }
 
index 98adc930debe8a60c050d1f13508d2872e976845..b7119cb08f06df2cdcc5f396c40df55e0ec12dbd 100644 (file)
@@ -69,7 +69,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractApril2005.ProbeOperation(ProbeMessageApril2005 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractApril2005.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractApril2005.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractApril2005.BeginProbeOperation(ProbeMessageApril2005 request, AsyncCallback callback, object state)
@@ -84,7 +84,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractApril2005.ResolveOperation(ResolveMessageApril2005 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractApril2005.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractApril2005.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractApril2005.BeginResolveOperation(ResolveMessageApril2005 request, AsyncCallback callback, object state)
@@ -99,7 +99,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractAdhoc11.ProbeOperation(ProbeMessage11 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractAdhoc11.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractAdhoc11.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractAdhoc11.BeginProbeOperation(ProbeMessage11 request, AsyncCallback callback, object state)
@@ -114,7 +114,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractAdhoc11.ResolveOperation(ResolveMessage11 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractAdhoc11.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractAdhoc11.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractAdhoc11.BeginResolveOperation(ResolveMessage11 request, AsyncCallback callback, object state)
@@ -129,7 +129,7 @@ namespace System.ServiceModel.Discovery
 
         ProbeMatchesMessage11 IDiscoveryContractManaged11.ProbeOperation(ProbeMessage11 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractManaged11.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractManaged11.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
             return null;
         }
 
@@ -145,7 +145,7 @@ namespace System.ServiceModel.Discovery
 
         ResolveMatchesMessage11 IDiscoveryContractManaged11.ResolveOperation(ResolveMessage11 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractManaged11.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractManaged11.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
 
             return null;
         }
@@ -162,7 +162,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractAdhocCD1.ProbeOperation(ProbeMessageCD1 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractAdhocCD1.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractAdhocCD1.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractAdhocCD1.BeginProbeOperation(ProbeMessageCD1 request, AsyncCallback callback, object state)
@@ -177,7 +177,7 @@ namespace System.ServiceModel.Discovery
 
         void IDiscoveryContractAdhocCD1.ResolveOperation(ResolveMessageCD1 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractAdhocCD1.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractAdhocCD1.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
         }
 
         IAsyncResult IDiscoveryContractAdhocCD1.BeginResolveOperation(ResolveMessageCD1 request, AsyncCallback callback, object state)
@@ -192,7 +192,7 @@ namespace System.ServiceModel.Discovery
 
         ProbeMatchesMessageCD1 IDiscoveryContractManagedCD1.ProbeOperation(ProbeMessageCD1 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractManagedCD1.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractManagedCD1.ProbeOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
             return null;
         }
 
@@ -208,7 +208,7 @@ namespace System.ServiceModel.Discovery
 
         ResolveMatchesMessageCD1 IDiscoveryContractManagedCD1.ResolveOperation(ResolveMessageCD1 request)
         {
-            Fx.Assert("The sync method IDiscoveryContractManagedCD1.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
+            Fx.Assert("The [....] method IDiscoveryContractManagedCD1.ResolveOperation must not get invoked. It is marked with PreferAsyncInvocation flag.");
             return null;
         }
 
index 996b8becef2b617c6b739f5589a111e4fd4b0111..652bb8721797f2cf755725a43497eb2c361770ee 100644 (file)
@@ -402,7 +402,7 @@ namespace System.Runtime
             return asyncResult;
         }
 
-        // can be utilized by subclasses to write core completion code for both the sync and async paths
+        // can be utilized by subclasses to write core completion code for both the [....] and async paths
         // in one location, signalling chainable synchronous completion with the boolean result,
         // and leveraging PrepareAsyncCompletion for conversion to an AsyncCallback.
         // NOTE: requires that "this" is passed in as the state object to the asynchronous sub-call being used with a completion routine.
index b05c6e8fb8df50adccc3f260b1567d7f3fdf4624..5089c872773064f438db9e5fcc69dcfa6105236e 100644 (file)
@@ -482,7 +482,7 @@ namespace System.Runtime.Diagnostics
                 {
                     OnShutdownTracing();
                 }
-#pragma warning suppress 56500 //Microsoft; Taken care of by FxCop
+#pragma warning suppress 56500 //[....]; Taken care of by FxCop
                 catch (Exception exception)
                 {
                     if (Fx.IsFatal(exception))
index c2a0ca931c374319ffc4475d18d0d2af541ca7ce..4a81f353ca1d4f50f0f64789b02dba9d45568ff8 100644 (file)
@@ -642,7 +642,7 @@ namespace System.Runtime.Diagnostics
                 {
                     this.etwProvider.Dispose();
                     //no need to set this.etwProvider as null as Dispose() provides the necessary guard
-                    //leaving it non-null protects trace calls from NullReferenceEx, CSDMain 
+                    //leaving it non-null protects trace calls from NullReferenceEx, CSDMain Bug 136228
                 }
             }
             catch (Exception exception)
index a5185f4f5dda94d6a6cda88b3d6fba8c5a01cc04..7160ac29b9255dd709832b1d5a168645f7cd5b10 100644 (file)
@@ -209,7 +209,7 @@ namespace System.Runtime
                 if (Bits.Count(ht) == -1)
                 {
                     // Use a temporary local here to store the result of the Interlocked.CompareExchange.  This
-                    // works around a codegen 
+                    // works around a codegen bug in the 32-bit JIT (TFS 749182).
                     int interlockedResult = Interlocked.CompareExchange(ref this.headTail, ht + Bits.HiOne, ht);
                     if (ht == interlockedResult)
                     {
index dada2897fb848e5ec24c90a01d2be8276cf34242..91555c98f888d8c7090ef47c2e5081d8d6552264 100644 (file)
@@ -60,7 +60,7 @@ namespace System.Runtime
             Fx.Assert(null != key, "");
 
             // if anything goes wrong (duplicate entry, etc) we should 
-            // clear our caches so that we don't get out of sync
+            // clear our caches so that we don't get out of [....]
             bool success = false;
             try
             {
index 054e0504faf2b24e192cc8effc1cb6a591bd39fc..814d7819b532eecd07cb11b59d37657dbbad3ab0 100644 (file)
@@ -105,7 +105,7 @@ namespace System.Runtime
             {
                 if (!thisPtr.RemoveWaiter(data.Waiter))
                 {
-                    // The timeout raced with Exit and exit won.
+                    // The timeout ----d with Exit and exit won.
                     // We've successfully entered.
                     exceptionToPropagate = null;
                 }
@@ -160,7 +160,7 @@ namespace System.Runtime
 
                 if (timedOut && !RemoveWaiter(waiter))
                 {
-                    // The timeout raced with Exit and exit won.
+                    // The timeout ----d with Exit and exit won.
                     // We've successfully entered.
 
                     timedOut = false;
index 9eaf540e6e10f61c5a7f65923e50d29085e355cd..2098afd1b62c7400e1397fa8a9e0339f9191823e 100644 (file)
@@ -10,7 +10,7 @@ namespace System.Runtime
     using System.Diagnostics;
 
     /// <remarks>
-    /// Microsoft (11/15/10, CSDMain 194940) - Previously, this code first checked that the opcode was set to informational.  If not, it would check
+    /// [....] (11/15/10, CSDMain 194940) - Previously, this code first checked that the opcode was set to informational.  If not, it would check
     /// the opcode name for start, stop, suspend, or resume and use that or return Information otherwise.  This does not work well with the latest 
     /// ETW changes where almost every event has a task and opcode.  With the old logic, if an opcode is set on the event with a level such as 
     /// warning or error, the level would be incorrectly reported in diagnostic tracing as informational.  Also, start/stop/suspend/resume events 
index 96de717996e4d3e30981e2f77fd773d10c9d2569..707fae242d216852b1abc0b8df1d496fe5480741 100644 (file)
@@ -248,6 +248,22 @@ namespace System.ServiceModel.Routing
                     return true;
                 }
             }
+            else if (exception is ProtocolException)
+            {
+                // This exception may happen when the current cached channel was closed due to end service recycles.
+                // We abort the channel in this case and clean it up from the session.
+                // We will then retry the request one more time only. In retried request, it will create a new channel because the cached channel has been cleaned up.
+                if (!this.abortedRetry)
+                {
+                    SessionChannels sessionChannels = this.service.GetSessionChannels(this.messageRpc.Impersonating);
+                    if (sessionChannels != null)
+                    {
+                        this.abortedRetry = true;
+                        sessionChannels.AbortChannel(sendOperation.CurrentEndpoint);
+                        return true;
+                    }
+                }
+            }
 
             if (sendOperation.TryMoveToAlternate(exception))
             {
index d136269d2ad84b0fea16568620b686b9ca3ff2ba..32e9d3dcf99bfb95d71f032e6b9fcfd0ee813b79 100644 (file)
@@ -200,7 +200,7 @@ namespace System.ServiceModel.Routing
         {
             if (this.perMessageChannels != null)
             {
-                //This is for impersonation, thus it's supposed to complete sync
+                //This is for impersonation, thus it's supposed to complete [....]
                 IAsyncResult result = this.perMessageChannels.BeginClose(this.ChannelExtension.OperationTimeout, null, null);
                 this.perMessageChannels.EndClose(result);
                 this.perMessageChannels = null;
index 83b5943fbc200eebfe0fa7b455d0daa42e182b7c..7e9b5bf657e8e33d65d70162671ee2bfa02710a6 100644 (file)
@@ -116,12 +116,12 @@ namespace System.ServiceModel.Description
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR2.CrossDomainJavascriptNotsupported));
             }
-#pragma warning disable 56506 // Microsoft, endpoint.Contract is never null
+#pragma warning disable 56506 // [....], endpoint.Contract is never null
             this.reflector = new XmlSerializerOperationBehavior.Reflector(endpoint.Contract.Namespace, null);
             foreach (OperationDescription od in endpoint.Contract.Operations)
 #pragma warning restore 56506
             {
-#pragma warning disable 56506 // Microsoft, clientRuntime.Operations is never null
+#pragma warning disable 56506 // [....], clientRuntime.Operations is never null
                 if (clientRuntime.Operations.Contains(od.Name))
 #pragma warning restore 56506
                 {
@@ -169,7 +169,7 @@ namespace System.ServiceModel.Description
             {
                 this.HelpUri = new UriTemplate(HelpPage.OperationListHelpPageUriTemplate).BindByPosition(endpoint.ListenUri);
             }
-#pragma warning disable 56506 // Microsoft, endpoint.Contract is never null
+#pragma warning disable 56506 // [....], endpoint.Contract is never null
             this.reflector = new XmlSerializerOperationBehavior.Reflector(endpoint.Contract.Namespace, null);
 #pragma warning restore 56506
 
@@ -177,12 +177,12 @@ namespace System.ServiceModel.Description
             endpointDispatcher.AddressFilter = new PrefixEndpointAddressMessageFilter(endpoint.Address);
             endpointDispatcher.ContractFilter = new MatchAllMessageFilter();
             // operation selector
-#pragma warning disable 56506 // Microsoft, endpointDispatcher.DispatchRuntime is never null
+#pragma warning disable 56506 // [....], endpointDispatcher.DispatchRuntime is never null
             endpointDispatcher.DispatchRuntime.OperationSelector = this.GetOperationSelector(endpoint);
 #pragma warning restore 56506
             // unhandled operation
             string actionStarOperationName = null;
-#pragma warning disable 56506 // Microsoft, endpoint.Contract is never null
+#pragma warning disable 56506 // [....], endpoint.Contract is never null
             foreach (OperationDescription od in endpoint.Contract.Operations)
 #pragma warning restore 56506
             {
@@ -197,7 +197,7 @@ namespace System.ServiceModel.Description
             {
                 // WCF v1 installs any Action="*" op into UnhandledDispatchOperation, but WebHttpBehavior
                 // doesn't want this, so we 'move' that operation back into normal set of operations
-#pragma warning disable 56506 // Microsoft, endpointDispatcher.DispatchRuntime.{Operations,UnhandledDispatchOperation} is never null
+#pragma warning disable 56506 // [....], endpointDispatcher.DispatchRuntime.{Operations,UnhandledDispatchOperation} is never null
                 endpointDispatcher.DispatchRuntime.Operations.Add(
                     endpointDispatcher.DispatchRuntime.UnhandledDispatchOperation);
 #pragma warning restore 56506
@@ -228,7 +228,7 @@ namespace System.ServiceModel.Description
                 jsonContentType = JsonMessageEncoderFactory.GetContentType(null);
             }
 
-#pragma warning disable 56506 // Microsoft, endpointDispatcher.DispatchRuntime.UnhandledDispatchOperation is never null
+#pragma warning disable 56506 // [....], endpointDispatcher.DispatchRuntime.UnhandledDispatchOperation is never null
             // always install UnhandledDispatchOperation (WebHttpDispatchOperationSelector may choose not to use it)
             endpointDispatcher.DispatchRuntime.UnhandledDispatchOperation = new DispatchOperation(endpointDispatcher.DispatchRuntime, "*", WildcardAction, WildcardAction);
             endpointDispatcher.DispatchRuntime.UnhandledDispatchOperation.DeserializeRequest = false;
@@ -239,13 +239,13 @@ namespace System.ServiceModel.Description
             foreach (OperationDescription od in endpoint.Contract.Operations)
             {
                 DispatchOperation dop = null;
-#pragma warning disable 56506 // Microsoft, endpointDispatcher.DispatchRuntime, DispatchRuntime.Operations are never null
+#pragma warning disable 56506 // [....], endpointDispatcher.DispatchRuntime, DispatchRuntime.Operations are never null
                 if (endpointDispatcher.DispatchRuntime.Operations.Contains(od.Name))
 #pragma warning restore 56506
                 {
                     dop = endpointDispatcher.DispatchRuntime.Operations[od.Name];
                 }
-#pragma warning disable 56506 // Microsoft, endpointDispatcher.DispatchRuntime.UnhandledDispatchOperation is never null
+#pragma warning disable 56506 // [....], endpointDispatcher.DispatchRuntime.UnhandledDispatchOperation is never null
                 else if (endpointDispatcher.DispatchRuntime.UnhandledDispatchOperation.Name == od.Name)
                 {
                     dop = endpointDispatcher.DispatchRuntime.UnhandledDispatchOperation;
@@ -600,7 +600,7 @@ namespace System.ServiceModel.Description
             WebMessageFormat responseFormat = GetResponseFormat(operationDescription);
 
             //  Determine if we should add a json formatter; If the ResponseFormat is json, we always add the json formatter even if the
-            //  operation is XmlSerializerFormat because the formatter constructor throws the exception: "json not valid with XmlSerializerFormat" [Microsoft]
+            //  operation is XmlSerializerFormat because the formatter constructor throws the exception: "json not valid with XmlSerializerFormat" [[....]]
             bool useJson = (responseFormat == WebMessageFormat.Json || SupportsJsonFormat(operationDescription));
 
             IDispatchMessageFormatter innerFormatter;
index 8913c7090b59a2e53ce257eec69ac0e865e3d02d..bfa998237672787381a8fdb47a7a8ec9e1360287 100644 (file)
@@ -126,7 +126,7 @@ namespace System.ServiceModel.Description
         public override void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
         {
             base.ApplyClientBehavior(endpoint, clientRuntime);
-#pragma warning disable 56506 // Microsoft, clientRuntime.MessageInspectors is never null
+#pragma warning disable 56506 // [....], clientRuntime.MessageInspectors is never null
             clientRuntime.MessageInspectors.Add(new JsonClientMessageInspector());
 #pragma warning restore 56506
         }
@@ -142,7 +142,7 @@ namespace System.ServiceModel.Description
             }
             catch (XmlException exception)
             {
-                // Microsoft, need to reference this resource string although fix for 13332 was removed
+                // [....], need to reference this resource string although fix for 13332 was removed
                 throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR2.GetString(SR2.InvalidXmlCharactersInNameUsedWithPOSTMethod, string.Empty, string.Empty, string.Empty), exception));
             }
         }
@@ -151,7 +151,7 @@ namespace System.ServiceModel.Description
         {
             base.Validate(endpoint);
 
-#pragma warning disable 56506 // Microsoft, endpoint.Contract is never null
+#pragma warning disable 56506 // [....], endpoint.Contract is never null
             foreach (OperationDescription operation in endpoint.Contract.Operations)
 #pragma warning restore 56506
             {
@@ -232,7 +232,7 @@ namespace System.ServiceModel.Description
                 throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(
                     "endpointDispatcher", SR2.GetString(SR2.ChannelDispatcherMustBePresent));
             }
-#pragma warning disable 56506 // Microsoft, endpointDispatcher.ChannelDispatcher.ErrorHandlers never null
+#pragma warning disable 56506 // [....], endpointDispatcher.ChannelDispatcher.ErrorHandlers never null
             endpointDispatcher.ChannelDispatcher.ErrorHandlers.Add(new JsonErrorHandler(endpoint, endpointDispatcher.ChannelDispatcher.IncludeExceptionDetailInFaults));
 #pragma warning restore 56506
         }
index 8596a0101e7fd4066104a18d3edc4153df7d155e..84ca48641c0dd5c8e8d90984f18c5fe737024abf 100644 (file)
@@ -165,7 +165,7 @@ namespace System.ServiceModel.Dispatcher
             {
                 if (error != null)
                 {
-                    //TFS 
+                    //TFS Bug 500275: it is not necessary to HtmlEncode the error.Message string here because XElement ctor will encode it.
                     div.Add(new XElement(HtmlPElementName, SR2.GetString(SR2.HelpServerErrorProcessingRequestWithDetails, error.Message)));
                     div.Add(new XElement(HtmlPElementName, error.StackTrace ?? String.Empty));
                 }
@@ -179,7 +179,7 @@ namespace System.ServiceModel.Dispatcher
                 string encodedHelpLink = HttpUtility.HtmlEncode(helpUri.AbsoluteUri);
                 if (error != null)
                 {
-                    //TFS 
+                    //TFS Bug 500275: XElement.Parse does not HtmlEncode the string passed to it, so we need to encode it before calling Parse.
                     string errorMessage = AppSettings.DisableHtmlErrorPageExceptionHtmlEncoding ? error.Message : HttpUtility.HtmlEncode(error.Message);
                     div.Add(XElement.Parse(SR2.GetString(SR2.HelpServerErrorProcessingRequestWithDetailsAndLink, encodedHelpLink, errorMessage)));
                     div.Add(new XElement(HtmlPElementName, error.StackTrace ?? String.Empty));
index 523e330f0163bc759843a843bd45727603c33e8c..22389d6d90b2073bbe879e6079aceb422993942d 100644 (file)
@@ -36,7 +36,7 @@ namespace System.ServiceModel.Dispatcher
         {            
             Message message = inputs[0] as Message;
             outputs = null;
-#pragma warning disable 56506 // Microsoft, message.Properties is never null
+#pragma warning disable 56506 // [....], message.Properties is never null
             if (message == null)
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(
index dba20ddce99f808170670dee3fd92cccabd2ac40..ee73a7fd9a40e0031911429a8ffca43f45647128 100644 (file)
@@ -47,7 +47,7 @@ namespace System.ServiceModel.Dispatcher
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(
                     SR2.GetString(SR2.EndpointAddressCannotBeNull)));
             }
-#pragma warning disable 56506 // Microsoft, endpoint.Address.Uri is never null
+#pragma warning disable 56506 // [....], endpoint.Address.Uri is never null
             Uri baseUri = endpoint.Address.Uri;
             this.methodSpecificTables = new Dictionary<string, UriTemplateTable>();
             this.templates = new Dictionary<string, UriTemplate>();
@@ -61,7 +61,7 @@ namespace System.ServiceModel.Dispatcher
 
             Dictionary<WCFKey, string> alreadyHaves = new Dictionary<WCFKey, string>();
 
-#pragma warning disable 56506 // Microsoft, endpoint.Contract is never null
+#pragma warning disable 56506 // [....], endpoint.Contract is never null
             foreach (OperationDescription od in endpoint.Contract.Operations)
 #pragma warning restore 56506
             {
@@ -156,7 +156,7 @@ namespace System.ServiceModel.Dispatcher
             }
             bool uriMatched;
             string result = this.SelectOperation(ref message, out uriMatched);
-#pragma warning disable 56506 // Microsoft, Message.Properties is never null
+#pragma warning disable 56506 // [....], Message.Properties is never null
             message.Properties.Add(HttpOperationSelectorUriMatchedPropertyName, uriMatched);
 #pragma warning restore 56506
             if (result != null)
@@ -164,7 +164,7 @@ namespace System.ServiceModel.Dispatcher
                 message.Properties.Add(HttpOperationNamePropertyName, result);
                 if (DiagnosticUtility.ShouldTraceInformation)
                 {
-#pragma warning disable 56506 // Microsoft, Message.Headers is never null
+#pragma warning disable 56506 // [....], Message.Headers is never null
                     TraceUtility.TraceEvent(TraceEventType.Information, TraceCode.WebRequestMatchesOperation, SR2.GetString(SR2.TraceCodeWebRequestMatchesOperation, message.Headers.To, result));
 #pragma warning restore 56506
                 }
@@ -186,7 +186,7 @@ namespace System.ServiceModel.Dispatcher
                 return this.catchAllOperationName;
             }
 
-#pragma warning disable 56506 // Microsoft, message.Properties is never null
+#pragma warning disable 56506 // [....], message.Properties is never null
             if (!message.Properties.ContainsKey(HttpRequestMessageProperty.Name))
             {
                 return this.catchAllOperationName;
index 34857a8654f9e7701599a289650b4f045d469d2b..4a3d17d51e763ce058ca8dbabac7c4e3a2c2347a 100644 (file)
@@ -1,4 +1,4 @@
-//------------------------------------------------------------
+//------------------------------------------------------------
 // Copyright (c) Microsoft Corporation.  All rights reserved.
 //------------------------------------------------------------
 namespace System.ServiceModel.Web
@@ -9,9 +9,9 @@ namespace System.ServiceModel.Web
     // DO NOT EDIT THIS CODE. 
     //
     // All of the code from this class was taken from build 20717.00 
-    // of System.Net.HttpDateParse.  If there is a 
-
-
+    // of System.Net.HttpDateParse.  If there is a bug with this code 
+    // it should be fixed  in the original System.Net.HttpDateParse 
+    // and then ported here. [[....]]
 
     internal static class HttpDateParse
     {
@@ -48,7 +48,7 @@ namespace System.ServiceModel.Web
 
         private const int DATE_TOKEN_JANUARY = 1;
         private const int DATE_TOKEN_FEBRUARY = 2;
-        private const int DATE_TOKEN_Microsoft = 3;
+        private const int DATE_TOKEN_MARCH = 3;
         private const int DATE_TOKEN_APRIL = 4;
         private const int DATE_TOKEN_MAY = 5;
         private const int DATE_TOKEN_JUNE = 6;
@@ -145,7 +145,7 @@ namespace System.ServiceModel.Web
                             switch (MakeUpper(lpszDay[index + 2]))
                             {
                                 case 'R':
-                                    return DATE_TOKEN_Microsoft;
+                                    return DATE_TOKEN_MARCH;
                                 case 'Y':
                                     return DATE_TOKEN_MAY;
                             }
index aaff3cea26afa649dfae46c54cce21f96044696a..e6d3a74f47d25cfcdeee3ac7cee4e468fc61364d 100644 (file)
@@ -37,7 +37,7 @@ namespace System.ServiceModel.Web
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("operationContext");
             }
             this.operationContext = operationContext;
-#pragma warning disable 56506 // Microsoft, operationContext.Extensions is never null
+#pragma warning disable 56506 // [....], operationContext.Extensions is never null
             if (operationContext.Extensions.Find<WebOperationContext>() == null)
             {
                 operationContext.Extensions.Add(this);
index 2b72d55770b61ed09e6ba6180e036b9499b99a88..7fd8d6fd514d53a64f134828565ad73590bfa7e7 100644 (file)
@@ -195,7 +195,7 @@ namespace System.ServiceModel
             }
         }
 
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] // Microsoft, This is the pattern we use on the standard bindings in Indigo V1
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] // [....], This is the pattern we use on the standard bindings in Indigo V1
         bool IBindingRuntimePreferences.ReceiveSynchronously
         {
             get { return false; }
index 124f9f45a4f77638dfef32a75c0f1ae622f5ef18..8a130a0f34285449d7dc69480eff98e832bf3edd 100644 (file)
@@ -25,7 +25,6 @@ namespace System
         /// We have this separate method for getting the parsed elements out of the TargetFrameworkName so we can
         /// more easily support this on other platforms.
         /// </summary>
-        [System.Security.SecuritySafeCritical]
         private static void ParseTargetFrameworkName(out string identifier, out string profile, out int version)
         {
             string targetFrameworkMoniker = AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName;
index 19c842d4e1785516476a0aee6b1a61d4e6afc06a..5688f5591ea1c8e7a61bb91f22f15ef168d7a51a 100644 (file)
@@ -19,7 +19,7 @@ namespace System.ServiceModel.Activation.Configuration
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("config");
             }
-#pragma warning suppress 56506 // Microsoft, Configuration.SectionGroups cannot be null
+#pragma warning suppress 56506 // [....], Configuration.SectionGroups cannot be null
             return (ServiceModelActivationSectionGroup)config.SectionGroups[ConfigurationStrings.SectionGroupName];
         }
 
index 2b4bdc9f186fc14efd7e25270eccd9a7e4b0f059..6e8d0191482291334be8bbf7e8bdf1983824773c 100644 (file)
@@ -257,7 +257,7 @@ namespace System.ServiceModel.Activation
 
         protected override bool ReleaseHandle()
         {
-            // PreSharp 
+            // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call. 
 #pragma warning suppress 56523 // We are not interested to throw an exception here. We can ignore the Last Error code.
             return CloseHandle(handle);
         }
@@ -279,7 +279,7 @@ namespace System.ServiceModel.Activation
 
         override protected bool ReleaseHandle()
         {
-#pragma warning suppress 56523 // Microsoft, should only fail if there is a 
+#pragma warning suppress 56523 // [....], should only fail if there is a bug (invalid handle); MDA will be raised
             return ListenerUnsafeNativeMethods.CloseServiceHandle(handle);
         }
     }
index 9a011db963366123fb720241972e78430a0924ad..32b1ecdc92bcbf1ff692195ca61578eda1d861b3 100644 (file)
@@ -33,7 +33,7 @@ namespace System.ServiceModel.Activation
         static SafeCloseHandle OpenCurrentProcessForWrite()
         {
             int processId = Process.GetCurrentProcess().Id;
-#pragma warning suppress 56523 // Microsoft, Win32Exception ctor calls Marshal.GetLastWin32Error()
+#pragma warning suppress 56523 // [....], Win32Exception ctor calls Marshal.GetLastWin32Error()
             SafeCloseHandle process = ListenerUnsafeNativeMethods.OpenProcess(ListenerUnsafeNativeMethods.PROCESS_QUERY_INFORMATION | ListenerUnsafeNativeMethods.WRITE_DAC | ListenerUnsafeNativeMethods.READ_CONTROL, false, processId);
             if (process.IsInvalid)
             {
@@ -46,7 +46,7 @@ namespace System.ServiceModel.Activation
 
         static SafeCloseHandle OpenProcessForQuery(int pid)
         {
-#pragma warning suppress 56523 // Microsoft, Win32Exception ctor calls Marshal.GetLastWin32Error()
+#pragma warning suppress 56523 // [....], Win32Exception ctor calls Marshal.GetLastWin32Error()
             SafeCloseHandle process = ListenerUnsafeNativeMethods.OpenProcess(ListenerUnsafeNativeMethods.PROCESS_QUERY_INFORMATION, false, pid);
             if (process.IsInvalid)
             {
@@ -99,7 +99,7 @@ namespace System.ServiceModel.Activation
 
         static SafeServiceHandle OpenSCManager()
         {
-#pragma warning suppress 56523 // Microsoft, Win32Exception ctor calls Marshal.GetLastWin32Error()
+#pragma warning suppress 56523 // [....], Win32Exception ctor calls Marshal.GetLastWin32Error()
             SafeServiceHandle scManager = ListenerUnsafeNativeMethods.OpenSCManager(null, null, ListenerUnsafeNativeMethods.SC_MANAGER_CONNECT);
             if (scManager.IsInvalid)
             {
@@ -112,7 +112,7 @@ namespace System.ServiceModel.Activation
 
         static SafeServiceHandle OpenService(SafeServiceHandle scManager, string serviceName, int purpose)
         {
-#pragma warning suppress 56523 // Microsoft, Win32Exception ctor calls Marshal.GetLastWin32Error()
+#pragma warning suppress 56523 // [....], Win32Exception ctor calls Marshal.GetLastWin32Error()
             SafeServiceHandle service = ListenerUnsafeNativeMethods.OpenService(scManager, serviceName, purpose);
             if (service.IsInvalid)
             {
@@ -249,7 +249,7 @@ namespace System.ServiceModel.Activation
                 }
             }
             byte[] pSecurityDescriptor = new byte[lpnLengthNeeded];
-#pragma warning suppress 56523 // Microsoft, Win32Exception ctor calls Marshal.GetLastWin32Error()
+#pragma warning suppress 56523 // [....], Win32Exception ctor calls Marshal.GetLastWin32Error()
             success = ListenerUnsafeNativeMethods.GetKernelObjectSecurity(kernelObject, ListenerUnsafeNativeMethods.DACL_SECURITY_INFORMATION, pSecurityDescriptor, pSecurityDescriptor.Length, out lpnLengthNeeded);
             if (!success)
             {
@@ -273,7 +273,7 @@ namespace System.ServiceModel.Activation
             pSecurityDescriptor = new byte[lpnLengthNeeded];
             securityDescriptor.GetBinaryForm(pSecurityDescriptor, 0);
             // set the SECURITY_DESCRIPTOR on the kernelObject
-#pragma warning suppress 56523 // Microsoft, Win32Exception ctor calls Marshal.GetLastWin32Error()
+#pragma warning suppress 56523 // [....], Win32Exception ctor calls Marshal.GetLastWin32Error()
             success = ListenerUnsafeNativeMethods.SetKernelObjectSecurity(kernelObject, ListenerUnsafeNativeMethods.DACL_SECURITY_INFORMATION, pSecurityDescriptor);
             if (!success)
             {
@@ -419,7 +419,7 @@ namespace System.ServiceModel.Activation
                         }
                     }
                     byte[] serviceStatusProcess = new byte[lpnLengthNeeded];
-#pragma warning suppress 56523 // Microsoft, Win32Exception ctor calls Marshal.GetLastWin32Error()
+#pragma warning suppress 56523 // [....], Win32Exception ctor calls Marshal.GetLastWin32Error()
                     success = ListenerUnsafeNativeMethods.QueryServiceStatusEx(service, ListenerUnsafeNativeMethods.SC_STATUS_PROCESS_INFO, serviceStatusProcess, serviceStatusProcess.Length, out lpnLengthNeeded);
                     if (!success)
                     {
index f5c43f0cad31892760955d0fb5bcdb7b8b5efec3..2c22592f0a21b7c103184b0dc08a76ee5a745a04 100644 (file)
@@ -14,7 +14,7 @@ namespace System.ServiceModel.Administration
             Fx.Assert(null != info, "");
             Fx.Assert(null != instance, "");
 //warning 56507 : Prefer 'string.IsNullOrEmpty(action)' over checks for null and/or emptiness.
-#pragma warning suppress 56507 //Microsoft; Asserting non-null object for marshalling reasons.  Empty string may be valid input.
+#pragma warning suppress 56507 //[....]; Asserting non-null object for marshalling reasons.  Empty string may be valid input.
             Fx.Assert(null != propertyName, "");
 
             string[] data = new string[info.Count];
@@ -31,7 +31,7 @@ namespace System.ServiceModel.Administration
             Fx.Assert(null != info, "");
             Fx.Assert(null != instance, "");
 //warning 56507 : Prefer 'string.IsNullOrEmpty(action)' over checks for null and/or emptiness.
-#pragma warning suppress 56507 //Microsoft; Asserting non-null object for marshalling reasons.  Empty string may be valid input.
+#pragma warning suppress 56507 //[....]; Asserting non-null object for marshalling reasons.  Empty string may be valid input.
             Fx.Assert(null != propertyName, "");
 
             int i = 0;
index aa8e4a77b3cc57c160447e55d8b041901d9e6a96..94a7b1eb68f249490b661bb20d811def5785aa04 100644 (file)
@@ -968,7 +968,7 @@ namespace System.ServiceModel.Administration
                     int hResult = this.wbemObject.Put(name, 0, ref val, (int)type);
                     if ((int)WbemNative.WbemStatus.WBEM_E_TYPE_MISMATCH == hResult || (int)WbemNative.WbemStatus.WBEM_E_NOT_FOUND == hResult)
                     {
-                        //This would be most likely a product 
+                        //This would be most likely a product bug (somebody changed type without updating MOF), improper installation or tampering with MOF
                         System.Runtime.Diagnostics.EventLogEventId eventId;
                         if ((int)WbemNative.WbemStatus.WBEM_E_TYPE_MISMATCH == hResult)
                         {
index e9aca788ae816bcf76c8622f459ea62bb0054233..b866cfd27cab3bb245daa002c05b2d5c42ea3698 100644 (file)
@@ -293,7 +293,7 @@ namespace System.ServiceModel.Channels
             }
         }
 
-        // Microsoft, This will be kept internal for now.  If the optimization needs to be public, we'll re-evaluate it.
+        // [....], This will be kept internal for now.  If the optimization needs to be public, we'll re-evaluate it.
         class DictionaryAddressHeader : XmlObjectSerializerAddressHeader
         {
             XmlDictionaryString name;
index a249d56a9a9822dd61e11c49b3f90dabbacc9a89..0225acd4ea68615107e301fee889abae2a5d14bb 100644 (file)
@@ -70,7 +70,7 @@ namespace System.ServiceModel.Channels
 
             for (int i = 0; i < InternalCount; i++)
             {
-#pragma warning suppress 56506 // Microsoft, Message.Headers can never be null
+#pragma warning suppress 56506 // [....], Message.Headers can never be null
                 message.Headers.Add(this[i].ToMessageHeader());
             }
         }
index 61b59eaa709764dbd7e9aa8f447fb88a272c6ef5..0aea9ac3133fccee5bb68e41daa91490c9a52810 100644 (file)
@@ -1667,7 +1667,7 @@ namespace System.ServiceModel.Channels
                 get
                 {
                     if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
 
                     {
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(CreateMessageDisposedException());
@@ -1681,7 +1681,7 @@ namespace System.ServiceModel.Channels
                 get
                 {
                     if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
 
                     {
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(CreateMessageDisposedException());
@@ -1696,7 +1696,7 @@ namespace System.ServiceModel.Channels
                 {
                     if (IsDisposed)
                     {
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(CreateMessageDisposedException());
                     }
                     return headers.MessageVersion;
index aef29ec12b5ec5a77a78401032219bafcfb9c116..cc976b636e14325cd9e394725e9e813522a30da0 100644 (file)
@@ -27,8 +27,8 @@ namespace System.ServiceModel.Channels
     /// 
     /// Currently BufferedOutputAsyncStream only used to wrap the System.Net.HttpResponseStream, which satisfy both requirements.
     /// 
-    /// BufferedOutputAsyncStream can also be used when doing asynchronous operations. Sync operations are not allowed when an async
-    /// operation is in-flight. If a sync operation is in progress (i.e., data exists in our CurrentBuffer) and we issue an async operation, 
+    /// BufferedOutputAsyncStream can also be used when doing asynchronous operations. [....] operations are not allowed when an async
+    /// operation is in-flight. If a [....] operation is in progress (i.e., data exists in our CurrentBuffer) and we issue an async operation, 
     /// we flush everything in the buffers (and block while doing so) before the async operation is allowed to proceed. 
     ///     
     /// </summary>
@@ -78,7 +78,7 @@ namespace System.ServiceModel.Channels
         {
             get
             {
-#pragma warning suppress 56503 // Microsoft, required by the Stream.Length contract
+#pragma warning suppress 56503 // [....], required by the Stream.Length contract
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.ReadNotSupported)));
             }
         }
@@ -87,7 +87,7 @@ namespace System.ServiceModel.Channels
         {
             get
             {
-#pragma warning suppress 56503 // Microsoft, required by the Stream.Position contract
+#pragma warning suppress 56503 // [....], required by the Stream.Position contract
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.SeekNotSupported)));
             }
             set
@@ -126,10 +126,19 @@ namespace System.ServiceModel.Channels
 
         public override void Close()
         {
-            this.FlushPendingBuffer();
-            stream.Close();
-            this.WaitForAllWritesToComplete();
-            this.closed = true;
+            try
+            {
+                if (!this.closed)
+                {
+                    this.FlushPendingBuffer();
+                    stream.Close();
+                    this.WaitForAllWritesToComplete();
+                }
+            }
+            finally
+            {
+                this.closed = true;
+            }
         }
 
         public override void Flush()
@@ -326,7 +335,7 @@ namespace System.ServiceModel.Channels
         void DequeueAndFlush(ByteBuffer currentBuffer, AsyncEventArgsCallback callback)
         {
             // Dequeue does a checkout of the buffer from its slot.
-            // the callback for the sync path only enqueues the buffer. 
+            // the callback for the [....] path only enqueues the buffer. 
             // The WriteAsync callback needs to enqueue and also complete.
             this.currentByteBuffer = null;
             ByteBuffer dequeued = this.buffers.Dequeue();
@@ -747,7 +756,7 @@ namespace System.ServiceModel.Channels
                     buffer.stream.EndWrite(result);
 
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index bf44d9efe557a80fed2c9fe79388602c857ecbfa..8187627a3c626ffd202a933cbf037c37879803d8 100644 (file)
@@ -127,6 +127,24 @@ namespace System.ServiceModel.Channels
 
     abstract class TypedChannelDemuxer
     {
+        internal static void AbortMessage(RequestContext request)
+        {
+            // RequestContext.RequestMessage can throw an AddressMismatch exception.
+            try
+            {
+                AbortMessage(request.RequestMessage);
+            }
+            catch (Exception e)
+            {
+                if (Fx.IsFatal(e))
+                {
+                    throw;
+                }
+
+                DiagnosticUtility.TraceHandledException(e, TraceEventType.Information);
+            }
+        }
+
         internal static void AbortMessage(Message message)
         {
             try
@@ -582,10 +600,11 @@ namespace System.ServiceModel.Channels
         {
             try
             {
-                Message message = this.GetMessage(item);
+                Message message = null;
                 IChannelListener matchingListener = null;
                 try
                 {
+                    message = this.GetMessage(item);
                     matchingListener = MatchListener(message);
                 }
                 // The message may be bad because of which running the listener filters may throw
@@ -1285,7 +1304,7 @@ namespace System.ServiceModel.Channels
 
         protected override void AbortItem(RequestContext request)
         {
-            AbortMessage(request.RequestMessage);
+            AbortMessage(request);
             request.Abort();
         }
 
@@ -2938,7 +2957,7 @@ namespace System.ServiceModel.Channels
 
         protected override void AbortItem(RequestContext request)
         {
-            AbortMessage(request.RequestMessage);
+            AbortMessage(request);
             request.Abort();
         }
 
index 1dcac849612e4d786487adac6e019bcfe654da72..f038eb5539462e821654a892610e951e32ed74eb 100644 (file)
@@ -86,7 +86,7 @@ namespace System.ServiceModel.Channels
                 else
                 {
                     // 
-#pragma warning suppress 56506 // Microsoft, context.Binding will never be null.
+#pragma warning suppress 56506 // [....], context.Binding will never be null.
                     context.ListenUriRelativeAddress = String.Empty;
                     context.ListenUriMode = ListenUriMode.Unique;
                 }
index c795e66a15eaf27843efd0fb4029429e8ea6d436..9934d41ffdb97aea0e09b270f97ed24b36efadd4 100644 (file)
@@ -338,7 +338,7 @@ namespace System.ServiceModel.Channels
         {
             get
             {
-#pragma warning suppress 56503 // Microsoft, required by the Stream.Length contract
+#pragma warning suppress 56503 // [....], required by the Stream.Length contract
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.SeekNotSupported)));
             }
         }
@@ -347,7 +347,7 @@ namespace System.ServiceModel.Channels
         {
             get
             {
-#pragma warning suppress 56503 // Microsoft, required by the Stream.Position contract
+#pragma warning suppress 56503 // [....], required by the Stream.Position contract
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.SeekNotSupported)));
             }
             set
@@ -470,7 +470,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.HandleIO(thisPtr.connection);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 9f50f397fe8107e3d36f1b548ccbcde8df2b0200..0a74ee019dd9873060ee7b2a3a08f9366a3b8f8c 100644 (file)
@@ -554,7 +554,7 @@ namespace System.ServiceModel.Channels
                 IConnection upgradedConnection = this.serverSingletonPreambleReader.EndCompletePreamble(result);
                 ServerSingletonConnectionReader singletonReader = new ServerSingletonConnectionReader(serverSingletonPreambleReader, upgradedConnection, this.demuxer);
 
-                //singletonReader doesn't have async version of ReceiveRequest, so just call the sync method for now.
+                //singletonReader doesn't have async version of ReceiveRequest, so just call the [....] method for now.
                 RequestContext requestContext = singletonReader.ReceiveRequest(this.timeoutHelper.RemainingTime());
                 singletonChannelListener.ReceiveRequest(requestContext, serverSingletonPreambleReader.ConnectionDequeuedCallback, true);
 
index 57a54e084e5dca43303c064dee01417fa59739d9..de091c4ea88fbd3c6fde16188eda9b2028d38237 100644 (file)
@@ -134,7 +134,7 @@ namespace System.ServiceModel.Channels
                     completeSelf = reader.ContinueReading();
                 }
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to caller
+#pragma warning suppress 56500 // [....], transferring exception to caller
             catch (Exception e)
             {
                 if (Fx.IsFatal(e))
@@ -201,7 +201,7 @@ namespace System.ServiceModel.Channels
             {
                 completeSelf = ContinueReading();
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to caller
+#pragma warning suppress 56500 // [....], transferring exception to caller
             catch (Exception e)
             {
                 if (Fx.IsFatal(e))
index fcab3692d0b7747683450af5a6b45d701eb4cfa9..a76041897de7ea180948a2dafa7288e273e9e7d2 100644 (file)
@@ -1213,7 +1213,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.HandleConnect(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1292,7 +1292,7 @@ namespace System.ServiceModel.Channels
                         thisPtr.SnapshotConnection();
                     }
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 0173e2b62ea0f608e40cd25d402cf8f07a287b1d..a2413853a8dab23f2f4b307a5e352cb8ba018728 100644 (file)
@@ -28,7 +28,7 @@ namespace System.ServiceModel.Channels
             {
                 if (IsDisposed)
                 {
-#pragma warning suppress 56503 // Microsoft, required by base class contract
+#pragma warning suppress 56503 // [....], required by base class contract
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 }
 
@@ -42,7 +42,7 @@ namespace System.ServiceModel.Channels
             {
                 if (IsDisposed)
                 {
-#pragma warning suppress 56503 // Microsoft, required by base class contract
+#pragma warning suppress 56503 // [....], required by base class contract
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 }
 
index 41c0e1f37860d697dc6ff9c66d3aa44497342751..f232b0f7d449f37e44c39bfcddaa0a27b31ad4b8 100644 (file)
@@ -641,7 +641,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.HandleWritePreamble();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -669,7 +669,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.HandlePreambleAck();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -702,7 +702,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.HandleInitiatorOpen(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -735,7 +735,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.HandleUpgrade(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -768,7 +768,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.HandleInitiatorClose(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -796,7 +796,7 @@ namespace System.ServiceModel.Channels
                     thisPtr.connection.EndWrite();
                     completeSelf = thisPtr.ReadAck();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -826,7 +826,7 @@ namespace System.ServiceModel.Channels
                 {
                     ConnectionUpgradeHelper.EndDecodeFramingFault(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -913,7 +913,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.HandleEstablishConnection(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1172,7 +1172,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.CompleteReadFaultData();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1335,7 +1335,7 @@ namespace System.ServiceModel.Channels
                         completeSelf = thisPtr.Begin();
                     }
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1366,7 +1366,7 @@ namespace System.ServiceModel.Channels
                 {
                     ConnectionUpgradeHelper.EndDecodeFramingFault(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1392,7 +1392,7 @@ namespace System.ServiceModel.Channels
                         completeSelf = thisPtr.Begin();
                     }
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1423,7 +1423,7 @@ namespace System.ServiceModel.Channels
                     thisPtr.CompleteUpgrade(result);
                     completeSelf = thisPtr.Begin();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index dbd6ca609d0ec482a4428ac20dfae672db5d2bf7..8c5b4e61483ccf2f8c9ebbaa05918de2af990386 100644 (file)
@@ -32,7 +32,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (!isValueDecoded)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return value;
             }
@@ -108,7 +108,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState != State.Done)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return value;
             }
@@ -236,7 +236,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (!IsValueDecoded)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return via;
             }
@@ -544,7 +544,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState != State.Done)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return mode;
             }
@@ -555,7 +555,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState != State.Done)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return majorVersion;
             }
@@ -566,7 +566,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState != State.Done)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return minorVersion;
             }
@@ -624,7 +624,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState < State.PreUpgradeStart)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return contentType;
             }
@@ -635,7 +635,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState < State.ReadingContentTypeRecord)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return viaDecoder.ValueAsUri;
             }
@@ -652,7 +652,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState != State.UpgradeRequest)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return upgrade;
             }
@@ -663,7 +663,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState < State.EnvelopeStart)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return envelopeSize;
             }
@@ -880,7 +880,7 @@ namespace System.ServiceModel.Channels
             {
                 if (currentState < State.ChunkStart)
                 {
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 }
 
@@ -1009,7 +1009,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState < State.ReadingContentTypeRecord)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return viaDecoder.ValueAsUri;
             }
@@ -1020,7 +1020,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState < State.PreUpgradeStart)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return contentType;
             }
@@ -1031,7 +1031,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState != State.UpgradeRequest)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return upgrade;
             }
@@ -1280,7 +1280,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState < State.ReadingContentTypeRecord)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return viaDecoder.ValueAsUri;
             }
@@ -1291,7 +1291,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (currentState < State.Start)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return contentType;
             }
@@ -1386,7 +1386,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (CurrentState < ClientFramingDecoderState.EnvelopeStart)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return envelopeSize;
             }
@@ -1397,7 +1397,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (CurrentState < ClientFramingDecoderState.Fault)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return faultDecoder.Value;
             }
@@ -1543,7 +1543,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (CurrentState < ClientFramingDecoderState.Fault)
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.FramingValueNotAvailable)));
                 return faultDecoder.Value;
             }
index 8dd38356431b292fe683a8abcb87fb7562b9f50d..482d0bfde8f45a66bbb61a479e21f6b83a522e2a 100644 (file)
@@ -1305,7 +1305,7 @@ namespace System.ServiceModel.Channels
                         }
                         catch (NullReferenceException nullReferenceException)
                         {
-                            // workaround for Whidbey 
+                            // workaround for Whidbey bug #558605 - only happens in streamed case.
                             if (TransferModeHelper.IsRequestStreamed(this.factory.transferMode))
                             {
                                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
@@ -1496,7 +1496,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = thisPtr.OnGetWebRequestCompleted(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -1610,7 +1610,7 @@ namespace System.ServiceModel.Channels
                         }
                         catch (NullReferenceException nullReferenceException)
                         {
-                            // workaround for Whidbey 
+                            // workaround for Whidbey bug #558605 - only happens in streamed case.
                             if (TransferModeHelper.IsRequestStreamed(this.factory.transferMode))
                             {
                                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
@@ -1667,7 +1667,7 @@ namespace System.ServiceModel.Channels
                             }
                             catch (NullReferenceException nullReferenceException)
                             {
-                                // workaround for Whidbey 
+                                // workaround for Whidbey bug #558605 - only happens in streamed case.
                                 if (TransferModeHelper.IsRequestStreamed(this.factory.transferMode))
                                 {
                                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
@@ -1810,7 +1810,7 @@ namespace System.ServiceModel.Channels
                     {
                         thisPtr.CompleteParseIncomingMessage(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -1837,7 +1837,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = thisPtr.CompleteSend(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -1882,7 +1882,7 @@ namespace System.ServiceModel.Channels
                         completeSelf = true;
                         completionException = new CommunicationException(webException.Message, webException);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -2068,7 +2068,7 @@ namespace System.ServiceModel.Channels
                         thisPtr.CompleteGetSspiCredential(result);
                         thisPtr.CloseTokenProvidersIfRequired();
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -2096,7 +2096,7 @@ namespace System.ServiceModel.Channels
                         thisPtr.CompleteGetUserNameCredential(result);
                         thisPtr.CloseTokenProvidersIfRequired();
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
index f346cfc938719f3fc01bf5da8b4c5703b300bc9d..5df21319d3d6e9046fc229fc5459ad17a351de9b 100644 (file)
@@ -780,7 +780,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.ContinueReading(thisPtr.inputStream.EndRead(result));
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1522,6 +1522,11 @@ namespace System.ServiceModel.Channels
                 {
                     mtomMessageEncoder.WriteMessage(this.message, this.outputStream, this.mtomBoundary);
                 }
+
+                if (this.supportsConcurrentIO)
+                {
+                    this.outputStream.Close();
+                }
             }
             finally
             {
@@ -1683,6 +1688,12 @@ namespace System.ServiceModel.Channels
                     }
 
                     httpOutput.messageEncoder.EndWriteMessage(result);
+
+                    if (this.httpOutput.supportsConcurrentIO)
+                    {
+                        httpOutput.outputStream.Close();
+                    }
+
                     return true;
                 }
                 else
@@ -1712,6 +1723,11 @@ namespace System.ServiceModel.Channels
                         content.EndWriteToStream(result);
                     }
 
+                    if (this.httpOutput.supportsConcurrentIO)
+                    {
+                        httpOutput.outputStream.Close();
+                    }
+
                     return true;
                 }
             }
@@ -2177,7 +2193,7 @@ namespace System.ServiceModel.Channels
 
             bool WriteStreamedMessage()
             {
-                // return a bool to determine if we are sync
+                // return a bool to determine if we are [....]
 
                 if (onWriteStreamedMessage == null)
                 {
@@ -2273,7 +2289,7 @@ namespace System.ServiceModel.Channels
                         completeSelf = true;
                     }
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -2299,7 +2315,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.WriteStreamedMessage();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -2333,7 +2349,7 @@ namespace System.ServiceModel.Channels
                     thisPtr.CompleteWriteBody(result);
                     thisPtr.httpOutput.TraceSend();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -2496,14 +2512,14 @@ namespace System.ServiceModel.Channels
 
                 if (action != null)
                 {
-                    //This code is calling UrlPathEncode due to MessageBus 
-
-
-
-
-
-
-
+                    //This code is calling UrlPathEncode due to MessageBus bug 53362.
+                    //After reviewing this decision, we
+                    //feel that this was probably the wrong thing to do because UrlPathEncode
+                    //doesn't escape some characters like '+', '%', etc.  The real issue behind 
+                    //bug 53362 may have been as simple as being encoded multiple times on the client
+                    //but being decoded one time on the server.  Calling UrlEncode would correctly
+                    //escape these characters, but since we don't want to break any customers and no
+                    //customers have complained, we will leave this as is for now...
                     action = string.Format(CultureInfo.InvariantCulture, "\"{0}\"", UrlUtility.UrlPathEncode(action));
                 }
 
@@ -2765,7 +2781,7 @@ namespace System.ServiceModel.Channels
                     {
                         thisPtr.CompleteGetRequestStream(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
index 2b6563596782fc059be6ec894a1785951cc502bc..ee321225b02da6c7d88fd4c819d60fe7a5a890e2 100644 (file)
@@ -444,7 +444,7 @@ namespace System.ServiceModel.Channels
                     bool lockTaken = false;
                     try
                     {
-                        // We need this lock only in sync reply case. In this case, we hopped the thread in the request side, so it's possible to send the response here
+                        // We need this lock only in [....] reply case. In this case, we hopped the thread in the request side, so it's possible to send the response here
                         // before the TransportIntegrationHandler is ready on another thread (thus a race condition). So we use the lock here. In the incoming path, we won't
                         // release the lock until the TransportIntegrationHandler is ready. Once we get the lock on the outgoing path, we can then call Wait() on this handler safely.
                         Monitor.TryEnter(this.ThisLock, TimeoutHelper.ToMilliseconds(helper.RemainingTime()), ref lockTaken);
@@ -615,7 +615,7 @@ namespace System.ServiceModel.Channels
                                 this.cancellationTokenSource.Dispose();
                                 this.wasProcessInboundRequestSuccessful = true;
                                 //// shortcut scenario
-                                //// Currently we are always doing sync send even async send is enabled. 
+                                //// Currently we are always doing [....] send even async send is enabled. 
                                 this.SendAndClose(t.Result);
                             }
                             else if (this.isAsyncReply)
index c2f0b9b702bcc949b13b7f0817ae9ed4de87534a..e76fb3a434a2fbf951a10169fe71ad4f64a7b1f2 100644 (file)
@@ -829,7 +829,7 @@ namespace System.ServiceModel.Channels
 
             public override HttpOutput GetHttpOutput(Message message)
             {
-                // work around http.sys keep alive 
+                // work around http.sys keep alive bug with chunked requests, see MB 49676, this is fixed in Vista
                 if (listenerContext.Request.ContentLength64 == -1 && !OSEnvironmentHelper.IsVistaOrGreater)
                 {
                     listenerContext.Response.KeepAlive = false;
index c173b43170b47558335858f8431cc7697ee0cc9a..479ca48628aa2cfc96db37e3dd58378ffaf3b779 100644 (file)
@@ -528,7 +528,7 @@ namespace System.ServiceModel.Channels
             }
             else
             {
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters cannot be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null
                 if (context.BindingParameters.Find<MessageEncodingBindingElement>() == null)
                 {
                     context.BindingParameters.Add(new TextMessageEncodingBindingElement());
@@ -578,7 +578,7 @@ namespace System.ServiceModel.Channels
 
             if (!this.CanBuildChannelFactory<TChannel>(context))
             {
-#pragma warning suppress 56506 // Microsoft, context.Binding will never be null.
+#pragma warning suppress 56506 // [....], context.Binding will never be null.
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("TChannel", SR.GetString(SR.CouldnTCreateChannelForChannelType2, context.Binding.Name, typeof(TChannel)));
             }
 
@@ -649,7 +649,7 @@ namespace System.ServiceModel.Channels
             if (!this.CanBuildChannelListener<TChannel>(context))
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(
-#pragma warning suppress 56506 // Microsoft, context.Binding will never be null.
+#pragma warning suppress 56506 // [....], context.Binding will never be null.
 "TChannel", SR.GetString(SR.CouldnTCreateChannelForChannelType2, context.Binding.Name, typeof(TChannel)));
             }
 
@@ -672,7 +672,7 @@ namespace System.ServiceModel.Channels
 
             if (effectiveAutheSchemes == AuthenticationSchemes.None)
             {
-#pragma warning suppress 56506 // Microsoft, context.Binding will never be null.
+#pragma warning suppress 56506 // [....], context.Binding will never be null.
                 string bindingName = context.Binding.Name;
 
                 if (this.AuthenticationScheme == AuthenticationSchemes.None)
index 6f0924176e2d4a940f76f6fbe54fb255e3c70d6b..6b2511b4c0f451629ac8e1c70da2cd8b946515f6 100644 (file)
@@ -488,7 +488,7 @@ namespace System.ServiceModel.Channels
                         thisPtr.request = thisPtr.httpsChannel.EndBaseGetWebRequest(result);
                         thisPtr.factory.AddServerCertMappingOrSetRemoteCertificateValidationCallback(thisPtr.request, thisPtr.to);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -514,7 +514,7 @@ namespace System.ServiceModel.Channels
                         thisPtr.OnGetToken(result);
                         completeSelf = thisPtr.GetWebRequest();
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
index e576d74b13c217aa79232be679e61dffdce4cfa0..b2563cc48b41f60f1b1d87807dcd73c967617f22 100644 (file)
@@ -37,7 +37,7 @@ namespace System.ServiceModel.Channels
 
         protected override void CloseItemAsync(TItem item, TimeSpan timeout)
         {
-            // Default behavior is sync. Derived classes can override.
+            // Default behavior is [....]. Derived classes can override.
             this.CloseItem(item, timeout);
         }
 
index d9d1af921b267568e2ae3fc47fcaed6cbb5eb065..4bc768331a2f69af3988683708e9d079826993af 100644 (file)
@@ -404,7 +404,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.CompleteAcceptUpgrade(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index b4e5202fa559b0c7a06fbe5e295cba7d89b59db3..26f1e3aa35f166bb8f92b98d57b151cafd2e303f 100644 (file)
@@ -223,7 +223,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.HandleReceiveComplete(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 5abee3c70abbd36d04fc299d84198d391583d467..dc126777c7be04fed1733e94609d05c2ff56f9e1 100644 (file)
@@ -69,7 +69,7 @@ namespace System.ServiceModel.Channels
             }
             else
             {
-#pragma warning suppress 56506 // Microsoft, context.RemainingBindingElements will never be null
+#pragma warning suppress 56506 // [....], context.RemainingBindingElements will never be null
                 context.RemainingBindingElements.Clear();
             }
             LocalAddressProvider localAddressProvider = context.BindingParameters.Remove<LocalAddressProvider>();
index 9f3022762c8e2a23cde495235dd32d4c0165ebd1..2795232210dd6e160659c0d441e841991927d4e9 100644 (file)
@@ -345,7 +345,7 @@ namespace System.ServiceModel.Channels
                     {
                         thisPtr.CompleteSend(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
index 2ae3bf5e3507065506b47b20cf8c7a2cdd9031ec..5ea731f0809855cb5acc4888f69b2cdc1f681fdf 100644 (file)
@@ -34,7 +34,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
 
                 return false;
@@ -46,7 +46,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
 
                 return false;
@@ -978,7 +978,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 return bodyWriter.IsFault;
             }
@@ -989,7 +989,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 return bodyWriter.IsEmpty;
             }
@@ -1000,7 +1000,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 return headers;
             }
@@ -1011,7 +1011,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 if (properties == null)
                     properties = new MessageProperties();
@@ -1024,7 +1024,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 return headers.MessageVersion;
             }
@@ -1306,7 +1306,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 return headers;
             }
@@ -1522,7 +1522,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 return headers;
             }
@@ -1541,7 +1541,7 @@ namespace System.ServiceModel.Channels
             get
             {
                 if (IsDisposed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 return properties;
             }
index 383bf17b7af96496dfce60ed7716c9c69ae1f6d5..4a15880764e119a7388db43e6c2a4a5c7d073aa8 100644 (file)
@@ -197,7 +197,7 @@ namespace System.ServiceModel.Channels
                 lock (ThisLock)
                 {
                     if (closed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(CreateBufferDisposedException());
                     return messageData.Buffer.Count;
                 }
@@ -224,7 +224,7 @@ namespace System.ServiceModel.Channels
                 lock (ThisLock)
                 {
                     if (closed)
-#pragma warning suppress 56503 // Microsoft, Invalid State after dispose
+#pragma warning suppress 56503 // [....], Invalid State after dispose
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(CreateBufferDisposedException());
                     return messageData.MessageEncoder.ContentType;
                 }
index 72af695436d920ae4aa04fbbf5f2d6a74c47ee0a..1dcae5bf03498ddd4a4b77c8b1412cfd73c09a28 100644 (file)
@@ -38,7 +38,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("context"));
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters never be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters never be null
             context.BindingParameters.Add(this);
             return context.BuildInnerChannelFactory<TChannel>();
         }
@@ -50,7 +50,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("context"));
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters never be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters never be null
             context.BindingParameters.Add(this);
             return context.CanBuildInnerChannelFactory<TChannel>();
         }
@@ -63,7 +63,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("context"));
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters never be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters never be null
             context.BindingParameters.Add(this);
             return context.BuildInnerChannelListener<TChannel>();
         }
@@ -76,7 +76,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("context"));
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters never be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters never be null
             context.BindingParameters.Add(this);
             return context.CanBuildInnerChannelListener<TChannel>();
         }
index 3662da87dc2b2553e06ea6ea87154a6543b75234..6b4de1fab494d0c8149191ecb775f41799b2bb15 100644 (file)
@@ -25,7 +25,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
             }
 
-#pragma warning suppress 56506 // Microsoft, these properties cannot be null in this context
+#pragma warning suppress 56506 // [....], these properties cannot be null in this context
             if (context.Endpoint.Binding == null)
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context.Endpoint.Binding");
index 09e60dfffb8d726fa6f10318a896212b23438b0d..5803f1710c97b30d71579d104cc14801c69904d5 100644 (file)
@@ -69,7 +69,7 @@ namespace System.ServiceModel.Channels
             {
                 try
                 {
-#pragma warning suppress 56506 // Microsoft, Message.Version can never be null
+#pragma warning suppress 56506 // [....], Message.Version can never be null
                     EnvelopeVersion envelopeVersion = message.Version.Envelope;
                     MessageFault fault;
                     if (envelopeVersion == EnvelopeVersion.Soap12)
index 5accd13b6acf9d31576371d48a0a7e9e9bd062e3..de966e4499527dc0ba0e95dc266908c2e38cfa38 100644 (file)
@@ -490,7 +490,7 @@ namespace System.ServiceModel.Channels
 
             if (collection.version != version)
             {
-#pragma warning suppress 56506 // Microsoft, collection.version is never null
+#pragma warning suppress 56506 // [....], collection.version is never null
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.MessageHeaderVersionMismatch, collection.version.ToString(), version.ToString()), "collection"));
             }
 
index 0fe664c4b07fcca0e8edba105484fea00ead6cd6..4fba9a5749108a4faa081aae6aef45e8478a4747 100644 (file)
@@ -325,8 +325,8 @@ namespace System.ServiceModel.Channels
                 throw listener.NormalizePoisonException(messageProperty.LookupId, MaxMessageSizeStream.CreateMaxReceivedMessageSizeExceededException(listener.MaxReceivedMessageSize));
             }
 
-            // Fix for CSDMain 
-
+            // Fix for CSDMain bug 17842
+            // size is derived from user data, check for corruption
             if ((size + offset) > buffer.Length)
             {
                 listener.MsmqReceiveHelper.FinalDisposition(messageProperty);
index c37698a5e7b57ff5d9467281f6ae056882a8612e..f45463a33201d311f1c3f4e3da15e95d2ccd6354 100644 (file)
@@ -763,7 +763,7 @@ namespace System.ServiceModel.Channels
                         thisPtr.CompleteOpen(result);
                         completeSelf = thisPtr.SendMessage();
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -796,7 +796,7 @@ namespace System.ServiceModel.Channels
                     {
                         thisPtr.innerChannel.EndSend(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
index afba9b018ca7f0ace80cef6a54f7e49785ff97ef..ef8abafcf1f4351e82a87b99246f4cfeda4047f7 100644 (file)
@@ -429,7 +429,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = thisPtr.HandleReceiveRequestComplete(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -461,7 +461,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = thisPtr.HandleReplyComplete(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -770,7 +770,7 @@ namespace System.ServiceModel.Channels
                             return;
                         }
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to input queue to be pulled off by user
+#pragma warning suppress 56500 // [....], transferring exception to input queue to be pulled off by user
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -809,7 +809,7 @@ namespace System.ServiceModel.Channels
             {
                 DiagnosticUtility.TraceHandledException(e, TraceEventType.Information);
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to input queue to be pulled off by user
+#pragma warning suppress 56500 // [....], transferring exception to input queue to be pulled off by user
             catch (Exception e)
             {
                 if (Fx.IsFatal(e))
@@ -940,7 +940,7 @@ namespace System.ServiceModel.Channels
                 }
                 DiagnosticUtility.TraceHandledException(e, TraceEventType.Information);
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to input queue to be pulled off by user
+#pragma warning suppress 56500 // [....], transferring exception to input queue to be pulled off by user
             catch (Exception e)
             {
                 if (Fx.IsFatal(e))
@@ -1007,7 +1007,7 @@ namespace System.ServiceModel.Channels
                 }
                 DiagnosticUtility.TraceHandledException(e, TraceEventType.Information);
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to input queue to be pulled off by user
+#pragma warning suppress 56500 // [....], transferring exception to input queue to be pulled off by user
             catch (Exception e)
             {
                 if (Fx.IsFatal(e))
@@ -1274,7 +1274,7 @@ namespace System.ServiceModel.Channels
                     {
                         DiagnosticUtility.TraceHandledException(e, TraceEventType.Information);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to input queue to be pulled off by user
+#pragma warning suppress 56500 // [....], transferring exception to input queue to be pulled off by user
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -1379,7 +1379,7 @@ namespace System.ServiceModel.Channels
                     DiagnosticUtility.TraceHandledException(e, TraceEventType.Information);
                     startLoop = (this.channel.State == CommunicationState.Opened);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to input queue to be pulled off by user
+#pragma warning suppress 56500 // [....], transferring exception to input queue to be pulled off by user
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1415,7 +1415,7 @@ namespace System.ServiceModel.Channels
                 {
                     DiagnosticUtility.TraceHandledException(e, TraceEventType.Information);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to input queue to be pulled off by user
+#pragma warning suppress 56500 // [....], transferring exception to input queue to be pulled off by user
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index f03b40799051298d279d17eec9b4fffdc00e146a..7af8609728f9c57017a567c76837e8f9fabf3c25 100644 (file)
@@ -109,7 +109,7 @@ namespace System.ServiceModel.Channels
             }
             if (this.syncOperationPending)
             {
-                throw Fx.AssertAndThrow("OverlappedContext.Free called while sync operation is pending.");
+                throw Fx.AssertAndThrow("OverlappedContext.Free called while [....] operation is pending.");
             }
             if (this.nativeOverlapped == null)
             {
@@ -172,7 +172,7 @@ namespace System.ServiceModel.Channels
             }
             if (this.syncOperationPending)
             {
-                throw Fx.AssertAndThrow("StartAsyncOperation called while a sync operation was already pending.");
+                throw Fx.AssertAndThrow("StartAsyncOperation called while a [....] operation was already pending.");
             }
             if (this.nativeOverlapped == null)
             {
@@ -249,7 +249,7 @@ namespace System.ServiceModel.Channels
 
             this.overlapped.EventHandleIntPtr = EventHandle;
 
-            // Sync operations do NOT root this object.  If it gets finalized, we need to know not to free the buffer.
+            // [....] operations do NOT root this object.  If it gets finalized, we need to know not to free the buffer.
             // We do root the event.
             this.rootedHolder.EventHolder = this.completionEvent;
             this.syncOperationPending = true;
@@ -292,7 +292,7 @@ namespace System.ServiceModel.Channels
             }
 
             Fx.Assert(this.bufferPtr == null || this.bufferPtr == (byte*)Marshal.UnsafeAddrOfPinnedArrayElement((byte[])holder, 0),
-                "The buffer moved during a sync call!");
+                "The buffer moved during a [....] call!");
 
             CancelSyncOperation(ref holder);
             return true;
@@ -333,7 +333,7 @@ namespace System.ServiceModel.Channels
                 byte* ptr = this.bufferPtr;
                 if (ptr == null)
                 {
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw Fx.AssertAndThrow("Pointer requested while no operation pending or no buffer provided.");
                 }
                 return ptr;
@@ -348,7 +348,7 @@ namespace System.ServiceModel.Channels
                 NativeOverlapped* ptr = this.nativeOverlapped;
                 if (ptr == null)
                 {
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw Fx.AssertAndThrow("NativeOverlapped pointer requested after it was freed.");
                 }
                 return ptr;
@@ -446,14 +446,14 @@ namespace System.ServiceModel.Channels
             Fx.Assert(pThis.bufferPtr == null || pThis.bufferPtr == (byte*)Marshal.UnsafeAddrOfPinnedArrayElement((byte[])pThis.bufferHolder[0], 0),
                 "Buffer moved during synchronous deferred cleanup!");
 
-            Fx.Assert(pThis.syncOperationPending, "OverlappedContext.CleanupCallback called with no sync operation pending.");
+            Fx.Assert(pThis.syncOperationPending, "OverlappedContext.CleanupCallback called with no [....] operation pending.");
             pThis.pinnedTarget = null;
             pThis.rootedHolder.EventHolder.Close();
             Overlapped.Free(pThis.nativeOverlapped);
         }
 
         // This class is always held onto (rooted) by the packed Overlapped.  The OverlappedContext instance moves itself in and out of
-        // this object to root itself.  It's also used to root the ManualResetEvent during sync operations.
+        // this object to root itself.  It's also used to root the ManualResetEvent during [....] operations.
         // It needs to be an IAsyncResult since that's what Overlapped takes.
         class RootedHolder : IAsyncResult
         {
@@ -493,7 +493,7 @@ namespace System.ServiceModel.Channels
             {
                 get
                 {
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw Fx.AssertAndThrow("RootedHolder.AsyncState called.");
                 }
             }
@@ -502,7 +502,7 @@ namespace System.ServiceModel.Channels
             {
                 get
                 {
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw Fx.AssertAndThrow("RootedHolder.AsyncWaitHandle called.");
                 }
             }
@@ -511,7 +511,7 @@ namespace System.ServiceModel.Channels
             {
                 get
                 {
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw Fx.AssertAndThrow("RootedHolder.CompletedSynchronously called.");
                 }
             }
@@ -520,7 +520,7 @@ namespace System.ServiceModel.Channels
             {
                 get
                 {
-#pragma warning suppress 56503 // Microsoft, not a publicly accessible API
+#pragma warning suppress 56503 // [....], not a publicly accessible API
                     throw Fx.AssertAndThrow("RootedHolder.IsCompleted called.");
                 }
             }
index 00ba45b87591e9def29cbf0d607105f001b85548..a9e8a8ea0ef69a590a44de114ce08fd6ab244bb3 100644 (file)
@@ -52,7 +52,7 @@ namespace System.ServiceModel.Channels
             if (context == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("context"));
 
-#pragma warning suppress 56506 // Microsoft, context.BindingParameters is never null
+#pragma warning suppress 56506 // [....], context.BindingParameters is never null
             credentials = context.BindingParameters.Find<ClientCredentials>();
         }
         public override T GetProperty<T>(System.ServiceModel.Channels.BindingContext context)
@@ -110,7 +110,7 @@ namespace System.ServiceModel.Channels
             if (context == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("context"));
 
-#pragma warning suppress 56506 // Microsoft, context.BindingParameters is never null
+#pragma warning suppress 56506 // [....], context.BindingParameters is never null
             context.BindingParameters.Add(this);
             credentials = context.BindingParameters.Find<ClientCredentials>();
             return context.BuildInnerChannelFactory<TChannel>();
@@ -120,7 +120,7 @@ namespace System.ServiceModel.Channels
         {
             if (context == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("context"));
-#pragma warning suppress 56506 // Microsoft, context.BindingParameters is never null
+#pragma warning suppress 56506 // [....], context.BindingParameters is never null
             this.credentials = context.BindingParameters.Find<ClientCredentials>();
             context.BindingParameters.Add(this);
             return context.CanBuildInnerChannelFactory<TChannel>();
@@ -131,7 +131,7 @@ namespace System.ServiceModel.Channels
             if (context == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("context"));
 
-#pragma warning suppress 56506 // Microsoft, context.BindingParameters is never null
+#pragma warning suppress 56506 // [....], context.BindingParameters is never null
             context.BindingParameters.Add(this);
             this.credentials = context.BindingParameters.Find<ClientCredentials>();
             return context.BuildInnerChannelListener<TChannel>();
@@ -141,7 +141,7 @@ namespace System.ServiceModel.Channels
         {
             if (context == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("context"));
-#pragma warning suppress 56506 // Microsoft, context.BindingParameters is never null
+#pragma warning suppress 56506 // [....], context.BindingParameters is never null
             this.credentials = context.BindingParameters.Find<ClientCredentials>();
             context.BindingParameters.Add(this);
             return context.CanBuildInnerChannelListener<TChannel>();
index 9559bfb66a94bbb0b94d31ada52f0b35b8bdf98c..b3866971e7a56e8a7cae8242cd08a98237db5572 100644 (file)
@@ -938,7 +938,7 @@ namespace System.ServiceModel.Channels
 
 
         //this is the callback routine for async completion on channel BeginSend() operations.
-        //if we are done, simply return. This can happen if user called sync EndX.
+        //if we are done, simply return. This can happen if user called [....] EndX.
         //if the flooder is still processing BeginSend(), then we probably cant complete. In this case, add the result to pending and return
         //main thread will flush the pending completions in MarkEnd().
         //otherwise, call EndX on the result and remove it from results.
index 1698d27888bbbafec9038535416c377cc5796cea..0ae8268e7fc788be41a8e5dbe1d80d7fc34aa8db 100644 (file)
@@ -1635,7 +1635,7 @@ namespace System.ServiceModel.Channels
                     throw;
                 }
 
-                // Indicate sync completion to the caller
+                // Indicate [....] completion to the caller
                 if (result.CompletedSynchronously)
                     base.Complete(true);
             }
index 70538c75bfc7ac7eec59adfffa4d0ac753f098ee..f50e3667174e51a9ed111f895086c89240f0296c 100644 (file)
@@ -798,7 +798,7 @@ namespace System.ServiceModel.Channels
         ulong GetServerPid()
         {
             ulong id;
-#pragma warning suppress 56523 // Microsoft, Win32Exception ctor calls Marshal.GetLastWin32Error()
+#pragma warning suppress 56523 // [....], Win32Exception ctor calls Marshal.GetLastWin32Error()
             if (!UnsafeNativeMethods.GetNamedPipeServerProcessId(pipe, out id))
             {
                 Win32Exception e = new Win32Exception();
@@ -810,7 +810,7 @@ namespace System.ServiceModel.Channels
         ulong GetClientPid()
         {
             ulong id;
-#pragma warning suppress 56523 // Microsoft, Win32Exception ctor calls Marshal.GetLastWin32Error()
+#pragma warning suppress 56523 // [....], Win32Exception ctor calls Marshal.GetLastWin32Error()
             if (!UnsafeNativeMethods.GetNamedPipeServerProcessId(pipe, out id))
             {
                 Win32Exception e = new Win32Exception();
@@ -885,7 +885,7 @@ namespace System.ServiceModel.Channels
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(ConvertPipeException(e, TransferOperation.Read));
                     }
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to caller
+#pragma warning suppress 56500 // [....], transferring exception to caller
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -955,7 +955,7 @@ namespace System.ServiceModel.Channels
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelper(ConvertPipeException(e, TransferOperation.Write), ExceptionEventType);
                     }
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -2293,7 +2293,7 @@ namespace System.ServiceModel.Channels
                         }
                     }
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 58c50c38a0f5549b202a0013fe3467774cc98872..3f258f1641fc930769e57bfd79b1d59a6d610fb6 100644 (file)
@@ -129,7 +129,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.HandleReceiveRequestComplete(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index f6e2de5fec7372f269f57c14360515118bc5c757..687c24254c51afede496a681e96ab7755212374f 100644 (file)
@@ -415,7 +415,7 @@ namespace System.ServiceModel.Channels
                     }
                     thisPtr.CleanupEvents();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 269367ec443d1304a46631a2d3b94d3468412f1a..f062f22e9a0039b69d92339cd760b27c19aba413 100644 (file)
@@ -45,7 +45,7 @@ namespace System.ServiceModel.Channels
             {
                 if (this.requestMessageException != null)
                 {
-#pragma warning suppress 56503 // Microsoft, see outcome of DCR 50092
+#pragma warning suppress 56503 // [....], see outcome of DCR 50092
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(this.requestMessageException);
                 }
 
index 340b136e94942014d1ecc4cf777e2b21edf5822b..4a1402464304fe156a00b593422f5e78fe404c66 100644 (file)
@@ -349,7 +349,7 @@ namespace System.ServiceModel.Channels
                 // normalize protection level settings at the operation scope if possible to help avoid typed message generation
                 if (hasProtectionLevel && isProtectionLevelUniform)
                 {
-                    // (Microsoft) remove the foreach message here
+                    // ([....]) remove the foreach message here
                     //  foreach (MessageDescription message in operation.Messages)
 
                     this.ResetProtectionLevelForMessages(operation);
@@ -665,7 +665,7 @@ namespace System.ServiceModel.Channels
                 {
                     // We already have found and imported the message security binding element above. Hence this could be the dual mode security.
                     // Now let us see if there is HttpsTransportBinding assertion also below it .This is to avoid the 
-                    // warning messages while importing wsdl representing the message security over Https transport security scenario. See 
+                    // warning messages while importing wsdl representing the message security over Https transport security scenario. See Bug:136416.
 
                     SecurityBindingElement tbe = null;
                     this.TryImportTransportSecurityBindingElement(importer, policyContext, out tbe, true);
index 8469527bec09b518618fb2dec8bd25edb260efc3..d2551e9e3144849bc4bfb7e4208ef23a0091f71c 100644 (file)
@@ -765,7 +765,7 @@ namespace System.ServiceModel.Channels
                     {
                         get
                         {
-#pragma warning suppress 56503 // Microsoft, IEnumerator guidelines, Current throws exception before calling MoveNext
+#pragma warning suppress 56503 // [....], IEnumerator guidelines, Current throws exception before calling MoveNext
                             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxDictionaryIsEmpty)));
                         }
                     }
@@ -778,7 +778,7 @@ namespace System.ServiceModel.Channels
                     {
                         get
                         {
-#pragma warning suppress 56503 // Microsoft, IEnumerator guidelines, Current throws exception before calling MoveNext
+#pragma warning suppress 56503 // [....], IEnumerator guidelines, Current throws exception before calling MoveNext
                             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxDictionaryIsEmpty)));
                         }
                     }
@@ -787,7 +787,7 @@ namespace System.ServiceModel.Channels
                     {
                         get
                         {
-#pragma warning suppress 56503 // Microsoft, IEnumerator guidelines, Current throws exception before calling MoveNext
+#pragma warning suppress 56503 // [....], IEnumerator guidelines, Current throws exception before calling MoveNext
                             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxDictionaryIsEmpty)));
                         }
                     }
@@ -796,7 +796,7 @@ namespace System.ServiceModel.Channels
                     {
                         get
                         {
-#pragma warning suppress 56503 // Microsoft, IEnumerator guidelines, Current throws exception before calling MoveNext
+#pragma warning suppress 56503 // [....], IEnumerator guidelines, Current throws exception before calling MoveNext
                             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxDictionaryIsEmpty)));
                         }
                     }
index 62fff724ff72b361826e505c0f093e9bbf93a931..71a06c030bfcc0f65fac134e005d1bcaff6a0d7a 100644 (file)
@@ -1465,7 +1465,7 @@ namespace System.ServiceModel.Channels
                     }
                 }
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to caller
+#pragma warning suppress 56500 // [....], transferring exception to caller
             catch (Exception e)
             {
                 if (Fx.IsFatal(e))
index 4cb52f5798015d2dd3d4f86e922a609febcbb0e7..5660eb1b93b056c6acc4335705c2c39142a65683 100644 (file)
@@ -595,7 +595,7 @@ namespace System.ServiceModel.Channels
 
                 if (!upgradeAsyncResult.CompletedSynchronously)
                 {
-                    upgradeAsyncResult = null; //caller shouldn't use this out param unless completed sync.
+                    upgradeAsyncResult = null; //caller shouldn't use this out param unless completed [....].
                     return false;
                 }
 
@@ -1295,7 +1295,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.message = thisPtr.parent.Receive(thisPtr.timeout);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception exception)
                 {
                     if (Fx.IsFatal(exception))
@@ -1892,7 +1892,7 @@ namespace System.ServiceModel.Channels
                     completeSelf = thisPtr.HandleWriteStartBytes();
                     throwing = false;
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1928,7 +1928,7 @@ namespace System.ServiceModel.Channels
                     completeSelf = thisPtr.HandleWriteBufferedMessage();
                     throwing = false;
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1963,7 +1963,7 @@ namespace System.ServiceModel.Channels
                     completeSelf = thisPtr.HandleWriteEndBytes();
                     success = true;
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 6690af5b3da47865d14301a2fe5b460a821c2867..2a57b0bdbf54e33a0fe05ad1177472df8b0b01f9 100644 (file)
@@ -941,7 +941,7 @@ namespace System.ServiceModel.Channels
             {
                 this.asyncWriteException = ConvertSendException(socketException, TimeSpan.MaxValue);
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to caller
+#pragma warning suppress 56500 // [....], transferring exception to caller
             catch (Exception exception)
             {
                 if (Fx.IsFatal(exception))
@@ -1274,7 +1274,7 @@ namespace System.ServiceModel.Channels
             {
                 this.asyncReadException = ConvertObjectDisposedException(objectDisposedException, TransferOperation.Read);
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to caller
+#pragma warning suppress 56500 // [....], transferring exception to caller
             catch (Exception exception)
             {
                 if (Fx.IsFatal(exception))
@@ -1306,7 +1306,7 @@ namespace System.ServiceModel.Channels
             {
                 asyncReadException = ConvertReceiveException(socketException, TimeSpan.MaxValue);
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to caller
+#pragma warning suppress 56500 // [....], transferring exception to caller
             catch (Exception exception)
             {
                 if (Fx.IsFatal(exception))
@@ -1927,7 +1927,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = thisPtr.StartConnect();
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -2234,7 +2234,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.StartAccept();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 957aefd915ab805222627270e8f237d4296f672d..baf6e2dfdbf9ea9012c60083a2171ad18b9fed22 100644 (file)
@@ -89,7 +89,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters cannot be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null
             context.BindingParameters.Add(this);
             return context.BuildInnerChannelFactory<TChannel>();
         }
@@ -101,7 +101,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters cannot be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null
             context.BindingParameters.Add(this);
             return context.CanBuildInnerChannelFactory<TChannel>();
         }
@@ -113,7 +113,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters cannot be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null
             context.BindingParameters.Add(this);
             return context.BuildInnerChannelListener<TChannel>();
         }
@@ -125,7 +125,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters cannot be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null
             context.BindingParameters.Add(this);
             return context.CanBuildInnerChannelListener<TChannel>();
         }
index a9761c4dcab527a44a95777086268d15361f6f50..a675b39930abafab9a46df436e571f3d3426961b 100644 (file)
@@ -439,7 +439,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = this.HandleOpenAuthenticatorComplete(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -470,7 +470,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = this.HandleOpenTokenProviderComplete(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -501,7 +501,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = this.HandleGetTokenComplete(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -532,7 +532,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = this.HandleCloseTokenProviderComplete(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1142,7 +1142,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = this.HandleBaseOpenComplete(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1173,7 +1173,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = this.HandleOpenTokenProviderComplete(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1204,7 +1204,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = this.HandleGetTokenComplete(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1294,7 +1294,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = this.HandleBaseCloseComplete(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1324,7 +1324,7 @@ namespace System.ServiceModel.Channels
                 {
                     SecurityUtils.EndCloseTokenProviderIfRequired(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 364205eab3697188dcb7044c41c67e4eec0160f1..55a2020f77ec186503796aa8e5f5b601a2c2b301 100644 (file)
@@ -21,7 +21,7 @@ namespace System.ServiceModel.Channels
             if (endpointContext == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("endpointContext");
 
-#pragma warning suppress 56506 // Microsoft, endpointContext.Endpoint is never null
+#pragma warning suppress 56506 // [....], endpointContext.Endpoint is never null
             if (endpointContext.Endpoint.Binding == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("endpointContext.Binding");
 
index f045513e285d31121405c37d839b3ec54d312490..fb32637e265c0f96343620cd8b670cf5530a735b 100644 (file)
@@ -90,7 +90,7 @@ namespace System.ServiceModel.Channels
             {
                 acceptUpgradeAsyncResult.CompleteAuthenticateAsServer(result);
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
             catch (Exception e)
             {
                 if (Fx.IsFatal(e))
index 37d443c87cfe9b9ff0f608d342b9510ff59dbdfc..5d18a8df17efdf5fe84221c81c486f0054edd4a5 100644 (file)
@@ -93,7 +93,7 @@ namespace System.ServiceModel.Channels
             {
                 thisPtr.CompleteAuthenticateAsClient(result);
             }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
             catch (Exception e)
             {
                 if (Fx.IsFatal(e))
index ccfc53f430403f76ce05dfc340f4f00b629ffc8a..fc5e285e2886fb563bf1ff9531f4b78f010094fe 100644 (file)
@@ -348,7 +348,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = thisPtr.HandleWritePreamble();
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -377,7 +377,7 @@ namespace System.ServiceModel.Channels
                         thisPtr.connection.EndWrite();
                         completeSelf = thisPtr.ReadPreambleAck();
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -405,7 +405,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = thisPtr.HandlePreambleAck();
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -438,7 +438,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = thisPtr.HandleUpgrade(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -470,7 +470,7 @@ namespace System.ServiceModel.Channels
                     {
                         ConnectionUpgradeHelper.EndDecodeFramingFault(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -763,7 +763,7 @@ namespace System.ServiceModel.Channels
                     completeSelf = thisPtr.HandleEstablishConnection(result);
                     throwing = false;
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -805,7 +805,7 @@ namespace System.ServiceModel.Channels
                     completeSelf = thisPtr.HandleWriteMessage(result);
                     throwing = false;
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -842,7 +842,7 @@ namespace System.ServiceModel.Channels
                     completeSelf = thisPtr.CompleteReceiveReply(result);
                     throwing = false;
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 91df25a657bc90910bb6c755f5a41f5a18b5f19f..993807584250140b9ddc2355072c2e5fd6709d31 100644 (file)
@@ -176,7 +176,7 @@ namespace System.ServiceModel.Channels
                         thisPtr.exitLock = true;
                         completeSelf = thisPtr.PerformOperation(thisPtr.timeoutHelper.RemainingTime());
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -225,7 +225,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.SetReturnValue(thisPtr.Source.EndReceive());
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -270,7 +270,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.SetReturnValue(thisPtr.Source.EndWaitForMessage());
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 799f5ba415c3e152377cd5191a614af2d343603b..c1727702b66c5e7340e05eaf980918c942a3b03a 100644 (file)
@@ -117,7 +117,7 @@ namespace System.ServiceModel.Channels
 
             // to cover all our bases, let's iterate through the BindingParameters to make sure
             // we haven't missed a query (since we're the Transport and we're at the bottom)
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters cannot be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null
             Collection<BindingElement> bindingElements = context.BindingParameters.FindAll<BindingElement>();
 
             T result = default(T);
@@ -154,7 +154,7 @@ namespace System.ServiceModel.Channels
         internal ChannelProtectionRequirements GetProtectionRequirements(BindingContext context)
         {
             AddressingVersion addressingVersion = AddressingVersion.WSAddressing10;
-#pragma warning suppress 56506 // Microsoft, CustomBinding.Elements can never be null
+#pragma warning suppress 56506 // [....], CustomBinding.Elements can never be null
             MessageEncodingBindingElement messageEncoderBindingElement = context.Binding.Elements.Find<MessageEncodingBindingElement>();
             if (messageEncoderBindingElement != null)
             {
@@ -183,7 +183,7 @@ namespace System.ServiceModel.Channels
             }
 
             // Set SoapBinding Transport URI
-#pragma warning suppress 56506 // Microsoft, these properties cannot be null in this context
+#pragma warning suppress 56506 // [....], these properties cannot be null in this context
             BindingElementCollection bindingElements = endpointContext.Endpoint.Binding.CreateBindingElements();
             if (wsdlTransportUri != null)
             {
index 9e6b90657f388f09419f8ddd90341311788c07e9..3cd450b6d5c5e46bab5d89c8029d168216488284 100644 (file)
@@ -36,20 +36,20 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
             }
 
-#pragma warning suppress 56506 // Microsoft, these properties cannot be null in this context
+#pragma warning suppress 56506 // [....], these properties cannot be null in this context
             if (context.Endpoint.Binding == null)
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context.Endpoint.Binding");
             }
 
-#pragma warning suppress 56506 // Microsoft, CustomBinding.Elements never be null
+#pragma warning suppress 56506 // [....], CustomBinding.Elements never be null
             TransportBindingElement transportBindingElement = GetBindingElements(context).Find<TransportBindingElement>();
 
             bool transportHandledExternaly = (transportBindingElement != null) && !StateHelper.IsRegisteredTransportBindingElement(importer, context);
             if (transportHandledExternaly)
                 return;
 
-#pragma warning suppress 56506 // Microsoft, these properties cannot be null in this context
+#pragma warning suppress 56506 // [....], these properties cannot be null in this context
             WsdlNS.SoapBinding soapBinding = (WsdlNS.SoapBinding)context.WsdlBinding.Extensions.Find(typeof(WsdlNS.SoapBinding));
             if (soapBinding != null && transportBindingElement == null)
             {
index f689dc4a0de7df4e545403acc923d362ce91c269..4de327474f770e27ff9dc283b5b29c3faa801dec 100644 (file)
@@ -202,7 +202,10 @@ namespace System.ServiceModel.Channels
         internal const bool RequireClientCertificate = false;
         internal const int MaxFaultSize = MaxBufferSize;
         internal const int MaxSecurityFaultSize = 16384;
-        internal const SslProtocols SslProtocols = SslProtocols.Ssl3 | SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12;
+        internal const SslProtocols SslProtocols = System.Security.Authentication.SslProtocols.Ssl3 |
+                                                   System.Security.Authentication.SslProtocols.Tls |
+                                                   System.Security.Authentication.SslProtocols.Tls11 |
+                                                   System.Security.Authentication.SslProtocols.Tls12;
 
         // Calling CreateFault on an incoming message can expose some DoS-related security 
         // vulnerabilities when a service is in streaming mode.  See MB 47592 for more details. 
index d0a75974cbc9869528dc131a7162003c732cfbf8..ec077721918e45dca50d9e342918874011dc27e9 100644 (file)
@@ -739,7 +739,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.HandleCloseOutputSession(result, false);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -771,7 +771,7 @@ namespace System.ServiceModel.Channels
                 {
                     completeSelf = thisPtr.HandleCloseInputSession(result, false);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -937,7 +937,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = thisPtr.WriteEndBytes();
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -965,7 +965,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.HandleWriteEndBytesComplete();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1105,7 +1105,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = thisPtr.WriteCore();
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -1133,7 +1133,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.channel.FinishWritingMessage();
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1290,7 +1290,7 @@ namespace System.ServiceModel.Channels
 
                     DiagnosticUtility.TraceHandledException(e, TraceEventType.Information);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 5bf91cc01945f378ca4f73ace8dbaef9c71abe69..aedfcbdd37cf09c81a82caab081d022a8b7c181f 100644 (file)
@@ -345,7 +345,7 @@ namespace System.ServiceModel.Channels
                     {
                         this.OnScheduled(this.parent);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
index 84154efa76a30f6b42f127d6dcc7b3e88a82c75d..3abbf4e36ed528f65edc633972f3137673ea92a0 100644 (file)
@@ -606,7 +606,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.CompleteGetToken(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -700,7 +700,7 @@ namespace System.ServiceModel.Channels
                 {
                     thisPtr.CompleteGetToken(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
index 2634898e8f3fe2db16ccbb52a1510585727b8f98..bade3dab69e91693e91f69fb8f9547151fcaf850 100644 (file)
@@ -1152,7 +1152,7 @@ namespace System.ServiceModel.Channels
         internal int GetClientPid()
         {
             int pid;
-#pragma warning suppress 56523 // Microsoft, Win32Exception ctor calls Marshal.GetLastWin32Error()
+#pragma warning suppress 56523 // [....], Win32Exception ctor calls Marshal.GetLastWin32Error()
             bool success = UnsafeNativeMethods.GetNamedPipeClientProcessId(this, out pid);
             if (!success)
             {
index 4795a09177b63348fe8aee9015a76441a5ca0b58..71549cd703b9573743146d015693dac6d0637c8a 100644 (file)
@@ -56,7 +56,7 @@ namespace System.ServiceModel.Channels
             {
                 // The UriPrefixTable instance itself is used as a 
                 // synchronization primitive in the TransportManagers and the 
-                // TransportManagerContainers so we return 'this' to keep them in sync.                 
+                // TransportManagerContainers so we return 'this' to keep them in [....].                 
                 return this;
             }
         }
index b342bddf9eece281b14d576c064510faed62e512..91558a6d54577501e2886b1ed102fd8b12a0b926 100644 (file)
@@ -664,7 +664,7 @@ namespace System.ServiceModel.Channels
                                                             new ArraySegment<byte>(internalBuffer, receivedByteCount, internalBuffer.Length - receivedByteCount),
                                                             CancellationToken.None);
 
-                            await receiveTask.ContinueOnCapturedContextFlow<WebSocketReceiveResult>();
+                            await receiveTask.ConfigureAwait(false);
 
                             result = receiveTask.Result;
                             this.CheckCloseStatus(result);
@@ -847,7 +847,8 @@ namespace System.ServiceModel.Channels
                         if (this.streamWaitTask != null)
                         {
                             //// Wait until the previous stream message finished.
-                            await this.streamWaitTask.Task.ContinueOnCapturedContextFlow<object>();
+
+                            await this.streamWaitTask.Task.ConfigureAwait(false);
                         }
 
                         this.streamWaitTask = new TaskCompletionSource<object>();
@@ -857,7 +858,7 @@ namespace System.ServiceModel.Channels
                     {
                         if (!this.useStreaming)
                         {
-                            await this.ReadBufferedMessageAsync();
+                            await this.ReadBufferedMessageAsync().ConfigureAwait(false);
                         }
                         else
                         {
@@ -875,7 +876,8 @@ namespace System.ServiceModel.Channels
                                     Task<WebSocketReceiveResult> receiveTask = this.webSocket.ReceiveAsync(
                                                         new ArraySegment<byte>(buffer, 0, this.receiveBufferSize),
                                                         CancellationToken.None);
-                                    await receiveTask.ContinueOnCapturedContextFlow<WebSocketReceiveResult>();
+
+                                    await receiveTask.ConfigureAwait(false);
 
                                     WebSocketReceiveResult result = receiveTask.Result;
                                     this.CheckCloseStatus(result);
index e1f36707c02031cc841c3336852f27b47746e558..8f027c01ce97939e520e6baf0ebb467ff1e2604f 100644 (file)
@@ -57,7 +57,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters cannot be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null
             context.BindingParameters.Add(this);
             return context.BuildInnerChannelFactory<TChannel>();
         }
@@ -69,7 +69,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters cannot be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null
             context.BindingParameters.Add(this);
             return context.CanBuildInnerChannelFactory<TChannel>();
         }
@@ -81,7 +81,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters cannot be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null
             context.BindingParameters.Add(this);
             return context.BuildInnerChannelListener<TChannel>();
         }
@@ -93,7 +93,7 @@ namespace System.ServiceModel.Channels
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
             }
 
-#pragma warning suppress 56506 // Microsoft, BindingContext.BindingParameters cannot be null
+#pragma warning suppress 56506 // [....], BindingContext.BindingParameters cannot be null
             context.BindingParameters.Add(this);
             return context.CanBuildInnerChannelListener<TChannel>();
         }
index 441c80b91f1071ed2fe9acdcf4c86d3fa826c91c..feaf5f1b1cf39e7069128361b54d373005cd5e1c 100644 (file)
@@ -614,7 +614,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = this.HandleBaseOpenComplete(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -645,7 +645,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = this.HandleOpenTokenProviderComplete(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -676,7 +676,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = this.HandleGetSspiCredentialComplete(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -758,7 +758,7 @@ namespace System.ServiceModel.Channels
                     {
                         completeSelf = this.HandleBaseCloseComplete(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
@@ -788,7 +788,7 @@ namespace System.ServiceModel.Channels
                     {
                         SecurityUtils.EndCloseTokenProviderIfRequired(result);
                     }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                     catch (Exception e)
                     {
                         if (Fx.IsFatal(e))
index 9da24fb18bbc7babac72b8677497e9a4a26c00b7..c969544ef04de6feab4734e75c6ce0ea655c0c09 100644 (file)
@@ -376,7 +376,7 @@ namespace System.ServiceModel
                                         }
                                         else
                                         {
-#pragma warning suppress 56503 // Microsoft, We throw only for unknown exceptions.
+#pragma warning suppress 56503 // [....], We throw only for unknown exceptions.
                                             throw;
                                         }
                                     }
index 5a64e2fec127e7a18198c58444648dd0c110563a..5b37e80a69cd6ffd1d149d17c24652a0e1e6109d 100644 (file)
@@ -56,7 +56,7 @@ namespace System.ServiceModel.ComIntegration
         ACTIVATE_LOCAL = 0x08,
         ACTIVATE_REMOTE = 0x10
     }
-
+    
     enum TOKEN_INFORMATION_CLASS
     {
         TokenUser = 1,
@@ -96,6 +96,7 @@ namespace System.ServiceModel.ComIntegration
         ERROR_INSUFFICIENT_BUFFER = 122,
         ERROR_NO_TOKEN = 1008,
         ERROR_NONE_MAPPED = 1332,
+        ERROR_NO_SUCH_DOMAIN = 1355,
     }
 
     enum EXTENDED_NAME_FORMAT
@@ -112,6 +113,32 @@ namespace System.ServiceModel.ComIntegration
         NameDnsDomainName = 12
     }
 
+    [Flags]
+    enum DSFlags : uint
+    {
+        DS_FORCE_REDISCOVERY = 0x00000001,
+        DS_DIRECTORY_SERVICE_REQUIRED = 0x00000010,
+        DS_DIRECTORY_SERVICE_PREFERRED = 0x00000020,
+        DS_GC_SERVER_REQUIRED = 0x00000040,
+        DS_PDC_REQUIRED = 0x00000080,
+        DS_BACKGROUND_ONLY = 0x00000100,
+        DS_IP_REQUIRED = 0x00000200,
+        DS_KDC_REQUIRED = 0x00000400,
+        DS_TIMESERV_REQUIRED = 0x00000800,
+        DS_WRITABLE_REQUIRED = 0x00001000,
+        DS_GOOD_TIMESERV_PREFERRED = 0x00002000,
+        DS_AVOID_SELF = 0x00004000,
+        DS_ONLY_LDAP_NEEDED = 0x00008000,
+        DS_IS_FLAT_NAME = 0x00010000,
+        DS_IS_DNS_NAME = 0x00020000,
+        DS_TRY_NEXTCLOSEST_SITE = 0x00040000,
+        DS_DIRECTORY_SERVICE_6_REQUIRED = 0x00080000,
+        DS_WEB_SERVICE_REQUIRED = 0x00100000,
+        DS_DIRECTORY_SERVICE_8_REQUIRED = 0x00200000,
+        DS_RETURN_DNS_NAME = 0x40000000,
+        DS_RETURN_FLAT_NAME = 0x80000000,
+    }
+
     [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
     struct TagVariant
     {
@@ -228,6 +255,7 @@ namespace System.ServiceModel.ComIntegration
         internal const String OLEAUT32 = "oleaut32.dll";
         internal const String COMSVCS = "comsvcs.dll";
         internal const String SECUR32 = "secur32.dll";
+        internal const String NETAPI32 = "netapi32.dll";
 
         internal const int ERROR_MORE_DATA = 0xEA;
         internal const int ERROR_SUCCESS = 0;
@@ -493,7 +521,21 @@ namespace System.ServiceModel.ComIntegration
         [DllImport(SECUR32, CharSet = CharSet.Unicode, SetLastError = true)]
         [return: MarshalAs(UnmanagedType.U1)]
         [ResourceExposure(ResourceScope.None)]
-        internal extern static bool TranslateName(string input, EXTENDED_NAME_FORMAT inputFormat, EXTENDED_NAME_FORMAT outputFormat, StringBuilder outputString, out uint size);
+        internal static extern bool TranslateName(string input, EXTENDED_NAME_FORMAT inputFormat, EXTENDED_NAME_FORMAT outputFormat, StringBuilder outputString, out uint size);
+
+        [DllImport(NETAPI32, ExactSpelling = true, EntryPoint = "DsGetDcNameW", CharSet = CharSet.Unicode, SetLastError = true)]
+        [ResourceExposure(ResourceScope.None)]
+        internal static extern int DsGetDcName(
+            [In] string computerName,
+            [In] string domainName,
+            [In] IntPtr domainGuid,
+            [In] string siteName,
+            [In] uint flags,
+            [Out] out IntPtr domainControllerInfo);
+
+        [DllImport(NETAPI32)]
+        [ResourceExposure(ResourceScope.None)]
+        internal static extern int NetApiBufferFree([In] IntPtr buffer);
     }
 
     internal static class InterfaceHelper
index 94912a949e8694639da8258c0452ccec930fefec..05db2a82948b709a6c217634083b5d475710ea47 100644 (file)
@@ -63,7 +63,7 @@ namespace System.ServiceModel.Configuration
             binding.MaxSessionSize = this.MaxSessionSize;
             binding.MaxReadPoolSize = this.MaxReadPoolSize;
             binding.MaxWritePoolSize = this.MaxWritePoolSize;
-#pragma warning suppress 56506 //Microsoft; base.ApplyConfiguration() checks for 'binding' being null
+#pragma warning suppress 56506 //[....]; base.ApplyConfiguration() checks for 'binding' being null
             this.ReaderQuotas.ApplyConfiguration(binding.ReaderQuotas);
             binding.CompressionFormat = this.CompressionFormat;
         }
@@ -73,7 +73,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             BinaryMessageEncodingElement source = (BinaryMessageEncodingElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.MaxSessionSize = source.MaxSessionSize;
             this.MaxReadPoolSize = source.MaxReadPoolSize;
             this.MaxWritePoolSize = source.MaxWritePoolSize;
index 68aaa7192335d47e2f76658a1235b150d7edebd5..e9ffa4980f037afb12c1fc9ec2b41e75a5acba16 100644 (file)
@@ -25,7 +25,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             CallbackDebugElement source = (CallbackDebugElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() check for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() check for 'from' being null
             this.IncludeExceptionDetailInFaults = source.IncludeExceptionDetailInFaults;
         }
 
index e998b23a0fa7b4460c8f47266389f1a3f049b635..c12e897d24bdf93cbc2c2c7c2032ab6768adfbb7 100644 (file)
@@ -29,7 +29,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             CallbackTimeoutsElement source = (CallbackTimeoutsElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.TransactionTimeout = source.TransactionTimeout;
         }
 
index 71c11065ab48cb6ab00949db978009f78d2d9061..ca6fdc463666286af3b0abc9ef20659145a7483f 100644 (file)
@@ -96,7 +96,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             ClientCredentialsElement source = (ClientCredentialsElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.ClientCertificate.Copy(source.ClientCertificate);
             this.ServiceCertificate.Copy(source.ServiceCertificate);
             this.Windows.Copy(source.Windows);
index 33e4d36bd110923865c68afe687ae57b5fc1089d..7c79bab3f2625ce5640553166a04b2e65eb19605 100644 (file)
@@ -25,7 +25,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             ClientViaElement source = (ClientViaElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() check for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() check for 'from' being null
             this.ViaUri = source.ViaUri;
         }
 
index d5220b39c01b935c38c6168f39d288b770b96b85..6913327c252a92804fbb98e53d0cdb914922ca73 100644 (file)
@@ -23,7 +23,7 @@ namespace System.ServiceModel.Configuration
             {
                 if (!typeof(System.ServiceModel.Description.IEndpointBehavior).IsAssignableFrom(element.BehaviorType))
                 {
-#pragma warning disable 56506 //Microsoft; element.ElementInformation is guaranteed to be non-null(System.Configuration)
+#pragma warning disable 56506 //[....]; element.ElementInformation is guaranteed to be non-null(System.Configuration)
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidCommonEndpointBehaviorType,
                         element.ConfigurationElementName,
                         typeof(System.ServiceModel.Description.IEndpointBehavior).FullName),
@@ -44,7 +44,7 @@ namespace System.ServiceModel.Configuration
             {
                 if (!typeof(System.ServiceModel.Description.IEndpointBehavior).IsAssignableFrom(element.BehaviorType))
                 {
-#pragma warning disable 56506 //Microsoft; element.ElementInformation is guaranteed to be non-null(System.Configuration)
+#pragma warning disable 56506 //[....]; element.ElementInformation is guaranteed to be non-null(System.Configuration)
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidCommonEndpointBehaviorType,
                         element.ConfigurationElementName,
                         typeof(System.ServiceModel.Description.IEndpointBehavior).FullName),
index ab4e50ac0445d9de9a94343432e6f1089a9c405d..963969c6d2283c4a0b2e5a600646ab59b3d57d0f 100644 (file)
@@ -23,7 +23,7 @@ namespace System.ServiceModel.Configuration
             {
                 if (!typeof(System.ServiceModel.Description.IServiceBehavior).IsAssignableFrom(element.BehaviorType))
                 {
-#pragma warning disable 56506 //Microsoft; element.ElementInformation is guaranteed to be non-null(System.Configuration)
+#pragma warning disable 56506 //[....]; element.ElementInformation is guaranteed to be non-null(System.Configuration)
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidCommonServiceBehaviorType,
                         element.ConfigurationElementName,
                         typeof(System.ServiceModel.Description.IServiceBehavior).FullName),
@@ -44,7 +44,7 @@ namespace System.ServiceModel.Configuration
             {
                 if (!typeof(System.ServiceModel.Description.IServiceBehavior).IsAssignableFrom(element.BehaviorType))
                 {
-#pragma warning disable 56506 //Microsoft; element.ElementInformation is guaranteed to be non-null(System.Configuration)
+#pragma warning disable 56506 //[....]; element.ElementInformation is guaranteed to be non-null(System.Configuration)
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidCommonServiceBehaviorType,
                         element.ConfigurationElementName,
                         typeof(System.ServiceModel.Description.IServiceBehavior).FullName),
index 960392bb7040cbc7ac098bf2ac474b9d3cba5314..8367bce360522cfe8ce5c9c6630cbb881931d399 100644 (file)
@@ -35,7 +35,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             CompositeDuplexElement source = (CompositeDuplexElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.ClientBaseAddress = source.ClientBaseAddress;
         }
 
index 5271947453ad625080a1e06003f4330a116cb1fe..74e3234cf9b34119ce597480e5dd7c9f2af67b56 100644 (file)
@@ -37,7 +37,7 @@ namespace System.ServiceModel.Configuration
                         new ConfigurationErrorsException(SR.GetString(SR.ConfigBindingExtensionNotFound,
                         ConfigurationHelpers.GetBindingsSectionPath(bindingCollectionName))));
                 }
-                catch (NullReferenceException) // System.Configuration.ConfigurationElement 
+                catch (NullReferenceException) // System.Configuration.ConfigurationElement bug
                 {
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
                         new ConfigurationErrorsException(SR.GetString(SR.ConfigBindingExtensionNotFound,
@@ -69,7 +69,7 @@ namespace System.ServiceModel.Configuration
                         new ConfigurationErrorsException(SR.GetString(SR.ConfigBindingExtensionNotFound,
                         ConfigurationHelpers.GetBindingsSectionPath(bindingCollectionName))));
                 }
-                catch (NullReferenceException) // System.Configuration.ConfigurationElement 
+                catch (NullReferenceException) // System.Configuration.ConfigurationElement bug
                 {
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
                         new ConfigurationErrorsException(SR.GetString(SR.ConfigBindingExtensionNotFound,
@@ -99,7 +99,7 @@ namespace System.ServiceModel.Configuration
                         new ConfigurationErrorsException(SR.GetString(SR.ConfigEndpointExtensionNotFound,
                         ConfigurationHelpers.GetEndpointsSectionPath(endpointCollectionName))));
                 }
-                catch (NullReferenceException) // System.Configuration.ConfigurationElement 
+                catch (NullReferenceException) // System.Configuration.ConfigurationElement bug
                 {
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
                         new ConfigurationErrorsException(SR.GetString(SR.ConfigEndpointExtensionNotFound,
@@ -131,7 +131,7 @@ namespace System.ServiceModel.Configuration
                         new ConfigurationErrorsException(SR.GetString(SR.ConfigEndpointExtensionNotFound,
                         ConfigurationHelpers.GetEndpointsSectionPath(endpointCollectionName))));
                 }
-                catch (NullReferenceException) // System.Configuration.ConfigurationElement 
+                catch (NullReferenceException) // System.Configuration.ConfigurationElement bug
                 {
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
                         new ConfigurationErrorsException(SR.GetString(SR.ConfigEndpointExtensionNotFound,
index d9f93eff49d39d36e342d6f14eac49a0ddf69f39..40411ccbc5e057d89d38afa7ccf0bbdb6d3e1e45 100644 (file)
@@ -111,7 +111,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             ConnectionOrientedTransportElement source = (ConnectionOrientedTransportElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.ConnectionBufferSize = source.ConnectionBufferSize;
             this.HostNameComparisonMode = source.HostNameComparisonMode;
             this.ChannelInitializationTimeout = source.ChannelInitializationTimeout;
index 2997f320965183c838dea7a8c11ffa8742a15ff3..ac7dea5349025280fdb760d764b7df38f3a6b51a 100644 (file)
@@ -38,7 +38,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             DataContractSerializerElement source = (DataContractSerializerElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.IgnoreExtensionDataObject = source.IgnoreExtensionDataObject;
             this.MaxItemsInObjectGraph = source.MaxItemsInObjectGraph;
         }
index 4c079f993d627017dcd628aeed461f611f569990..02733601e3c9a315050319752aa071252de0b254 100644 (file)
@@ -37,7 +37,7 @@ namespace System.ServiceModel.Configuration
                 }
                 if (!typeof(System.ServiceModel.Description.IEndpointBehavior).IsAssignableFrom(element.BehaviorType))
                 {
-#pragma warning disable 56506 //Microsoft; element.ElementInformation is guaranteed to be non-null(System.Configuration)
+#pragma warning disable 56506 //[....]; element.ElementInformation is guaranteed to be non-null(System.Configuration)
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidEndpointBehaviorType,
                         element.ConfigurationElementName,
                         this.Name),
@@ -62,7 +62,7 @@ namespace System.ServiceModel.Configuration
                 }
                 if (!typeof(System.ServiceModel.Description.IEndpointBehavior).IsAssignableFrom(element.BehaviorType))
                 {
-#pragma warning disable 56506 //Microsoft; element.ElementInformation is guaranteed to be non-null(System.Configuration)
+#pragma warning disable 56506 //[....]; element.ElementInformation is guaranteed to be non-null(System.Configuration)
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidEndpointBehaviorType,
                         element.ConfigurationElementName,
                         this.Name),
index ba05d703ce2a620697a6a6cf09001b000131c651..066afddd96bac87c18ad5a8882070e4cddfaf179 100644 (file)
@@ -87,7 +87,7 @@ namespace System.ServiceModel.Configuration
                 else if (element.TypeName.Equals(extension.TypeName, StringComparison.Ordinal))
                 {
                     // In order to avoid extra assemblies being loaded, we perform type comparison only if the type names
-                    // are the same. See 
+                    // are the same. See bug CSDMain 222573.
                     Type elementType = Type.GetType(element.Type, false);
                     if (null != elementType && elementType.Equals(Type.GetType(extension.Type, false)))
                     {
index b3df15d6f1a703a462e834bb3dfd8d7c271c61e8..e8e8d211ebd3c508f176d99f03552dec48fc9c21 100644 (file)
@@ -211,7 +211,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             HttpTransportElement source = (HttpTransportElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.AllowCookies = source.AllowCookies;
             this.RequestInitializationTimeout = source.RequestInitializationTimeout;
             this.AuthenticationScheme = source.AuthenticationScheme;
index 5e54dbf2fbd56b5381e75db44bf21638ede23686..38d9700d5069c23dd6d90b10bbdf25d33acd8f53 100644 (file)
@@ -30,7 +30,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             HttpsTransportElement source = (HttpsTransportElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.RequireClientCertificate = source.RequireClientCertificate;
         }
 
index e7ec1f86419ca2e55164cd344835e1c27787b769..50ed2a799993ac00e0cac8836112c1bd409521d6 100644 (file)
@@ -111,7 +111,7 @@ namespace System.ServiceModel.Configuration
             else if (identity is X509CertificateEndpointIdentity)
             {
                 X509Certificate2Collection certs = ((X509CertificateEndpointIdentity)identity).Certificates;
-#pragma warning suppress 56506 //Microsoft; this.Certificate can never be null (underlying configuration system guarantees)
+#pragma warning suppress 56506 //[....]; this.Certificate can never be null (underlying configuration system guarantees)
                 this.Certificate.EncodedValue = Convert.ToBase64String(certs.Export(certs.Count == 1 ? X509ContentType.SerializedCert : X509ContentType.SerializedStore));
             }
         }
index 7c925c490ee0085bf02ed8ce8d9f1e89025fc5a3..c12c1022c0f3865841e1d41bfda5a61a80e4fe9f 100644 (file)
@@ -94,17 +94,17 @@ namespace System.ServiceModel.Configuration
             this.MaxIssuedTokenCachingTime = from.MaxIssuedTokenCachingTime;
             this.IssuedTokenRenewalThresholdPercentage = from.IssuedTokenRenewalThresholdPercentage;
 
-#pragma warning suppress 56506 //Microsoft; from.ElementInformation.Properties[ConfigurationStrings.LocalIssuerIssuedTokenParameters] can never be null (underlying configuration system guarantees)
+#pragma warning suppress 56506 //[....]; from.ElementInformation.Properties[ConfigurationStrings.LocalIssuerIssuedTokenParameters] can never be null (underlying configuration system guarantees)
             if (PropertyValueOrigin.Default != from.ElementInformation.Properties[ConfigurationStrings.LocalIssuer].ValueOrigin)
             {
                 this.LocalIssuer.Copy(from.LocalIssuer);
             }
-#pragma warning suppress 56506 //Microsoft; from.ElementInformation.Properties[ConfigurationStrings.LocalIssuerChannelBehaviors] can never be null (underlying configuration system guarantees)
+#pragma warning suppress 56506 //[....]; from.ElementInformation.Properties[ConfigurationStrings.LocalIssuerChannelBehaviors] can never be null (underlying configuration system guarantees)
             if (PropertyValueOrigin.Default != from.ElementInformation.Properties[ConfigurationStrings.LocalIssuerChannelBehaviors].ValueOrigin)
             {
                 this.LocalIssuerChannelBehaviors = from.LocalIssuerChannelBehaviors;
             }
-#pragma warning suppress 56506 //Microsoft; from.ElementInformation.Properties[ConfigurationStrings.IssuerChannelBehaviors] can never be null (underlying configuration system guarantees)
+#pragma warning suppress 56506 //[....]; from.ElementInformation.Properties[ConfigurationStrings.IssuerChannelBehaviors] can never be null (underlying configuration system guarantees)
             if (PropertyValueOrigin.Default != from.ElementInformation.Properties[ConfigurationStrings.IssuerChannelBehaviors].ValueOrigin)
             {
                 foreach (IssuedTokenClientBehaviorsElement element in from.IssuerChannelBehaviors)
index 5d7544aeba68584450a82bddacba7cbcfaab531e..426a9ae19b96461c99f35f170f7702aa793c6278 100644 (file)
@@ -114,7 +114,7 @@ namespace System.ServiceModel.Configuration
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("from");
             }
             this.SamlSerializerType = from.SamlSerializerType;
-#pragma warning suppress 56506 // Microsoft; ElementInformation is never null.
+#pragma warning suppress 56506 // [....]; ElementInformation is never null.
             PropertyInformationCollection propertyInfo = from.ElementInformation.Properties;
             if (propertyInfo[ConfigurationStrings.KnownCertificates].ValueOrigin != PropertyValueOrigin.Default)
             {
index 6ad15c1e44db4ec259d0a0177b1e570f39a214bb..8f40a13563e32fea85269f0b0238a9b20fc6ff6c 100644 (file)
@@ -24,7 +24,7 @@ namespace System.ServiceModel.Configuration
             binding.WriteEncoding = this.WriteEncoding;
             binding.MaxReadPoolSize = this.MaxReadPoolSize;
             binding.MaxWritePoolSize = this.MaxWritePoolSize;
-#pragma warning suppress 56506 //Microsoft; base.ApplyConfiguration() checks for 'binding' being null
+#pragma warning suppress 56506 //[....]; base.ApplyConfiguration() checks for 'binding' being null
             this.ReaderQuotas.ApplyConfiguration(binding.ReaderQuotas);
             binding.MaxBufferSize = this.MaxBufferSize;
         }
@@ -39,7 +39,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             MtomMessageEncodingElement source = (MtomMessageEncodingElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.MessageVersion = source.MessageVersion;
             this.WriteEncoding = source.WriteEncoding;
             this.MaxReadPoolSize = source.MaxReadPoolSize;
index d5cfd75588bda7a1bfffb2333169effc98d84c73..941b4601c4ff274ac0fe3de9fe0f0b267a21ffba 100644 (file)
@@ -22,7 +22,7 @@ namespace System.ServiceModel.Configuration
         {
             base.ApplyConfiguration(bindingElement);
             NamedPipeTransportBindingElement binding = (NamedPipeTransportBindingElement)bindingElement;
-#pragma warning suppress 56506 //Microsoft; base.ApplyConfiguration above checks for bindingElement being null
+#pragma warning suppress 56506 //[....]; base.ApplyConfiguration above checks for bindingElement being null
             this.ConnectionPoolSettings.ApplyConfiguration(binding.ConnectionPoolSettings);
             this.PipeSettings.ApplyConfiguration(binding.PipeSettings);
         }
@@ -30,7 +30,7 @@ namespace System.ServiceModel.Configuration
         protected internal override void InitializeFrom(BindingElement bindingElement)
         {
             base.InitializeFrom(bindingElement);
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             NamedPipeTransportBindingElement binding = (NamedPipeTransportBindingElement)bindingElement;
             this.ConnectionPoolSettings.InitializeFrom(binding.ConnectionPoolSettings);
             this.PipeSettings.InitializeFrom(binding.PipeSettings);
@@ -40,7 +40,7 @@ namespace System.ServiceModel.Configuration
         {
             base.CopyFrom(from);
             NamedPipeTransportElement source = (NamedPipeTransportElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.ConnectionPoolSettings.CopyFrom(source.ConnectionPoolSettings);
             this.PipeSettings.CopyFrom(source.PipeSettings);
         }
index c3d3c3692749d5090210ff4ae5750350becd9943..0c90b056aa4e89717b27cce966ff0666001c19d0 100644 (file)
@@ -47,7 +47,7 @@ namespace System.ServiceModel.Configuration
             PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
             if (propertyInfo[ConfigurationStrings.ChannelPoolSettings].ValueOrigin != PropertyValueOrigin.Default)
             {
-#pragma warning suppress 56506 // Microsoft, base.ApplyConfiguration() validates the argument
+#pragma warning suppress 56506 // [....], base.ApplyConfiguration() validates the argument
                 this.ChannelPoolSettings.ApplyConfiguration(oneWayBindingElement.ChannelPoolSettings);
             }
             oneWayBindingElement.MaxAcceptedChannels = this.MaxAcceptedChannels;
@@ -59,7 +59,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             OneWayElement source = (OneWayElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             PropertyInformationCollection propertyInfo = source.ElementInformation.Properties;
             if (propertyInfo[ConfigurationStrings.ChannelPoolSettings].ValueOrigin != PropertyValueOrigin.Default)
             {
index ddc638c792616546eff527a7f05feba844566e06..5b8d687f39f532fabac534baa7083d7af3ff496a 100644 (file)
@@ -68,7 +68,7 @@ namespace System.ServiceModel.Configuration
             binding.Port = this.Port;
             binding.MaxBufferPoolSize = this.MaxBufferPoolSize;
             binding.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
-#pragma warning suppress 56506 //Microsoft; base.ApplyConfiguration() checks for 'binding' being null
+#pragma warning suppress 56506 //[....]; base.ApplyConfiguration() checks for 'binding' being null
             this.Security.ApplyConfiguration(binding.Security);
         }
 
@@ -77,7 +77,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             PeerTransportElement source = (PeerTransportElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.ListenIPAddress = source.ListenIPAddress;
             this.Port = source.Port;
             this.MaxBufferPoolSize = source.MaxBufferPoolSize;
index bdfdf19f58ec90271b2b90d8af2a396b47405918..c8e310db5dcecd3574511059165e5b8dcc455892 100644 (file)
@@ -50,7 +50,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             PrivacyNoticeElement source = (PrivacyNoticeElement) from;
-    #pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+    #pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.Url = source.Url;
             this.Version = source.Version;
         }
index dff1f8fd22d0294aa87675747ba37e0252ca61b0..5ea78eddac7359b81068e81337c067661596959a 100644 (file)
@@ -32,7 +32,7 @@ namespace System.ServiceModel.Configuration
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
             string version = value as string;
-#pragma warning suppress 56507 // Microsoft, Really checking for null (meaning value was not a string) versus String.Empty
+#pragma warning suppress 56507 // [....], Really checking for null (meaning value was not a string) versus String.Empty
             if (version != null)
             {
                 switch (version)
index 78c194c194571734a8a3f19eea8ef07e3d225cba..5fa338c0cdfa411c600e26125d456d364335eccc 100644 (file)
@@ -104,7 +104,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             ReliableSessionElement source = (ReliableSessionElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.AcknowledgementInterval = source.AcknowledgementInterval;
             this.FlowControlEnabled = source.FlowControlEnabled;
             this.InactivityTimeout = source.InactivityTimeout;
index 04f10476125d546dae7ae78582ced03234ff00f0..f7d061da2966511cbe520eda1d2a2abdeae9e809 100644 (file)
@@ -23,7 +23,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             RemoveBehaviorElement source = (RemoveBehaviorElement) from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.Name = source.Name;
         }
 
index 6866807d7b63ccb1d357665656cb5711d734e18b..70c98b01678ba711abee7e6b319da836f68fc142 100644 (file)
@@ -37,7 +37,7 @@ namespace System.ServiceModel.Configuration
 
             SecurityElement source = (SecurityElement)from;
 
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             if (PropertyValueOrigin.Default != source.ElementInformation.Properties[ConfigurationStrings.SecureConversationBootstrap].ValueOrigin)
                 this.SecureConversationBootstrap.CopyFrom(source.SecureConversationBootstrap);
         }
index f27d8b8a471224cdba35e4707460e0c004b77ccb..98c71d0c3bbc27440de0123f72e2a3eeae195554 100644 (file)
@@ -173,7 +173,7 @@ namespace System.ServiceModel.Configuration
 
             SecurityBindingElement sbe = (SecurityBindingElement)bindingElement;
 
-#pragma warning disable 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning disable 56506 //[....]; base.CopyFrom() checks for 'from' being null
             if (PropertyValueOrigin.Default != this.ElementInformation.Properties[ConfigurationStrings.DefaultAlgorithmSuite].ValueOrigin)
                 sbe.DefaultAlgorithmSuite = this.DefaultAlgorithmSuite;
             if (PropertyValueOrigin.Default != this.ElementInformation.Properties[ConfigurationStrings.IncludeTimestamp].ValueOrigin)
index bea61241b88bae562322d303649ada302ac5461f..3871c52a5cb81738fd2f322b7ff7a6a5d8312c8c 100644 (file)
@@ -84,7 +84,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             ServiceAuthorizationElement source = (ServiceAuthorizationElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.PrincipalPermissionMode = source.PrincipalPermissionMode;
             this.RoleProviderName = source.RoleProviderName;
             this.ImpersonateCallerForAllOperations = source.ImpersonateCallerForAllOperations;
index feac091740faabdea73e2a0bdbc01bd29b341bf2..28a42f4bf363f4fe2ec9979716d6e1c67dfb3aeb 100644 (file)
@@ -37,7 +37,7 @@ namespace System.ServiceModel.Configuration
                 }
                 if (!typeof(System.ServiceModel.Description.IServiceBehavior).IsAssignableFrom(element.BehaviorType))
                 {
-#pragma warning disable 56506 //Microsoft; element.ElementInformation is guaranteed to be non-null(System.Configuration)
+#pragma warning disable 56506 //[....]; element.ElementInformation is guaranteed to be non-null(System.Configuration)
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidServiceBehaviorType,
                         element.ConfigurationElementName,
                         this.Name),
@@ -62,7 +62,7 @@ namespace System.ServiceModel.Configuration
                 }
                 if (!typeof(System.ServiceModel.Description.IServiceBehavior).IsAssignableFrom(element.BehaviorType))
                 {
-#pragma warning disable 56506 //Microsoft; element.ElementInformation is guaranteed to be non-null(System.Configuration)
+#pragma warning disable 56506 //[....]; element.ElementInformation is guaranteed to be non-null(System.Configuration)
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidServiceBehaviorType,
                         element.ConfigurationElementName,
                         this.Name),
index ae57ebb3ffdec42f46aaf123902d8ab1352e72c8..050bca034d17a2fa67f02bcd94e4440bb5f2f48b 100644 (file)
@@ -98,7 +98,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             ServiceCredentialsElement source = (ServiceCredentialsElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.ClientCertificate.Copy(source.ClientCertificate);
             this.ServiceCertificate.Copy(source.ServiceCertificate);
             this.UserNameAuthentication.Copy(source.UserNameAuthentication);
index c3e7c986f249cc50b7bf0f0e3ed3fc35b308407c..86a1000cbf86b4e6435731c72af1bdc0ec4a2b2c 100644 (file)
@@ -86,7 +86,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             ServiceDebugElement source = (ServiceDebugElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() check for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() check for 'from' being null
             this.HttpHelpPageEnabled = source.HttpHelpPageEnabled;
             this.HttpHelpPageUrl = source.HttpHelpPageUrl;
             this.HttpsHelpPageEnabled = source.HttpsHelpPageEnabled;
index f23ce762124aae42ed903bbdc3f0a5c8cc4c280f..236a9d88250115e17e485bd8e73013907bd2d1e6 100644 (file)
@@ -95,7 +95,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             ServiceMetadataPublishingElement source = (ServiceMetadataPublishingElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() check for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() check for 'from' being null
             this.HttpGetEnabled = source.HttpGetEnabled;
             this.HttpGetUrl = source.HttpGetUrl;
             this.HttpsGetEnabled = source.HttpsGetEnabled;
index 576cff6c0b19e41f53aa2312aaeeb208860a36a9..277cdad0330270ca7182e961c05a6ca40756dc24 100644 (file)
@@ -239,7 +239,7 @@ namespace System.ServiceModel.Configuration
                 }
                 else
                 {
-#pragma warning disable 56506 //Microsoft; Variable 'key' checked for null previously
+#pragma warning disable 56506 //[....]; Variable 'key' checked for null previously
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.ConfigKeysDoNotMatch,
                         this.GetElementKey(value).ToString(),
                         key.ToString()));
index 798ad08c8c9fddb1b4df43983935e08a84c2af4f..eba49b2e2edfc98bd32a5c7486b4b02565b8f4e4 100644 (file)
@@ -48,7 +48,7 @@ namespace System.ServiceModel.Configuration
 
                 if (!this.CollectionElementBaseType.IsAssignableFrom(extensionType))
                 {
-#pragma warning disable 56506 //Microsoft; Variable 'extensionType' checked for null previously
+#pragma warning disable 56506 //[....]; Variable 'extensionType' checked for null previously
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("extensionType",
                         SR.GetString(SR.ConfigInvalidExtensionType,
                         extensionType.ToString(),
@@ -326,8 +326,8 @@ namespace System.ServiceModel.Configuration
             }
             catch (ConfigurationErrorsException e)
             {
-                // Work-around for 
-
+                // Work-around for bug 219506@CSDMain: if the extension type cannot be loaded, we'll ignore 
+                // the exception when running in win8 app container and reading from machine.config.
                 if (System.ServiceModel.Channels.AppContainerInfo.IsRunningInAppContainer && evaluationContext.IsMachineLevel)
                 {
                     DiagnosticUtility.TraceHandledException(e, TraceEventType.Information);
index 112d210c209b21c8d70e73d74fe345b4574a60fa..c05708f7b3ee9079605a4b75276e6897b3d8f507 100644 (file)
@@ -74,7 +74,7 @@ namespace System.ServiceModel.Configuration
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("config");
             }
 
-#pragma warning suppress 56506 //Microsoft; config.SectionGroups can never be null (underlying configuration system guarantees)
+#pragma warning suppress 56506 //[....]; config.SectionGroups can never be null (underlying configuration system guarantees)
             return (ServiceModelSectionGroup)config.SectionGroups[ConfigurationStrings.SectionGroupName];
         }
 
index 5cbdf80e1fb5dcddab294abcf0c304ff29059bb5..a26244ce56dde091a515b49be9035deb705412a0 100644 (file)
@@ -52,7 +52,7 @@ namespace System.ServiceModel.Configuration
         {
             base.CopyFrom(from);
             ServiceSecurityAuditElement source = (ServiceSecurityAuditElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.AuditLogLocation = source.AuditLogLocation;
             this.SuppressAuditFailure = source.SuppressAuditFailure;
             this.ServiceAuthorizationAuditLevel = source.ServiceAuthorizationAuditLevel;
index b6df0f71a162fd468748049ed8e284097a478b81..11f81f42606b8b08f55ec9a73a5cd4a58e416c17 100644 (file)
@@ -44,7 +44,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             ServiceThrottlingElement source = (ServiceThrottlingElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.MaxConcurrentCalls = source.MaxConcurrentCalls;
             this.MaxConcurrentSessions = source.MaxConcurrentSessions;
             this.MaxConcurrentInstances = source.MaxConcurrentInstances;
index 573b1d9a966850338c712d4c8f3487845de917b2..9bd23149f745a5687c022c5dd6711224ae2e32c1 100644 (file)
@@ -29,7 +29,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             ServiceTimeoutsElement source = (ServiceTimeoutsElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.TransactionTimeout = source.TransactionTimeout;
         }
 
index 247bd119d7afe87ab81fb2f7fc36818836fe3ef3..025ebc7943218121542f6abe9d1ed283a0d4610a 100644 (file)
@@ -60,7 +60,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             SslStreamSecurityElement source = (SslStreamSecurityElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.RequireClientCertificate = source.RequireClientCertificate;
             this.SslProtocols = source.SslProtocols;
         }
index ed2e5bb7e995c937436d71eb3a8d4c107a4a368f..64932814a80fa1af4b49e183e1b78b768a113ef0 100644 (file)
@@ -44,7 +44,7 @@ namespace System.ServiceModel.Configuration
         {
             // This line needed because of the IBindingSection implementation
             StandardBindingCollectionElement<TStandardBinding, TBindingConfiguration> me = (StandardBindingCollectionElement<TStandardBinding, TBindingConfiguration>)this;
-#pragma warning suppress 56506 //Microsoft; me.Bindings can never be null (underlying configuration system guarantees)
+#pragma warning suppress 56506 //[....]; me.Bindings can never be null (underlying configuration system guarantees)
             return me.Bindings.ContainsKey(name);
         }
         protected internal override Binding GetDefault()
index 848b2d8991d9756d515a0ad7b4e1960326c6d1ee..51b14b08d3b8530d5f94992143222a981546fac1 100644 (file)
@@ -44,7 +44,7 @@ namespace System.ServiceModel.Configuration
         public override bool ContainsKey(string name)
         {
             StandardEndpointCollectionElement<TStandardEndpoint, TEndpointConfiguration> me = (StandardEndpointCollectionElement<TStandardEndpoint, TEndpointConfiguration>)this;
-#pragma warning suppress 56506 //Microsoft; me.Endpoints can never be null (underlying configuration system guarantees)
+#pragma warning suppress 56506 //[....]; me.Endpoints can never be null (underlying configuration system guarantees)
             return me.Endpoints.ContainsKey(name);
         }
 
index bed3878e51b265690da15de0dbf5e5ce2bd8e90e..e792c9cabc742d212112c7e80fb6dd409305cb02 100644 (file)
@@ -19,7 +19,7 @@ namespace System.ServiceModel.Configuration
         public override void ApplyConfiguration(BindingElement bindingElement)
         {
             base.ApplyConfiguration(bindingElement);
-#pragma warning suppress 56506 // Microsoft, base.ApplyConfiguration() validates the argument
+#pragma warning suppress 56506 // [....], base.ApplyConfiguration() validates the argument
             TcpTransportBindingElement binding = (TcpTransportBindingElement)bindingElement;
             PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
             if (this.ListenBacklog != TcpTransportDefaults.ListenBacklogConst)
@@ -28,7 +28,7 @@ namespace System.ServiceModel.Configuration
             }
             binding.PortSharingEnabled = this.PortSharingEnabled;
             binding.TeredoEnabled = this.TeredoEnabled;
-#pragma warning suppress 56506 // Microsoft, base.ApplyConfiguration() validates the argument
+#pragma warning suppress 56506 // [....], base.ApplyConfiguration() validates the argument
             this.ConnectionPoolSettings.ApplyConfiguration(binding.ConnectionPoolSettings);
             binding.ExtendedProtectionPolicy = ChannelBindingUtility.BuildPolicy(this.ExtendedProtectionPolicy);
         }
@@ -43,7 +43,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             TcpTransportElement source = (TcpTransportElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.ListenBacklog = source.ListenBacklog;
             this.PortSharingEnabled = source.PortSharingEnabled;
             this.TeredoEnabled = source.TeredoEnabled;
@@ -59,7 +59,7 @@ namespace System.ServiceModel.Configuration
         protected internal override void InitializeFrom(BindingElement bindingElement)
         {
             base.InitializeFrom(bindingElement);
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             TcpTransportBindingElement binding = (TcpTransportBindingElement)bindingElement;
             if (binding.IsListenBacklogSet)
             {
index ec04b51b2cb38e074ae797929bef3f24833b1fae..bf649723569fbc7f44a0221d21963378f7d21612 100644 (file)
@@ -24,7 +24,7 @@ namespace System.ServiceModel.Configuration
             binding.WriteEncoding = this.WriteEncoding;
             binding.MaxReadPoolSize = this.MaxReadPoolSize;
             binding.MaxWritePoolSize = this.MaxWritePoolSize;
-#pragma warning suppress 56506 //Microsoft; base.ApplyConfiguration() checks for 'binding' being null
+#pragma warning suppress 56506 //[....]; base.ApplyConfiguration() checks for 'binding' being null
             this.ReaderQuotas.ApplyConfiguration(binding.ReaderQuotas);
         }
 
@@ -38,7 +38,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             TextMessageEncodingElement source = (TextMessageEncodingElement)from;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.MessageVersion = source.MessageVersion;
             this.WriteEncoding = source.WriteEncoding;
             this.MaxReadPoolSize = source.MaxReadPoolSize;
index 176571cd0e2f80eb0c35c4d7a39e100dc3ab0386..b74805626e17ee953f4fc900875539735155d7c6 100644 (file)
@@ -22,7 +22,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             TransactedBatchingElement source = from as TransactedBatchingElement;
-#pragma warning suppress 56506 //Microsoft; base.CopyFrom() checks for 'from' being null
+#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
             this.MaxBatchSize = source.MaxBatchSize;
         }
 
index de6601252f0f301978ad493f47ceef0c1ec42480..652f729b0cc91f1e233cc518cbd497ec0e63e802 100644 (file)
@@ -53,7 +53,7 @@ namespace System.ServiceModel.Configuration
         {
             base.CopyFrom(from);            
             TransactionFlowElement source = (TransactionFlowElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument            
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument            
             this.TransactionProtocol = source.TransactionProtocol;
         }
 
index 12c1308b56b28022b569b6f018c9f4418e66c388..9bba5ca4cce3e832429c722b4fac7397e109723e 100644 (file)
@@ -32,7 +32,7 @@ namespace System.ServiceModel.Configuration
         public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
         {
             string protocol = value as string;
-#pragma warning suppress 56507 // Microsoft, Really checking for null (meaning value was not a string) versus String.Empty
+#pragma warning suppress 56507 // [....], Really checking for null (meaning value was not a string) versus String.Empty
             if (protocol != null)
             {
                 switch (protocol)
index 18d9aea87e45529ce00dc81aa3c83d4422db6502..c4599271949129c195339d874a3fb2c1b5e7c98e 100644 (file)
@@ -27,7 +27,7 @@ using System.ServiceModel.Channels;
             base.CopyFrom(from);
 
             TransportElement source = (TransportElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.ManualAddressing = source.ManualAddressing;
             this.MaxBufferPoolSize = source.MaxBufferPoolSize;
             this.MaxReceivedMessageSize = source.MaxReceivedMessageSize;
index e31633cd846a3236bf834bd38534b48c9f290326..f82b3f7c2d54e006ad81d520eb87deee8fd2d57a 100644 (file)
@@ -52,7 +52,7 @@ namespace System.ServiceModel.Configuration
             base.CopyFrom(from);
 
             WindowsStreamSecurityElement source = (WindowsStreamSecurityElement)from;
-#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
+#pragma warning suppress 56506 // [....], base.CopyFrom() validates the argument
             this.ProtectionLevel = source.ProtectionLevel;
         }
 
index 5712afbf7bad20d83f766653f9fbe00cd30795b7..c7362683b425e62be80ea90ef2b46c7109faa3ae 100644 (file)
@@ -61,7 +61,7 @@ namespace System.ServiceModel.Description
         static string getDefaultValueForInitializationMethodName = "GetDefaultValueForInitialization";
 
         // IMPORTANT: this table tracks the set of .ctors in ClientBase and DuplexClientBase. 
-        // This table must be kept in sync
+        // This table must be kept in [....]
         // for DuplexClientBase, the initial InstanceContext param is assumed; ctor overloads must match between ClientBase and DuplexClientBase
         static Type[][] ClientCtorParamTypes = new Type[][]
             {
@@ -107,7 +107,7 @@ namespace System.ServiceModel.Description
 
 #if DEBUG
         static BindingFlags ctorBindingFlags = BindingFlags.Instance | BindingFlags.NonPublic;
-        static string DebugCheckTable_errorString = "Client code generation table out of sync with ClientBase and DuplexClientBase ctors. Please investigate.";
+        static string DebugCheckTable_errorString = "Client code generation table out of [....] with ClientBase and DuplexClientBase ctors. Please investigate.";
 
         // check the table against what we would get from reflection
         static void DebugCheckTable()
index c111c900c36be1ce9b7d67e4a913c5ed47ce4a4c..2020a04443f2d41b3ca334a52535afccd0dcb7f0 100644 (file)
@@ -40,7 +40,7 @@ namespace System.ServiceModel.Description
 
             channelElement = new ChannelEndpointElement(endpoint.Address, typeName);
 
-            // Microsoft: review: Use decoded form to preserve the user-given friendly name, however, beacuse our Encoding algorithm
+            // [....]: review: Use decoded form to preserve the user-given friendly name, however, beacuse our Encoding algorithm
             // does not touch ASCII names, a name that looks like encoded name will not roundtrip(Example: "_x002C_" will turned into ",")
             channelElement.Name = NamingHelper.GetUniqueName(NamingHelper.CodeName(endpoint.Name), this.CheckIfChannelNameInUse, null);
 
@@ -64,7 +64,7 @@ namespace System.ServiceModel.Description
             BindingDictionaryValue bindingDV;
             if (!bindingTable.TryGetValue(binding, out bindingDV))
             {
-                // Microsoft: review: Use decoded form to preserve the user-given friendly name, however, beacuse our Encoding algorithm
+                // [....]: review: Use decoded form to preserve the user-given friendly name, however, beacuse our Encoding algorithm
                 // does not touch ASCII names, a name that looks like encoded name will not roundtrip(Example: "_x002C_" will turned into ",")
                 string bindingName = NamingHelper.GetUniqueName(NamingHelper.CodeName(binding.Name), this.CheckIfBindingNameInUse, null);
                 string bindingSectionName;
index 711970a2a0ccb53cf27cb13a3f9796e8b1e14a48..5d9a366651e561d18dc4da9fa76a1b87659954c8 100644 (file)
@@ -13,7 +13,7 @@ namespace System.ServiceModel.Description
 
     public abstract partial class MetadataImporter
     {
-        //Consider, Microsoft: make this public
+        //Consider, [....]: make this public
         internal static IEnumerable<PolicyConversionContext> GetPolicyConversionContextEnumerator(ServiceEndpoint endpoint, PolicyAlternatives policyAlternatives)
         {
             return ImportedPolicyConversionContext.GetPolicyConversionContextEnumerator(endpoint, policyAlternatives, MetadataImporterQuotas.Defaults);
index 2b126c76a44a49b8e30b7bb29693addbcb656a3f..dbef91c1275e3c975dd6f80f03a2cf7e4f640507 100644 (file)
@@ -511,7 +511,7 @@ namespace System.ServiceModel.Description
                 string operationName = contractContext.GetOperation(operation).Name;
 
                 string callbackString = operation.IsServerInitiated() ? "Callback" : string.Empty;
-                // Microsoft: composing names have potential problem of generating name that looks like an encoded name, consider avoiding '_'
+                // [....]: composing names have potential problem of generating name that looks like an encoded name, consider avoiding '_'
                 if (messageDescription.Direction == MessageDirection.Input)
                     messageNameBase = string.Format(System.Globalization.CultureInfo.InvariantCulture,
                                         "{0}_{1}_Input{2}Message", portTypeName, operationName, callbackString);
@@ -539,7 +539,7 @@ namespace System.ServiceModel.Description
         {
             string portTypeName = contractContext.WsdlPortType.Name;
             string operationName = contractContext.GetOperation(operation).Name;
-            // Microsoft: composing names have potential problem of generating name that looks like an encoded name, consider avoiding '_'
+            // [....]: composing names have potential problem of generating name that looks like an encoded name, consider avoiding '_'
             string faultNameBase = String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}_{1}_{2}_FaultMessage", portTypeName, operationName, faultName);
 
             WsdlNS.ServiceDescription wsdl = contractContext.WsdlPortType.ServiceDescription;
index 8c33e75db7274345f412c1b9ba02e008f1a3111e..87e7f37dacea5879ba4ef0190e22e40ecf6765e1 100644 (file)
@@ -92,7 +92,7 @@ namespace System.ServiceModel.Description
             if (!IsPolicyElement(policy))
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("policy",
-#pragma warning suppress 56506 // Microsoft, policy cannot be null at this point since it has been validated above.
+#pragma warning suppress 56506 // [....], policy cannot be null at this point since it has been validated above.
  SR.GetString(SR.SFxBadMetadataMustBePolicy, MetadataStrings.WSPolicy.NamespaceUri, MetadataStrings.WSPolicy.Elements.Policy, policy.NamespaceURI, policy.LocalName));
             }
 
index 9b60b7643192643b5f72d5b49427e8e1a5bd1652..469c6d6be671960d5bdebcee3c73195a636f522e 100644 (file)
@@ -21,7 +21,7 @@ namespace System.ServiceModel.Description
         
         internal delegate void PolicyWarningHandler(XmlElement contextAssertion, string warningMessage);
         
-        // Consider, Microsoft, make this public?
+        // Consider, [....], make this public?
         internal event PolicyWarningHandler PolicyWarningOccured;
 
         internal IEnumerable<IEnumerable<XmlElement>> NormalizePolicy(IEnumerable<XmlElement> policyAssertions)
@@ -92,7 +92,7 @@ namespace System.ServiceModel.Description
                         string warningMsg = SR.GetString(SR.UnrecognizedPolicyElementInNamespace, node.Name, node.NamespaceURI);
                         metadataImporter.PolicyWarningOccured.Invoke(contextAssertion, warningMsg);
                         break;
-                    //consider Microsoft, add more error handling here. default?
+                    //consider [....], add more error handling here. default?
                 }
                 return nodes;
             }
@@ -365,7 +365,7 @@ namespace System.ServiceModel.Description
                 {
                     get
                     {
-#pragma warning suppress 56503 // Microsoft, IEnumerator guidelines, Current throws exception before calling MoveNext
+#pragma warning suppress 56503 // [....], IEnumerator guidelines, Current throws exception before calling MoveNext
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.NoValue0)));
                     }
                 }
index d8c3dca4e8b0b9f1821d530e602a2c304695b3db..cd369d24220b3cac82fd9703434cd57fe27ae36d 100644 (file)
@@ -105,7 +105,7 @@ namespace System.ServiceModel.Description
                 }
                 else if (binding != null)
                 {
-                    // Microsoft: composing names have potential problem of generating name that looks like an encoded name, consider avoiding '_'
+                    // [....]: composing names have potential problem of generating name that looks like an encoded name, consider avoiding '_'
                     return String.Format(CultureInfo.InvariantCulture, "{0}_{1}", new XmlName(Binding.Name).EncodedName, Contract.Name);
                 }
                 else
index d18c4927e4dcb4efc76f9900e81e7abb399e8633..61868f6c8697e5a47ce11b6f493218f1317d93f2 100644 (file)
@@ -186,7 +186,7 @@ namespace System.ServiceModel.Description
         static class SoapConverter
         {
 
-            // Microsoft, this could be simplified if we used generics.
+            // [....], this could be simplified if we used generics.
             internal static void ConvertExtensions(WsdlNS.ServiceDescriptionFormatExtensionCollection extensions, EnvelopeVersion version, ConvertExtension conversionMethod)
             {
                 bool foundOne = false;
index 2d1827ef8a1f1da2c5db4facd0e4727655df22de..70f610065152e7918d980160cdf2185db8d7e5f5 100644 (file)
@@ -15,7 +15,7 @@ namespace System.ServiceModel.Description
             {
                 if (isForService)
                 {
-                    // no other method (sync, async) is allowed to co-exist with a task-based method on the server-side.
+                    // no other method ([....], async) is allowed to co-exist with a task-based method on the server-side.
                     EnsureNoSyncMethod(operationDescription);
                     EnsureNoBeginEndMethod(operationDescription);
                 }
index 45d56cc0518a7e655be69a2f02bb621e31249d3d..105821f4e781b5416a204f35dbe52b5ffb907524 100644 (file)
@@ -771,13 +771,13 @@ namespace System.ServiceModel.Description
             return defaultFormatAttribute;
         }
 
-        //Sync and Async should follow the rules:
+        //[....] and Async should follow the rules:
         //    1. Parameter match
         //    2. Async cannot have behaviors (verification happens later in ProcessOpMethod - behaviors haven't yet been loaded here)
         //    3. Async cannot have known types
         //    4. Async cannot have known faults
-        //    5. Sync and Async have to match on OneWay status
-        //    6. Sync and Async have to match Action and ReplyAction
+        //    5. [....] and Async have to match on OneWay status
+        //    6. [....] and Async have to match Action and ReplyAction
         void VerifyConsistency(OperationConsistencyVerifier verifier)
         {
             verifier.VerifyParameterLength();
@@ -860,7 +860,7 @@ namespace System.ServiceModel.Description
                         existingOp.TaskTResult = newOp.TaskTResult;
                         if (existingOp.SyncMethod != null)
                         {
-                            // Task vs. Sync 
+                            // Task vs. [....] 
                             VerifyConsistency(new SyncTaskOperationConsistencyVerifier(existingOp, newOp));
                         }
                         else
@@ -876,7 +876,7 @@ namespace System.ServiceModel.Description
                         existingOp.EndMethod = newOp.EndMethod;
                         if (existingOp.SyncMethod != null)
                         {
-                            // Async vs. Sync
+                            // Async vs. [....]
                             VerifyConsistency(new SyncAsyncOperationConsistencyVerifier(existingOp, newOp));
                         }
                         else
@@ -894,12 +894,12 @@ namespace System.ServiceModel.Description
                         newOp.TaskTResult = existingOp.TaskTResult;
                         if (existingOp.TaskMethod != null)
                         {
-                            // Sync vs. Task
+                            // [....] vs. Task
                             VerifyConsistency(new SyncTaskOperationConsistencyVerifier(newOp, existingOp));
                         }
                         else
                         {
-                            // Sync vs. Async
+                            // [....] vs. Async
                             VerifyConsistency(new SyncAsyncOperationConsistencyVerifier(newOp, existingOp));
                         }
                         return newOp;
index bb0dc9be896d9a19fc3b88ec8e634f07c6f4f9a6..656fc85a7909f1152cf48285bad192d056d35c93 100644 (file)
@@ -991,7 +991,7 @@ namespace System.ServiceModel.Description
                     int i = 0;
                     prefix = prefixBase + i.ToString(CultureInfo.InvariantCulture);
 
-                    //Microsoft, consider do we need to check at higher scopes as well?
+                    //[....], consider do we need to check at higher scopes as well?
                     while (PrefixExists(scopes[0].Namespaces.ToArray(), prefix))
                         prefix = prefixBase + (++i).ToString(CultureInfo.InvariantCulture);
                 }
index 026247d854cb22b05607add02533af39a0731f13..cf5abf7fb7abe2461729cc562ead21bd3e49073a 100644 (file)
@@ -922,7 +922,7 @@ namespace System.ServiceModel.Description
                 // This method checks if there is a match based on Names, between the specified OperationBinding and Operation.
                 // When searching for the Operation associated with an OperationBinding, we need to return an exact match if possible,
                 // or a partial match otherwise (when some of the Names are null).
-                // 
+                // Bug 16833 @ CSDMain requires that partial matches are allowed, while the TFS bug 477838 requires that exact matches are done (when possible).
                 if (wsdlOperationBinding.Name != wsdlOperation.Name)
                 {
                     return MatchResult.None;
@@ -1189,7 +1189,7 @@ namespace System.ServiceModel.Description
 
             internal static XmlQualifiedName GetBindingName(WsdlNS.Port wsdlPort)
             {
-                // Microsoft: composing names have potential problem of generating name that looks like an encoded name, consider avoiding '_'
+                // [....]: composing names have potential problem of generating name that looks like an encoded name, consider avoiding '_'
                 XmlName xmlName = new XmlName(string.Format(CultureInfo.InvariantCulture, "{0}_{1}", wsdlPort.Service.Name, wsdlPort.Name), true /*isEncoded*/);
                 return new XmlQualifiedName(xmlName.EncodedName, wsdlPort.Service.ServiceDescription.TargetNamespace);
             }
@@ -1233,7 +1233,7 @@ namespace System.ServiceModel.Description
                 }
                 else
                 {
-                    // Microsoft: why this is an Assert, and not an exception?
+                    // [....]: why this is an Assert, and not an exception?
                     Fx.Assert("Unsupported WSDL OM (More than 2 OperationMessages encountered in an Operation or WsdlOM is invalid)");
                 }
                 // names the come from service description documents have to be valid NCNames; XmlName.ctor will validate.
@@ -1920,7 +1920,7 @@ namespace System.ServiceModel.Description
         static Exception CreateExtensionException(IWsdlImportExtension importer, Exception e)
         {
             string errorMessage = SR.GetString(SR.WsdlExtensionImportError, importer.GetType().FullName, e.Message);
-            //consider Microsoft, allow internal exceptions to throw WsdlImportException and handle it in some special way?
+            //consider [....], allow internal exceptions to throw WsdlImportException and handle it in some special way?
             return new InvalidOperationException(errorMessage, e);
         }
 
index 3b84da0fe159945ed1c72d538a2f1e2cf85af95e..10237200ca9b33ca6e2747c63fe1dbfd5a558f03 100644 (file)
@@ -489,7 +489,7 @@ namespace System.ServiceModel.Diagnostics
         {
             if ((source & MessageLoggingSource.Malformed) != 0)
             {
-                if (!TD.MessageLogWarning(data.ToString()))
+                if (TD.MessageLogWarningIsEnabled() && !TD.MessageLogWarning(data.ToString()))
                 {
                     if (TD.MessageLogEventSizeExceededIsEnabled())
                     {
@@ -499,7 +499,7 @@ namespace System.ServiceModel.Diagnostics
             }
             else
             {
-                if (!TD.MessageLogInfo(data.ToString()))
+                if (TD.MessageLogInfoIsEnabled() && !TD.MessageLogInfo(data.ToString()))
                 {
                     if (TD.MessageLogEventSizeExceededIsEnabled())
                     {
index bfe5aa06792c128b9b79b23ba2c9be70960094ce..3043e5afe7f46043e0e7b01f4c7ff2b2390abb3e 100644 (file)
@@ -115,9 +115,9 @@ namespace System.ServiceModel.Diagnostics
 
         // A CounterSetInstance is not disposed immediately when a service, endpoint or operation perf counter is disposed. Because messages 
         // can be processed while a ServiceHost is being closed, and such messages can try to update perf counters data, resulting in AVs or 
-        // corruptions (see 
-
-
+        // corruptions (see bug 249132 @ CSDMain). So instead of disposing a CounterSetInstance, we hold a WeakReference to it, until either 
+        // GC reclaims it or a new service/endpoint/operation perf counter is started with the same name (and re-uses the CounterSetInstance).
+        // The CounterSetInstance finalizer will free up the perf counters memory, so we don't have a leak.
         protected class CounterSetInstanceCache
         {
             // instance name -> WeakReference of CounterSetInstance
index c51655adf8798856eb00a8e18a750632df0b1b91..17d2b24eaf35361fa7d84c0e1b2e0299b9ae38b9 100644 (file)
@@ -554,6 +554,24 @@ namespace System.ServiceModel.Diagnostics
             return retval;
         }
 
+
+        internal static ServiceModelActivity ExtractActivity(RequestContext request)
+        {
+            try
+            {
+                return TraceUtility.ExtractActivity(request.RequestMessage);
+            }
+            catch (Exception e)
+            {
+                if (Fx.IsFatal(e))
+                {
+                    throw;
+                }
+            }
+
+            return null;
+        }
+
         internal static Guid ExtractActivityId(Message message)
         {
             if (TraceUtility.MessageFlowTracingOnly)
index 9f4d8c9c0bcf787fb433b76816736539bf9b72d6..0891524430033d6173e820d5cd919bf9f28ef8b9 100644 (file)
@@ -111,7 +111,7 @@ namespace System.ServiceModel.Dispatcher
 
             this.filters.Add(filter, data);
             List<MessageFilter> filters;
-#pragma warning suppress 56506 // Microsoft, Actions will never be null
+#pragma warning suppress 56506 // [....], Actions will never be null
             if (filter.Actions.Count == 0)
             {
                 this.always.Add(filter);
@@ -426,7 +426,7 @@ namespace System.ServiceModel.Dispatcher
 
             if (this.filters.Remove(filter))
             {
-#pragma warning suppress 56506 // Microsoft, ActionMessageFilter.Actions can never be null
+#pragma warning suppress 56506 // [....], ActionMessageFilter.Actions can never be null
                 if (filter.Actions.Count == 0)
                 {
                     this.always.Remove(filter);
@@ -436,9 +436,9 @@ namespace System.ServiceModel.Dispatcher
                     List<MessageFilter> filters;
                     for (int i = 0; i < filter.Actions.Count; ++i)
                     {
-#pragma warning suppress 56506 // Microsoft, PreSharp generates a false error here
+#pragma warning suppress 56506 // [....], PreSharp generates a false error here
                         filters = this.actions[filter.Actions[i]];
-#pragma warning suppress 56506 // Microsoft, filters can never be null
+#pragma warning suppress 56506 // [....], filters can never be null
                         if (filters.Count == 1)
                         {
                             this.actions.Remove(filter.Actions[i]);
index 317a6f9a56bd1a23856147b5e7093a8d9ac2e25c..d4c7285a865260c05f9e199e886ed865c06b7f73 100644 (file)
@@ -5,6 +5,7 @@
 namespace System.ServiceModel.Dispatcher
 {
     using System;
+    using System.Diagnostics;
     using System.Globalization;
     using System.Runtime;
     using System.Runtime.CompilerServices;
@@ -769,7 +770,7 @@ namespace System.ServiceModel.Dispatcher
 
         bool HandleError(Exception e, ref ErrorHandlerFaultInfo faultInfo)
         {
-            if (!(e != null))
+            if (e == null)
             {
                 Fx.Assert(SR.GetString(SR.GetString(SR.SFxNonExceptionThrown)));
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.GetString(SR.SFxNonExceptionThrown))));
@@ -944,7 +945,8 @@ namespace System.ServiceModel.Dispatcher
                 return false;
             }
 
-            ServiceModelActivity activity = DiagnosticUtility.ShouldUseActivity ? TraceUtility.ExtractActivity(request.RequestMessage) : null;
+            ServiceModelActivity activity = DiagnosticUtility.ShouldUseActivity ? TraceUtility.ExtractActivity(request) : null;
+
             using (ServiceModelActivity.BoundOperation(activity))
             {
                 if (this.HandleRequestAsReply(request))
@@ -1440,7 +1442,7 @@ namespace System.ServiceModel.Dispatcher
         {
             if (this.isConcurrent)
             {
-                this.isPumpAcquired = 0;
+                Interlocked.Exchange(ref this.isPumpAcquired, 0);
             }
         }
 
@@ -1793,8 +1795,6 @@ namespace System.ServiceModel.Dispatcher
                 }
                 this.requestInfo.ChannelHandlerOwnsInstanceContextThrottle = (this.requestInfo.ExistingInstanceContext == null);
 
-
-
                 if (this.DispatchAndReleasePump(request, false, null))
                 {
                     this.EnsurePump();
@@ -1802,9 +1802,42 @@ namespace System.ServiceModel.Dispatcher
             }
         }
 
+        bool TryRetrievingInstanceContext(RequestContext request)
+        {
+            try
+            {
+                return TryRetrievingInstanceContextCore(request);
+            }
+            catch (Exception ex)
+            {
+                if (Fx.IsFatal(ex))
+                {
+                    throw;
+                }
+
+                DiagnosticUtility.TraceHandledException(ex, TraceEventType.Error);
+
+                try
+                {
+                    request.Close();
+                }
+                catch (Exception e)
+                {
+                    if (Fx.IsFatal(e))
+                    {
+                        throw;
+                    }
+
+                    request.Abort();
+                }
+
+                return false;
+            }
+        }
+
         //Return: False denotes failure, Caller should discard the request.
         //      : True denotes operation is sucessful.
-        bool TryRetrievingInstanceContext(RequestContext request)
+        bool TryRetrievingInstanceContextCore(RequestContext request)
         {
             bool releasePump = true;
             try
@@ -1870,6 +1903,7 @@ namespace System.ServiceModel.Dispatcher
                 }
 
                 this.HandleError(e, request, channel);
+                
                 return false;
             }
             finally
@@ -1949,10 +1983,7 @@ namespace System.ServiceModel.Dispatcher
         {
             if (this.isConcurrent)
             {
-                if (this.isPumpAcquired != 0 || Interlocked.CompareExchange(ref this.isPumpAcquired, 1, 0) != 0)
-                {
-                    return false;
-                }
+                return Interlocked.CompareExchange(ref this.isPumpAcquired, 1, 0) == 0;
             }
 
             return true;
index bad9a746f7bb149bef9c75d545b5e89ebe9117cb..8a9955bd59907d64945892224bf7a1ce90b519a1 100644 (file)
@@ -537,7 +537,7 @@ namespace System.ServiceModel.Dispatcher
             }
         }
 
-        // ASSUMPTION: (Microsoft) caller holds lock (this.mutex)
+        // ASSUMPTION: ([....]) caller holds lock (this.mutex)
         void RequestStarting(Message message, IDuplexRequest request)
         {
             if (request != null)
@@ -552,7 +552,7 @@ namespace System.ServiceModel.Dispatcher
 
         }
 
-        // ASSUMPTION: (Microsoft) caller holds lock (this.mutex)
+        // ASSUMPTION: ([....]) caller holds lock (this.mutex)
         void RequestCompleting(IDuplexRequest request)
         {
             this.pending--;
@@ -1473,7 +1473,7 @@ namespace System.ServiceModel.Dispatcher
 
             public void EndClose(IAsyncResult result)
             {
-                // don't need to lock here since BeginClose is the sync-point
+                // don't need to lock here since BeginClose is the [....]-point
                 if (this.closeState.TryUserClose())
                 {
                     this.innerChannel.EndClose(result);
index 049a1b78495330731aabb86d226f772ee7bc0c33..c61e56fb9477001b0a747f6fc173c372e912f855 100644 (file)
@@ -92,7 +92,7 @@ namespace System.ServiceModel.Dispatcher
             }
 
             // To
-#pragma warning suppress 56506 // Microsoft, Message.Headers can never be null
+#pragma warning suppress 56506 // [....], Message.Headers can never be null
             Uri to = message.Headers.To;
             Uri actingAs = this.address.Uri;
 
index 7f5e509b82b28247923011b76c2740d2e2091194..b3d707904c133b98580cf03ddaa1d4036996495b 100644 (file)
@@ -153,7 +153,7 @@ namespace System.ServiceModel.Dispatcher
             this.candidates.Add(filter, can);
 
             CandidateSet cset;
-#pragma warning suppress 56506 // Microsoft, EndpointAddressMessageFilter.Address can never be null
+#pragma warning suppress 56506 // [....], EndpointAddressMessageFilter.Address can never be null
             Uri soapToAddress = filter.Address.Uri;
             if (filter.IncludeHostNameInComparison)
             {
@@ -181,7 +181,7 @@ namespace System.ServiceModel.Dispatcher
             // Update the QName ref count
             QName qname;
             int cnt;
-#pragma warning suppress 56506 // Microsoft, EndpointAddressMessageFilter.Address can never be null
+#pragma warning suppress 56506 // [....], EndpointAddressMessageFilter.Address can never be null
             for (int i = 0; i < address.Headers.Count; ++i)
             {
                 AddressHeader parameter = address.Headers[i];
@@ -719,7 +719,7 @@ namespace System.ServiceModel.Dispatcher
             }
 
             Candidate can = this.candidates[filter];
-#pragma warning suppress 56506 // Microsoft, EndpointAddressMessageFilter.Address can never be null
+#pragma warning suppress 56506 // [....], EndpointAddressMessageFilter.Address can never be null
             Uri soapToAddress = filter.Address.Uri;
 
             CandidateSet cset = null;
@@ -761,7 +761,7 @@ namespace System.ServiceModel.Dispatcher
         {
             // Adjust QName counts
             QName qname;
-#pragma warning suppress 56506 // Microsoft, EndpointAddress.Headers can never be null
+#pragma warning suppress 56506 // [....], EndpointAddress.Headers can never be null
             for (int i = 0; i < address.Headers.Count; ++i)
             {
                 AddressHeader parameter = address.Headers[i];
index 853a5f7386b60a3debb99ffe00eafdc674a66346..87f9088a8add469f1b679fd057ff1f0e23fbb778 100644 (file)
@@ -56,9 +56,9 @@ namespace System.ServiceModel.Dispatcher
         {
             if ((this.dispatcher == null) || !this.dispatcher.HandleError(e))
             {
-                // We only stop if the listener faults.  It is a 
-
-
+                // We only stop if the listener faults.  It is a bug
+                // if the listener is in an invalid state and does not
+                // fault.  So there are no cases today where this aborts.
             }
         }
 
index 60d24111d6ad0c2fb05fec482579979f88c8651e..caf32a6274a533e6989b3dee4460c5100dc70618 100644 (file)
@@ -1144,7 +1144,7 @@ namespace System.ServiceModel.Dispatcher
                 {
                     if (!rpc.Operation.IsSynchronous)
                     {
-                        // If async call completes in sync, it tells us through the gate below
+                        // If async call completes in [....], it tells us through the gate below
                         rpc.PrepareInvokeContinueGate();
                     }
 
index b27cc867c805109a056d3f1d32f4b73fb0be8027..9a7e2012f19be876d4882e438ef216aef0366f97 100644 (file)
@@ -50,7 +50,7 @@ namespace System.ServiceModel.Dispatcher
         {
             get
             {
-#pragma warning suppress 56503 // Microsoft, the property is really not implemented, cannot lie, API not public
+#pragma warning suppress 56503 // [....], the property is really not implemented, cannot lie, API not public
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 
             }
         }
index ebe6801b630164ae089b5aa099dd59ac22b13c3c..3f1dd3be148f9bd47d07a3a399aff74b07a5177d 100644 (file)
@@ -153,7 +153,7 @@ namespace System.ServiceModel.Dispatcher
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("filter", SR.GetString(SR.FilterExists));
             }
 
-#pragma warning suppress 56506 // Microsoft, PreSharp generates a false warning here
+#pragma warning suppress 56506 // [....], PreSharp generates a false warning here
             Type filterType = filter.GetType();
             Type tableType = null;
             IMessageFilterTable<TFilterData> table = null;
index 2bcb3ceaede7f0d18de8633ace19ff4b755fb449..2bfeafdac3cd95f500a6008044fa679ebd3583c4 100644 (file)
@@ -41,7 +41,7 @@ namespace System.ServiceModel.Dispatcher
             {
                 if (description.BeginMethod != null)
                 {
-                    // both sync and async methods are present on the contract, check the preference
+                    // both [....] and async methods are present on the contract, check the preference
                     OperationBehaviorAttribute operationBehaviorAttribue = description.Behaviors.Find<OperationBehaviorAttribute>();
                     if ((operationBehaviorAttribue != null) && operationBehaviorAttribue.PreferAsyncInvocation)
                     {
@@ -54,7 +54,7 @@ namespace System.ServiceModel.Dispatcher
                 }
                 else
                 {
-                    // only sync method is present on the contract
+                    // only [....] method is present on the contract
                     dispatch.Invoker = new SyncMethodInvoker(description.SyncMethod);
                 }
             }
index e4a25a96a6a0a9fb76dfc22647a18bfd2f3a0791..4c94fe775fe787b5d95d5668e8ebc0a9d49554c3 100644 (file)
@@ -43,7 +43,7 @@ namespace System.ServiceModel.Dispatcher
         {
             get
             {
-#pragma warning suppress 56503 // Microsoft, the property is really not implemented, cannot lie, API not public
+#pragma warning suppress 56503 // [....], the property is really not implemented, cannot lie, API not public
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 
             }
         }
index 91f21729a2310f50364e28fe5431f84fafc9e490..53855e3593339b7a435fd7409ce86262eff29bdb 100644 (file)
@@ -85,7 +85,7 @@ namespace System.ServiceModel.Dispatcher
             }
 
             // To
-#pragma warning suppress 56506 // Microsoft, Message.Headers can never be null
+#pragma warning suppress 56506 // [....], Message.Headers can never be null
             Uri to = message.Headers.To;
 
             object o;
index 5b8d787e79fbc91de99d1455f546635ac22555d4..d360c4ba441850dd1a80065dfeb717522fd79c3b 100644 (file)
@@ -59,7 +59,7 @@ namespace System.ServiceModel.Dispatcher
             Candidate can = new Candidate(filter, data, mask, filter.HeaderLookup);
             this.candidates.Add(filter, can);
 
-#pragma warning suppress 56506 // Microsoft, PrefixEndpointAddressMessageFilter.Address can never be null
+#pragma warning suppress 56506 // [....], PrefixEndpointAddressMessageFilter.Address can never be null
             Uri soapToAddress = filter.Address.Uri;
 
             CandidateSet cset;
@@ -134,7 +134,7 @@ namespace System.ServiceModel.Dispatcher
             }
 
             Candidate can = this.candidates[filter];
-#pragma warning suppress 56506 // Microsoft, PrefixEndpointAddressMessageFilter.Address can never be null
+#pragma warning suppress 56506 // [....], PrefixEndpointAddressMessageFilter.Address can never be null
             Uri soapToAddress = filter.Address.Uri;
 
             CandidateSet cset = null;
index beddbbcfcfba649d736437af369a5862b9a5db83..7387258171ae49e39a8a86b88746cd4b63e47c99 100644 (file)
@@ -46,7 +46,7 @@ namespace System.ServiceModel.Dispatcher
             OperationFormatter.Validate(description, isRpc, false/*isEncoded*/);
 
             this.operation = description;
-#pragma warning suppress 56506 // Microsoft, OperationDescription.Messages never be null
+#pragma warning suppress 56506 // [....], OperationDescription.Messages never be null
             this.requestMessage = description.Messages[0];
             if (description.Messages.Count == 2)
                 this.responseMessage = description.Messages[1];
@@ -290,7 +290,7 @@ namespace System.ServiceModel.Dispatcher
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("description");
 
             OperationDescription operation = description;
-#pragma warning suppress 56506 // Microsoft, OperationDescription.Messages never be null
+#pragma warning suppress 56506 // [....], OperationDescription.Messages never be null
             MessageDescription requestMessage = description.Messages[0];
             MessageDescription responseMessage = null;
             if (description.Messages.Count == 2)
index 046eea89a08f92c1260f1aac9c4228b314ce12d3..e3335d2366040258442daf5219c9fe6b94ff3f54 100644 (file)
@@ -55,7 +55,7 @@ namespace System.ServiceModel.Dispatcher
         List<NodeSequenceIterator> iterList;
 
 
-        // REFACTOR, Microsoft, make this a function on QueryValueModel
+        // REFACTOR, [....], make this a function on QueryValueModel
         internal XsltFunctionCallOpcode(XsltContext context, IXsltContextFunction function, int argCount)
             : base(OpcodeID.XsltFunction)
         {
@@ -138,7 +138,7 @@ namespace System.ServiceModel.Dispatcher
             }
             else
             {
-                // PERF, Microsoft, see if we can cache these arrays to avoid allocations
+                // PERF, [....], see if we can cache these arrays to avoid allocations
                 object[] xsltArgs = new object[this.argCount];
                 int iterationCount = context.TopArg.Count;
                 for (int iteration = 0; iteration < iterationCount; ++iteration)
@@ -1210,7 +1210,7 @@ namespace System.ServiceModel.Dispatcher
             StackFrame argKeys = context.SecondArg;
             StackFrame argValues = context[2];
 
-            // PERF, Microsoft, this is really slow.
+            // PERF, [....], this is really slow.
             StringBuilder builder = new StringBuilder();
             while (argSource.basePtr <= argSource.endPtr)
             {
index 6fec13b5cb67a895cfc581d788d4873a9ac848b4..d34430b8733dc0ad20fd023e56c7e49ab6e2c7cf 100644 (file)
@@ -337,8 +337,8 @@ namespace System.ServiceModel.Dispatcher
             // Fx will bind prefixes and functions here.
             if (namespaces != null)
             {
-                // There's a 
-
+                // There's a bug in System.Xml.XPath.  If we pass an XsltContext to SetContext it won't throw if there's
+                // an undefined prefix.
                 if (namespaces is XsltContext)
                 {
                     // Lex the xpath to find all prefixes used
index f56c2737a5e67b34000ddbadb324776aa73a434c..0ee7900aaca2ff01453dac942a39a3465ddb206e 100644 (file)
@@ -140,7 +140,7 @@ namespace System.ServiceModel.Dispatcher
         NodesetLast = 0x01,
     }
 
-    // PERF, Microsoft, Remove when generic sort works
+    // PERF, [....], Remove when generic sort works
     // Used to sort in document order
 #if NO
     internal class NodeSequenceItemObjectComparer : IComparer
@@ -908,7 +908,7 @@ namespace System.ServiceModel.Dispatcher
         {
             this.Merge(false);
 
-            // PERF, Microsoft, make this work
+            // PERF, [....], make this work
             //Array.Sort<NodeSequenceItem>(this.items, 0, this.count, NodeSequence.Comparer);
             Array.Sort(this.items, 0, this.count, NodeSequence.ObjectComparer);
 
@@ -974,7 +974,7 @@ namespace System.ServiceModel.Dispatcher
             return seq;
 
             /*
-            // PERF, Microsoft, I think we can do the merge ourselves and avoid the sort.
+            // PERF, [....], I think we can do the merge ourselves and avoid the sort.
             //               Need to verify that the sequences are always in document order.
             for(int i = 0; i < this.count; ++i)
             {
@@ -1055,13 +1055,13 @@ namespace System.ServiceModel.Dispatcher
             {
                 if (this.index == 0)
                 {
-#pragma warning suppress 56503 // Microsoft, postponing the public change
+#pragma warning suppress 56503 // [....], postponing the public change
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new QueryProcessingException(QueryProcessingError.Unexpected, SR.GetString(SR.QueryContextNotSupportedInSequences)));
                 }
 
                 if (this.index > this.data.seq.Count)
                 {
-#pragma warning suppress 56503 // Microsoft, postponing the public change
+#pragma warning suppress 56503 // [....], postponing the public change
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.QueryAfterNodes)));
                 }
                 //
@@ -1156,13 +1156,13 @@ namespace System.ServiceModel.Dispatcher
             {
                 if (this.iter.CurrentPosition == 0)
                 {
-#pragma warning suppress 56503 // Microsoft, postponing the public change
+#pragma warning suppress 56503 // [....], postponing the public change
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.QueryBeforeNodes)));
                 }
 
                 if (this.iter.CurrentPosition > this.iter.Count)
                 {
-#pragma warning suppress 56503 // Microsoft, postponing the public change
+#pragma warning suppress 56503 // [....], postponing the public change
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.QueryAfterNodes)));
                 }
 
index 6df5f8ce144e674880cb79b7fdb4567b7eee94fd..54818a997be872ce0f106d280741c3dad04a15ff 100644 (file)
@@ -457,7 +457,7 @@ namespace System.ServiceModel.Dispatcher
             this.matcher = matcher;
             this.flags = QueryProcessingFlags.Match;
 
-            // PERF, Microsoft, see if we can just let these to their default init
+            // PERF, [....], see if we can just let these to their default init
             this.messageAction = null;
             //this.messageAddress = null;
             //this.messageVia = null;
@@ -510,7 +510,7 @@ namespace System.ServiceModel.Dispatcher
                     }
                     else
                     {
-#pragma warning suppress 56503 // Microsoft, property is more readable for this
+#pragma warning suppress 56503 // [....], property is more readable for this
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelperCritical(new QueryProcessingException(QueryProcessingError.Unexpected));
                     }
                     this.counter = this.contextNode as INodeCounter;
index 133eb048b5ec7191a4e5f7481323549755d28975..e835c3651fddf618bcc903fa2dd2afe976fcfcf2 100644 (file)
@@ -44,7 +44,7 @@ namespace System.ServiceModel.Dispatcher
         {
             get
             {
-                // PERF, Microsoft, weaken guard?
+                // PERF, [....], weaken guard?
                 return QueryAxisType.Self == this.axis.Type || QueryAxisType.Child == this.axis.Type;
                 //return ((QueryAxisType.Self == this.axis.Type) || ((this.axis.Type != QueryAxisType.DescendantOrSelf || this.axis.Type != QueryAxisType.Descendant)&& 0 != ((QueryNodeType.Element | QueryNodeType.Root) & this.type)));
             }
index 40a6970b4643df1187af5d86676311582bc59f9f..790a61eb0e0ca01905c85e441968e81c6216e9d8 100644 (file)
@@ -278,8 +278,8 @@ namespace System.ServiceModel.Dispatcher
 
     internal class SubExprHeader : SubExpr
     {
-        // WS, Microsoft, Can probably combine these
-        // WS, Microsoft, Make this data structure less ugly (if possible)
+        // WS, [....], Can probably combine these
+        // WS, [....], Make this data structure less ugly (if possible)
         Dictionary<string, Dictionary<string, List<SubExpr>>> nameLookup;
         Dictionary<SubExpr, MyInt> indexLookup;
 
@@ -329,7 +329,7 @@ namespace System.ServiceModel.Dispatcher
                 context.SaveVariable(this.var, context.Processor.ElapsedCount(marker));
             }
 
-            // WS, Microsoft, see if we can put this array in the processor to save
+            // WS, [....], see if we can put this array in the processor to save
             //             an allocation.  Perhaps we can use the variables slot we're going to fill
             NodeSequence[] childSequences = new NodeSequence[this.children.Count];
             NodeSequence seq = context.Sequences[context.TopSequenceArg.basePtr].Sequence;
index 6327b5d0d53ff31e8995dae14029fc6c7c909eeb..6efce98ed0c25b60208826686294d7b81ada92e8 100644 (file)
@@ -657,7 +657,7 @@ namespace System.ServiceModel.Dispatcher
             }
             else
             {
-                // PERF, Microsoft, can this be made more efficient?  Does it need to be?
+                // PERF, [....], can this be made more efficient?  Does it need to be?
                 Remove(old);
                 Insert(replace);
             }
@@ -704,7 +704,7 @@ namespace System.ServiceModel.Dispatcher
             }
             else if (this.buffer.Length == this.size)
             {
-                // PERF, Microsoft, how should we choose a new size?
+                // PERF, [....], how should we choose a new size?
                 T[] tmp = new T[this.size + 1];
 
                 if (index == 0)
index 3c15855a7dd87fefa7415623593d0a82298856ce..fc2e8ea3f9fb37a76b9b2aa763753257323589a7 100644 (file)
@@ -50,7 +50,7 @@ namespace System.ServiceModel.Dispatcher
         {
             get
             {
-#pragma warning suppress 56503 // Microsoft, the property is really not implemented, cannot lie, API not public
+#pragma warning suppress 56503 // [....], the property is really not implemented, cannot lie, API not public
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotImplementedException()); 
             }
         }
index 7832a4aa308e11cd28ef477e2ae733fd1fb20a1c..d25cc14579e889a70e6c0c5f21faa718a375406c 100644 (file)
@@ -486,7 +486,7 @@ namespace System.ServiceModel.Dispatcher
         {
             public IDisposable Impersonate()
             {
-                // PreSharp 
+                // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call.
 #pragma warning suppress 56523 // The LastWin32Error can be ignored here.
                 IntPtr threadHandle = SafeNativeMethods.GetCurrentThread();
                 SafeCloseHandle tokenHandle;
@@ -527,12 +527,12 @@ namespace System.ServiceModel.Dispatcher
 
                 void Undo()
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call.
 #pragma warning suppress 56523 // The LastWin32Error can be ignored here.
                     Fx.Assert(this.threadHandle == SafeNativeMethods.GetCurrentThread(), "");
                     // We are in the Dispose method. If a failure occurs we just have to ignore it.
-                    // PreSharp 
-
+                    // PreSharp Bug: Call 'Marshal.GetLastWin32Error' or 'Marshal.GetHRForLastWin32Error' before any other interop call.
+                    // #pragma warning suppress 56523 // The LastWin32Error can be ignored here.
                     if (!SafeNativeMethods.SetCurrentThreadToken(IntPtr.Zero, this.tokenHandle))
                     {
                         int error = Marshal.GetLastWin32Error();
index 82a56eaf5fe0f6937993849ea567e46cb13757de..0d0cb0f2c97c444d04d275faaa17033e145c6302 100644 (file)
@@ -235,7 +235,7 @@ namespace System.ServiceModel.Dispatcher
                 if (sbe is SymmetricSecurityBindingElement || sbe is AsymmetricSecurityBindingElement)
                 {
                     // check to see if we are streaming
-                    // (Microsoft 53690): need to have a general way get the transfer Mode from the binding
+                    // ([....] 53690): need to have a general way get the transfer Mode from the binding
                     // TransferMode transferMode = binding.GetProperty<TransferMode>(new BindingParameterCollection());
                     if (GetTransferMode(binding) != TransferMode.Buffered)
                     {
index 7e37baf4ea93d5fa2d0d8d33bee55cc3981a0c1e..9066da02bd95f3ebd59b0f18bf0700ff6d3de954 100644 (file)
@@ -138,7 +138,7 @@ namespace System.ServiceModel.Dispatcher
 
         // The base uri of the element
         // This is usually associated with the URI of the original data's location
-        // WS, Microsoft, look into what readers from messages surface.  If it's always null, we can save
+        // WS, [....], look into what readers from messages surface.  If it's always null, we can save
         // some memory
         public override string BaseURI
         {
@@ -183,7 +183,7 @@ namespace System.ServiceModel.Dispatcher
 
                     while (n != p.elem)
                     {
-                        // PERF, Microsoft, we might be able to get rid of this check by tweaking the position
+                        // PERF, [....], we might be able to get rid of this check by tweaking the position
                         // validator
                         if (n == NullIndex)
                         {
@@ -779,7 +779,7 @@ namespace System.ServiceModel.Dispatcher
         // Move the navigator to the first child of the current node.
         public override bool MoveToFirstChild()
         {
-            // PERF, Microsoft, do we need this check?  The null check may be enough
+            // PERF, [....], do we need this check?  The null check may be enough
             // Only valid for the root or an element node
             if (this.location == RootIndex || this.dom.nodes[this.location].type == XPathNodeType.Element)
             {
@@ -894,7 +894,7 @@ namespace System.ServiceModel.Dispatcher
                 n = this.dom.nodes[n].nextSibling;
             }
 
-            // PERF, Microsoft, can we just clear?
+            // PERF, [....], can we just clear?
             // We didn't find it, so restore the namespace stack
             for (int i = 0; i < nsCount; ++i)
             {
@@ -1483,7 +1483,7 @@ namespace System.ServiceModel.Dispatcher
 
         // Get the index of the next namespace that matches the scope
         // This function populates the namespace stack too
-        // PERF, Microsoft, see if we can have this function set the current location too
+        // PERF, [....], see if we can have this function set the current location too
         int FindNamespace(int parent, int ns, XPathNamespaceScope scope)
         {
             bool done = false;
@@ -1932,7 +1932,7 @@ namespace System.ServiceModel.Dispatcher
             int n = NullIndex;
             do
             {
-                // PERF, Microsoft, reorder cases so more common ones are earlier
+                // PERF, [....], reorder cases so more common ones are earlier
                 switch (reader.NodeType)
                 {
                     case XmlNodeType.Element:
@@ -2118,7 +2118,7 @@ namespace System.ServiceModel.Dispatcher
             }
         }
 
-        // PERF, Microsoft, find a better way to implement and have internal
+        // PERF, [....], find a better way to implement and have internal
         void INodeCounter.Increase()
         {
             Increase();
index b7fa1512628af63281d6b87f4c9003b0f014405f..1712f11c32fa3bc99014a660d500329acc6d4c6a 100644 (file)
@@ -50,16 +50,23 @@ namespace System.ServiceModel.Dispatcher
         {
             get
             {
-                lock (this.ThisLock)
+                if (this.calls == null)
                 {
-                    if (this.calls == null)
+                    lock (this.ThisLock)
                     {
-                        this.calls = new FlowThrottle(this.GotCall, ServiceThrottle.DefaultMaxConcurrentCallsCpuCount,
-                                                      ServiceThrottle.MaxConcurrentCallsPropertyName, ServiceThrottle.MaxConcurrentCallsConfigName);
-                        this.calls.SetRatio(this.RatioCallsToken);
+                        if (this.calls == null)
+                        {
+                            FlowThrottle callsFt = new FlowThrottle(this.GotCall, ServiceThrottle.DefaultMaxConcurrentCallsCpuCount,
+                                ServiceThrottle.MaxConcurrentCallsPropertyName, ServiceThrottle.MaxConcurrentCallsConfigName);
+
+                            callsFt.SetRatio(this.RatioCallsToken);
+
+                            this.calls = callsFt;
+                        }
                     }
-                    return this.calls;
                 }
+
+                return this.calls;
             }
         }
 
@@ -67,16 +74,23 @@ namespace System.ServiceModel.Dispatcher
         {
             get
             {
-                lock (this.ThisLock)
+                if (this.sessions == null)
                 {
-                    if (this.sessions == null)
+                    lock (this.ThisLock)
                     {
-                        this.sessions = new FlowThrottle(this.GotSession, ServiceThrottle.DefaultMaxConcurrentSessionsCpuCount,
-                                                         ServiceThrottle.MaxConcurrentSessionsPropertyName, ServiceThrottle.MaxConcurrentSessionsConfigName);
-                        this.sessions.SetRatio(this.RatioSessionsToken);
+                        if (this.sessions == null)
+                        {
+                            FlowThrottle sessionsFt = new FlowThrottle(this.GotSession, ServiceThrottle.DefaultMaxConcurrentSessionsCpuCount,
+                                ServiceThrottle.MaxConcurrentSessionsPropertyName, ServiceThrottle.MaxConcurrentSessionsConfigName);
+
+                            sessionsFt.SetRatio(this.RatioSessionsToken);
+
+                            this.sessions = sessionsFt;
+                        }
                     }
-                    return this.sessions;
                 }
+
+                return this.sessions;
             }
         }
 
@@ -84,16 +98,22 @@ namespace System.ServiceModel.Dispatcher
         {
             get
             {
-                lock (this.ThisLock)
+                if (this.dynamic == null)
                 {
-                    if (this.dynamic == null)
+                    lock (this.ThisLock)
                     {
-                        this.dynamic = new QuotaThrottle(this.GotDynamic, new object());
-                        this.dynamic.Owner = "ServiceHost";
+                        if (this.dynamic == null)
+                        {
+                            QuotaThrottle dynamicQt = new QuotaThrottle(this.GotDynamic, new object());
+                            dynamicQt.Owner = "ServiceHost";
+
+                            this.dynamic = dynamicQt;
+                        }
                     }
-                    this.UpdateIsActive();
-                    return this.dynamic;
                 }
+
+                this.UpdateIsActive();
+                return this.dynamic;
             }
         }
 
@@ -158,20 +178,27 @@ namespace System.ServiceModel.Dispatcher
         {
             get
             {
-                lock (this.ThisLock)
+                if (this.instanceContexts == null)
                 {
-                    if (this.instanceContexts == null)
+                    lock (this.ThisLock)
                     {
-                        this.instanceContexts = new FlowThrottle(this.GotInstanceContext, Int32.MaxValue,
-                                                                 ServiceThrottle.MaxConcurrentInstancesPropertyName, ServiceThrottle.MaxConcurrentInstancesConfigName);
-                        this.instanceContexts.SetRatio(this.RatioInstancesToken);
-                        if (this.servicePerformanceCounters != null)
+                        if (this.instanceContexts == null)
                         {
-                            InitializeInstancePerfCounterSettings();
+                            FlowThrottle instanceContextsFt = new FlowThrottle(this.GotInstanceContext, Int32.MaxValue,
+                                                                     ServiceThrottle.MaxConcurrentInstancesPropertyName, ServiceThrottle.MaxConcurrentInstancesConfigName);
+                            instanceContextsFt.SetRatio(this.RatioInstancesToken);
+
+                            if (this.servicePerformanceCounters != null)
+                            {
+                                InitializeInstancePerfCounterSettings(instanceContextsFt);
+                            }
+
+                            this.instanceContexts = instanceContextsFt;
                         }
                     }
-                    return this.instanceContexts;
                 }
+
+                return this.instanceContexts;
             }
         }
 
@@ -191,7 +218,7 @@ namespace System.ServiceModel.Dispatcher
             //instance throttle is created through the behavior, set the perf counter callbacks if initialized
             if (this.instanceContexts != null)
             {
-                InitializeInstancePerfCounterSettings();
+                InitializeInstancePerfCounterSettings(this.instanceContexts);
             }
 
             //this.calls and this.sessions throttles are created by the constructor. Set the perf counter callbacks
@@ -199,14 +226,14 @@ namespace System.ServiceModel.Dispatcher
             InitializeSessionsPerfCounterSettings();
         }
 
-        void InitializeInstancePerfCounterSettings()
+        void InitializeInstancePerfCounterSettings(FlowThrottle instanceContextsFt)
         {
-            Fx.Assert(this.instanceContexts != null, "Expect instanceContext to be initialized");
+            Fx.Assert(instanceContextsFt != null, "Expect instanceContext to be initialized");
             Fx.Assert(this.servicePerformanceCounters != null, "expect servicePerformanceCounters to be set");
-            this.instanceContexts.SetAcquired(this.AcquiredInstancesToken);
-            this.instanceContexts.SetReleased(this.ReleasedInstancesToken);
-            this.instanceContexts.SetRatio(this.RatioInstancesToken);
-            this.servicePerformanceCounters.SetThrottleBase((int)ServicePerformanceCounters.PerfCounters.InstancesPercentMaxInstancesBase, this.instanceContexts.Capacity);
+            instanceContextsFt.SetAcquired(this.AcquiredInstancesToken);
+            instanceContextsFt.SetReleased(this.ReleasedInstancesToken);
+            instanceContextsFt.SetRatio(this.RatioInstancesToken);
+            this.servicePerformanceCounters.SetThrottleBase((int)ServicePerformanceCounters.PerfCounters.InstancesPercentMaxInstancesBase, instanceContextsFt.Capacity);
         }
 
         void InitializeCallsPerfCounterSettings()
index 37c3276d24f6359817b1b7dbc9e685156459e103..a11a8f82efa96afb180d11126f51c0defc326af2 100644 (file)
@@ -332,7 +332,7 @@ namespace System.ServiceModel.Dispatcher
             {
                 get
                 {
-#pragma warning suppress 56503 // Microsoft, not a seekable stream, it is ok to throw NotSupported in this case
+#pragma warning suppress 56503 // [....], not a seekable stream, it is ok to throw NotSupported in this case
                     throw TraceUtility.ThrowHelperError(new NotSupportedException(), this.message);
                 }
             }
index 9a9aee04f01320443e3c11a32ccfdd56177eee86..1222eb30b45483a85acb61805b0bd0e62e628d1f 100644 (file)
@@ -162,7 +162,7 @@ namespace System.ServiceModel.Dispatcher
             if (argTypes == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("argTypes");
 
-            // PERF, Microsoft, factor ns if all same
+            // PERF, [....], factor ns if all same
             string ns = LookupNamespace(prefix);
             for (int i = 0; i < functions.Length; ++i)
             {
@@ -1254,7 +1254,7 @@ namespace System.ServiceModel.Dispatcher
                 {
                     do
                     {
-                        // PERF, Microsoft, this will be faster if I cache the envelope namespace to do the
+                        // PERF, [....], this will be faster if I cache the envelope namespace to do the
                         //               actor lookup by hand
                         long pos = nav.CurrentPosition;
                         string navActor = XPathMessageFunctionActor.ExtractFromNavigator(nav);
@@ -1283,9 +1283,9 @@ namespace System.ServiceModel.Dispatcher
             return docContext.Evaluate(expr);
 
 #if NO
-            // PERF, Microsoft, I drafted this implementation before we found out that a 
-
-
+            // PERF, [....], I drafted this implementation before we found out that a bug in the Fx implementation would 
+            //               prevent us from constructing an XPathNodeIterator that they would accept.  I'm keeping it
+            //               around in the hope that I will be able to use it by M5.4.  If not, it will be deleted.
             
             XPathNavigator basicNav = docContext.Clone();
             SeekableXPathNavigator nav = basicNav as SeekableXPathNavigator;
index 4ce51214c0e73ce94b7a0e5f7062f751c41f3f36..2b2991a1473eee20ab2472370032bdbdbe1c047c 100644 (file)
@@ -25,7 +25,7 @@ namespace System.ServiceModel
             if (identity == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("identity");
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'identity.ResourceType' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506 // Claim.ClaimType will never return null
             if (!identity.ClaimType.Equals(ClaimTypes.Dns))
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.UnrecognizedClaimTypeForIdentity, identity.ClaimType, ClaimTypes.Dns));
index dd22acb146b76d5e670f13f0bccc4ab6943b1871..26583d1528c8da9c7872202370dd45cece7bfbf1 100644 (file)
@@ -342,7 +342,7 @@ namespace System.ServiceModel
 
         // NOTE: UserInfo, Query, and Fragment are ignored when comparing Uris as addresses
         // this is the WCF logic for comparing Uris that represent addresses
-        // this method must be kept in sync with UriGetHashCode
+        // this method must be kept in [....] with UriGetHashCode
         internal static bool UriEquals(Uri u1, Uri u2, bool ignoreCase, bool includeHostInComparison)
         {
             return UriEquals(u1, u2, ignoreCase, includeHostInComparison, true);
@@ -393,7 +393,7 @@ namespace System.ServiceModel
             return string.Compare(u1Path, 0, u2Path, 0, u1Len, ignoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal) == 0;
         }
 
-        // this method must be kept in sync with UriEquals
+        // this method must be kept in [....] with UriEquals
         internal static int UriGetHashCode(Uri uri, bool includeHostInComparison)
         {
             return UriGetHashCode(uri, includeHostInComparison, true);
index c8f69446d0fd5379f14151750591d824c3733731..59cbd6c2569959b86bff5561b20b3efbddbc5a11 100644 (file)
@@ -69,7 +69,7 @@ namespace System.ServiceModel
             if (identity == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("identity");
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'identity.ClaimType' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506 // Claim.ClaimType will never return null
             if (identity.ClaimType.Equals(ClaimTypes.Dns))
             {
index 409b9c82445e539c30509e70cc9a00300331d455..cbac59f62a0090122e3b57f6ab98508d8766fe9e 100644 (file)
@@ -72,7 +72,7 @@ namespace System.ServiceModel
             return GetMatchingTranslation(CultureInfo.CurrentCulture);
         }
 
-        // Microsoft, This function should always return a translation so that a fault can be surfaced.
+        // [....], This function should always return a translation so that a fault can be surfaced.
         public FaultReasonText GetMatchingTranslation(CultureInfo cultureInfo)
         {
             if (cultureInfo == null)
index 76196d79980fa6dd7621046ebc1e300fe459d9c0..616b1feddc328529b05842dd31a3e7594928eae3 100644 (file)
@@ -13,7 +13,10 @@ namespace System.ServiceModel
     internal static class LocalAppContextSwitches
     {
         private const string DisableExplicitConnectionCloseHeaderString = "Switch.System.ServiceModel.DisableExplicitConnectionCloseHeader";
+        private const string AllowUnsignedToHeaderString = "Switch.System.ServiceModel.AllowUnsignedToHeader";
+
         private static int disableExplicitConnectionCloseHeader;
+        private static int allowUnsignedToHeader;
 
         public static bool DisableExplicitConnectionCloseHeader
         {
@@ -24,6 +27,15 @@ namespace System.ServiceModel
             }
         }
 
+        public static bool AllowUnsignedToHeader
+        {
+            [MethodImpl(MethodImplOptions.AggressiveInlining)]
+            get
+            {
+                return LocalAppContext.GetCachedSwitchValue(AllowUnsignedToHeaderString, ref allowUnsignedToHeader);
+            }
+        }
+
         public static void SetDefaultsLessOrEqual_452()
         {
             // Define the switches that should be true for 4.5.2 or less, false for 4.6+.
index d1e3619beec28e8a1f876db0244a8adef05ad83f..b0c64e3ce496a37e07d242c9d69d489763e90517 100644 (file)
@@ -41,7 +41,7 @@ namespace System.ServiceModel
             if (identity == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("identity");
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'identity.ClaimType' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506 // Claim.ClaimType will never return null
             if (!identity.ClaimType.Equals(ClaimTypes.Rsa))
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.UnrecognizedClaimTypeForIdentity, identity.ClaimType, ClaimTypes.Rsa));
index 415a96411d14fdc02cf2f81256653b1784c3cb04..ff0d508ecb02211e914a2e14ced66a26e543155c 100644 (file)
@@ -178,7 +178,7 @@ namespace System.ServiceModel.Security
             catch (InvalidOperationException)
             {
                 algorithmObject = null;
-                // We swallow the exception and continue.
+                // We ---- the exception and continue.
             }
             if (algorithmObject != null)
             {
@@ -281,7 +281,7 @@ namespace System.ServiceModel.Security
             catch (InvalidOperationException)
             {
                 algorithmObject = null;
-                // We swallow the exception and continue.
+                // We ---- the exception and continue.
             }
             if (algorithmObject != null)
             {
index 4cd988b21cd342f122d68e068d495c32490e57dd..734d4d219364075055766c6765af75f82f46957f 100644 (file)
@@ -439,9 +439,9 @@ namespace System.ServiceModel.Security
             return _defaultTokenResolver;
         }
         /// <summary>
-        /// There is a 
-
-
+        /// There is a bug in WCF where the version obtained from the public SecurityTokenVersion strings is wrong.
+        /// The internal MessageSecurityTokenVersion has the right version.
+        /// </summary>
         internal static SecurityVersion GetSecurityVersion( SecurityTokenVersion tokenVersion )
         {
             if ( tokenVersion == null )
@@ -450,11 +450,11 @@ namespace System.ServiceModel.Security
             }
 
             //
-            // Workaround for WCF 
-
-
-
-
+            // Workaround for WCF bug.
+            // In .NET 3.5 WCF returns the wrong Token Specification. We need to reflect on the
+            // internal code so we can access the SecurityVersion directly instead of depending
+            // on the security specification.
+            //
             if ( tokenVersion is MessageSecurityTokenVersion )
             {
                 SecurityVersion sv = ( tokenVersion as MessageSecurityTokenVersion ).SecurityVersion;
index a4a35f7d8f1f76b827d87b667b9761a7fb86330e..846bfee75a60b46d67a2948f550c906c0a14e79a 100644 (file)
@@ -254,7 +254,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRST, "RequestProperties")));
                 }
@@ -334,7 +334,7 @@ namespace System.ServiceModel.Security
             {
                 if (!this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemAvailableInDeserializedRSTOnly, "RequestSecurityTokenXml")));
                 }
@@ -374,7 +374,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRST, "AppliesTo")));
                 }
@@ -388,7 +388,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRST, "AppliesToSerializer")));
                 }
@@ -402,7 +402,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRST, "AppliesToType")));
                 }
index 0cfa08302c6a68a25327f600aa2de1235f4ab78b..c84607d9427af8b28adb1d040a606dc9dd22a05b 100644 (file)
@@ -334,7 +334,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRSTR, "EntropyToken")));
                 }
@@ -348,7 +348,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRSTR, "IssuedToken")));
                 }
@@ -368,7 +368,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRSTR, "ProofToken")));
                 }
@@ -388,7 +388,7 @@ namespace System.ServiceModel.Security
             {
                 if (!this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemAvailableInDeserializedRSTROnly, "RequestSecurityTokenXml")));
                 }
@@ -402,7 +402,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRST, "AppliesTo")));
                 }
@@ -416,7 +416,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRST, "AppliesToSerializer")));
                 }
@@ -430,7 +430,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRST, "AppliesToType")));
                 }
@@ -444,7 +444,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.isReceiver)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ItemNotAvailableInDeserializedRSTR, "IsLifetimeSet")));
                 }
index d957ab822805ab195ff455baea56eb076f7205a3..1ab82412c3a94e946469efc4d307ac2fb3facca7 100644 (file)
@@ -428,7 +428,7 @@ namespace System.ServiceModel.Security
                     writer.WriteStartElement(dictionary.WindowsSidIdentity, dictionary.EmptyString);
                     WriteSidAttribute(wid.User, dictionary, writer);
 
-                    // This is to work around WOW64 
+                    // This is to work around WOW64 bug Windows OS 1491447
                     string authenticationType = null;
                     using (WindowsIdentity self = WindowsIdentity.GetCurrent())
                     {
index 68a7269529fc211f6c2beaaab64787b1c2d5fd77..a3145e57e1a9078b556e3fe08c321918a40255d1 100644 (file)
@@ -21,7 +21,7 @@ namespace System.ServiceModel.Security
         {
             get
             {
-                // PreSharp 
+                // PreSharp Bug: Property get methods should not throw exceptions.
                 #pragma warning suppress 56503
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SecureConversationDriverVersionDoesNotSupportSession)));
             }
@@ -31,7 +31,7 @@ namespace System.ServiceModel.Security
         {
             get
             {
-                // PreSharp 
+                // PreSharp Bug: Property get methods should not throw exceptions.
                 #pragma warning suppress 56503
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SecureConversationDriverVersionDoesNotSupportSession)));
             }
@@ -53,7 +53,7 @@ namespace System.ServiceModel.Security
         {
             get
             {
-                // PreSharp 
+                // PreSharp Bug: Property get methods should not throw exceptions.
                 #pragma warning suppress 56503
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SecureConversationDriverVersionDoesNotSupportSession)));
             }
@@ -63,7 +63,7 @@ namespace System.ServiceModel.Security
         {
             get
             {
-                // PreSharp 
+                // PreSharp Bug: Property get methods should not throw exceptions.
                 #pragma warning suppress 56503
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SecureConversationDriverVersionDoesNotSupportSession)));
             }
index 946bb4022564d6b8db2a58ae7f606efac5ba34e2..e74c94855b8f6406761bede1457d6904eebfea95 100644 (file)
@@ -2758,7 +2758,7 @@ namespace System.ServiceModel.Security
                     {
                         if (this.sessionId == null)
                         {
-                            // PreSharp 
+                            // PreSharp Bug: Property get methods should not throw exceptions.
 #pragma warning suppress 56503
                             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ChannelMustBeOpenedToGetSessionId)));
                         }
index 4f2357a444ae9b0a9f70077ba754da04a2b7e7f0..175f07c58c98bb6e08885818820268107e7066b2 100644 (file)
@@ -865,9 +865,9 @@ namespace System.ServiceModel.Security
 
             /*
              *   Session issuance/renewal consists of the following steps (some may be async):
-             *  1. Create a channel (sync)
+             *  1. Create a channel ([....])
              *  2. Open the channel (async)
-             *  3. Create the request to send to server (sync)
+             *  3. Create the request to send to server ([....])
              *  4. Send the message and get reply (async)
              *  5. Process the reply to get the token
              *  6. Close the channel (async) and complete the async result
index 7047365f9404ede0134dbbd24109bbaad97b6813..913840d0359797a0ae39e848365a43eb6eb550bf 100644 (file)
@@ -284,7 +284,7 @@ namespace System.ServiceModel.Security
         volatile static bool isSslValidationRequirementDetermined = false;
         static readonly int MinimumSslCipherStrength = 128;
 
-        // these are kept in sync with IIS70
+        // these are kept in [....] with IIS70
         public const string AuthTypeNTLM = "NTLM";
         public const string AuthTypeNegotiate = "Negotiate";
         public const string AuthTypeKerberos = "Kerberos";
@@ -1401,7 +1401,7 @@ namespace System.ServiceModel.Security
             }
         }
 
-        // work-around to Windows SE 
+        // work-around to Windows SE Bug 141614
         [Fx.Tag.SecurityNote(Critical = "Uses unsafe critical method UnsafeGetPassword to access the credential password without a Demand.",
             Safe = "Only uses the password to construct a cloned NetworkCredential instance, does not leak password value.")]
         [SecuritySafeCritical]
@@ -1435,7 +1435,7 @@ namespace System.ServiceModel.Security
             }
         }
 
-        // WORKAROUND, Microsoft, VSWhidbey 561276: The first NetworkCredential must be created in a lock.
+        // WORKAROUND, [....], VSWhidbey 561276: The first NetworkCredential must be created in a lock.
         internal static void PrepareNetworkCredential()
         {
             if (dummyNetworkCredential == null)
@@ -1655,7 +1655,7 @@ namespace System.ServiceModel.Security
                 {
                     thisPtr.communicationObject.EndOpen(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -1730,7 +1730,7 @@ namespace System.ServiceModel.Security
                 {
                     thisPtr.communicationObject.EndClose(result);
                 }
-#pragma warning suppress 56500 // Microsoft, transferring exception to another thread
+#pragma warning suppress 56500 // [....], transferring exception to another thread
                 catch (Exception e)
                 {
                     if (Fx.IsFatal(e))
@@ -2179,7 +2179,7 @@ namespace System.ServiceModel.Security
             if (keyIdentifierClause is EncryptedKeyIdentifierClause)
             {
                 EncryptedKeyIdentifierClause keyClause = (EncryptedKeyIdentifierClause)keyIdentifierClause;
-                // PreSharp 
+                // PreSharp Bug: Parameter 'keyClause' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506 // keyClause will not be null due to the if condition above.
                 for (int i = 0; i < keyClause.EncryptingKeyIdentifier.Count; i++)
                 {
index b8af32e48a7c1b1f75f66a5abc99cd69aa318cb9..99658e3d2b6135780fd7757753226b3ea03dd8a3 100644 (file)
@@ -70,7 +70,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.IsDisposed)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 }
@@ -91,7 +91,7 @@ namespace System.ServiceModel.Security
             {
                 if (this.IsDisposed)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
                     #pragma warning suppress 56503
                     throw TraceUtility.ThrowHelperError(CreateMessageDisposedException(), this);
                 }
index 77a3dde3fddffcc2d1ef0449881d128851597bea..0032edc9ea8587e863b8bb5741abf6b7f5304b4b 100644 (file)
@@ -210,7 +210,7 @@ namespace System.ServiceModel.Security
                 ThrowIfDisposed();
                 if (!IsValidContext)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
 #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new Win32Exception((int)SecurityStatus.InvalidHandle));
                 }
@@ -229,7 +229,7 @@ namespace System.ServiceModel.Security
                 ThrowIfDisposed();
                 if (!IsValidContext)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
 #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new Win32Exception((int)SecurityStatus.InvalidHandle));
                 }
@@ -269,7 +269,7 @@ namespace System.ServiceModel.Security
                 ThrowIfDisposed();
                 if (!IsValidContext)
                 {
-                    // PreSharp 
+                    // PreSharp Bug: Property get methods should not throw exceptions.
 #pragma warning suppress 56503
                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new Win32Exception((int)SecurityStatus.InvalidHandle));
                 }
index 7088b26b839a07ea433803900128e6d3bd9ea3e4..e052b20da66e8fb5180316313d02bb7cce7f5a2f 100644 (file)
@@ -38,7 +38,7 @@ namespace System.ServiceModel.Security
         {
             get
             {
-                // PreSharp 
+                // PreSharp Bug: Property get methods should not throw exceptions.
 #pragma warning suppress 56503
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.TrustDriverVersionDoesNotSupportIssuedTokens)));
             }
@@ -49,7 +49,7 @@ namespace System.ServiceModel.Security
         {
             get
             {
-                // PreSharp 
+                // PreSharp Bug: Property get methods should not throw exceptions.
 #pragma warning suppress 56503
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.TrustDriverVersionDoesNotSupportIssuedTokens)));
             }
@@ -75,7 +75,7 @@ namespace System.ServiceModel.Security
         {
             get
             {
-                // PreSharp 
+                // PreSharp Bug: Property get methods should not throw exceptions.
 #pragma warning suppress 56503
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.TrustDriverVersionDoesNotSupportSession)));
             }
@@ -88,7 +88,7 @@ namespace System.ServiceModel.Security
         {
             get
             {
-                // PreSharp 
+                // PreSharp Bug: Property get methods should not throw exceptions.
 #pragma warning suppress 56503
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.TrustDriverVersionDoesNotSupportSession)));
             }
index ee27b7d35d148f53a01bc495da50108d619a6339..fdf3f0ce69534bf523f3e5c541d50da1501e248f 100644 (file)
@@ -222,7 +222,7 @@ namespace System.ServiceModel.Security
                 }
 
                 if (!isHeaderEncrypted && reader.IsStartElement(SecurityXXX2005Strings.EncryptedHeader, SecurityXXX2005Strings.Namespace))
-                {                    
+                {
                     XmlDictionaryReader localreader = headers.GetReaderAtHeader(i);
                     localreader.ReadStartElement(SecurityXXX2005Strings.EncryptedHeader, SecurityXXX2005Strings.Namespace);
 
@@ -234,7 +234,7 @@ namespace System.ServiceModel.Security
                         {
                             isHeaderEncrypted = true;
                         }
-                    }                   
+                    }
                 }
 
                 this.ElementManager.VerifyUniquenessAndSetHeaderId(id, i);
@@ -611,9 +611,27 @@ namespace System.ServiceModel.Security
                         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.TransportSecuredMessageMissingToHeader)));
                     XmlDictionaryReader toHeaderReader = this.Message.Headers.GetReaderAtHeader(headerIndex);
                     id = toHeaderReader.GetAttribute(XD.UtilityDictionary.IdAttribute, XD.UtilityDictionary.Namespace);
-                    if (id == null)
-                        throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.UnsignedToHeaderInTransportSecuredMessage)));
-                    signedXml.EnsureDigestValidity(id, toHeaderReader);
+
+                    // DevDiv:938534 - We added a flag that allow unsigned headers. If this is set, we do not throw an Exception but move on to CompleteSignatureVerification()
+                    if (LocalAppContextSwitches.AllowUnsignedToHeader)
+                    {
+                        // The lack of an id indicates that the sender did not wish to sign the header. We can safely assume that null indicates this header is not signed.
+                        // If id is not null, then we need to validate the Digest and ensure signature is valid. The exception is thrown deeper in the System.IdentityModel stack.
+                        if (id != null)
+                        {
+                            signedXml.EnsureDigestValidityIfIdMatches(id, toHeaderReader);
+                        }
+                    }
+                    else
+                    {
+                        // default behavior for all platforms
+                        if (id == null)
+                        {
+                            // 
+                            throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.UnsignedToHeaderInTransportSecuredMessage)));
+                        }
+                        signedXml.EnsureDigestValidity(id, toHeaderReader);
+                    }
                 }
                 signedXml.CompleteSignatureVerification();
                 return token;
@@ -692,7 +710,7 @@ namespace System.ServiceModel.Security
                 }
             }
 
-              // This check makes sure that if RequireSignedPrimaryToken is true (ProtectTokens is enabled on sbe) then the incoming message 
+            // This check makes sure that if RequireSignedPrimaryToken is true (ProtectTokens is enabled on sbe) then the incoming message 
             // should have the primary signature over the primary(signing)token.
             if (isPrimarySignature && this.RequireSignedPrimaryToken && !this.ElementManager.IsPrimaryTokenSigned)
             {
index 8b17d6e54ca7268f2f2ad1b371a26fb626c1b988..e3d7cf18cc07d587f1e980a4e513774963b751e3 100644 (file)
@@ -2923,7 +2923,7 @@ namespace System.ServiceModel.Security
                     return;
                 }
                 WsdlImporter wsdlImporter;
-                // NOTE: Microsoft, Policy import/export is seperate from WSDL however, this policy importer
+                // NOTE: [....], Policy import/export is seperate from WSDL however, this policy importer
                 //      invokes the WsdlImporter. In the event that the current MetadataImporter is a WsdlImporter,
                 //      we should use it's collection of extensions for the import process. Other wise
                 WsdlImporter currentWsdlImporter = importer as WsdlImporter;
index c4cd224b3b0ffaf08e828aff82a200556b5229d6..85bed0f99b92b9f3efa98e6c2b9185ac8ca514f3 100644 (file)
@@ -472,7 +472,7 @@ namespace System.ServiceModel.Security
                 }
             }
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'element' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506
             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.CannotReadToken, element.LocalName, element.NamespaceURI, element.GetAttribute(SecurityJan2004Strings.ValueType, null))));
         }
index 5c6b6d26fbf05c9d551fbdb88e635a31727777ee..2795cd2b3eca8eea7464ea48b07a0e36cf34ae32 100644 (file)
@@ -1524,7 +1524,7 @@ namespace System.ServiceModel.Security
                     foreach (XmlNode node in element.ChildNodes)
                         if (node is XmlElement)
                         {
-                            // PreSharp 
+                            // PreSharp Bug: Parameter 'requiredClaims' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506
                             requiredClaims.Add((XmlElement)node);
                         }
index e0d19660f81e666d2b42fed70b70be6521c3bcf9..e098f79e1617252d70dea38731f1938e8c616d58 100644 (file)
@@ -282,7 +282,7 @@ namespace System.ServiceModel.Security
                 public void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime behavior)
                 {
                     // it is very unlikely that InteractiveChannelInitializers will be null, this is defensive in case ClientRuntime every has a 
-                    // 
+                    // bug.  I am OK with this as ApplyingClientBehavior is a one-time channel setup.
                     if (behavior != null && behavior.InteractiveChannelInitializers != null)
                     {
                         // clear away any interactive initializer
index 5561ded581f42be01f7155a977f2814ad24523a5..81df58a3069e5ff171d11fed73dc25d5fab47202 100644 (file)
@@ -1351,7 +1351,7 @@ namespace System.ServiceModel.Security
         internal class ProcessCoreAsyncResult : AsyncResult
         {
             //
-            // Encapsulate the local variables in the sync version of ProcessCore as fields.
+            // Encapsulate the local variables in the [....] version of ProcessCore as fields.
             //
             WSTrustServiceContract _trustServiceContract;
             DispatchContext _dispatchContext;
index 2e20f2954bd5253e77d81a0c2a26885b5762627a..12a1e028970c528427fe6b30a84659bb3ed1fe6d 100644 (file)
@@ -60,7 +60,7 @@ namespace System.ServiceModel
             if (identity == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("identity");
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'identity.ResourceType' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506 // Claim.ClaimType will never return null
             if (!identity.ClaimType.Equals(ClaimTypes.Spn))
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.UnrecognizedClaimTypeForIdentity, identity.ClaimType, ClaimTypes.Spn));
index a7bfdc2a4404d397ed6285ebb1001ecdeda6db4c..a417e2b9dc68399de6738e25ca6dd865eacf018d 100644 (file)
@@ -1124,7 +1124,7 @@ namespace System.ServiceModel.Syndication
 
             // if there's a single author with an email address, then serialize as the managingEditor
             // else serialize the authors as Atom extensions
-#pragma warning disable 56506 // Microsoft: this.Feed.Authors is never null
+#pragma warning disable 56506 // [....]: this.Feed.Authors is never null
             if ((this.Feed.Authors.Count == 1) && (this.Feed.Authors[0].Email != null))
 #pragma warning restore 56506
             {
@@ -1149,7 +1149,7 @@ namespace System.ServiceModel.Syndication
                 writer.WriteEndElement();
             }
 
-#pragma warning disable 56506 // Microsoft: this.Feed.Categories is never null
+#pragma warning disable 56506 // [....]: this.Feed.Categories is never null
             for (int i = 0; i < this.Feed.Categories.Count; ++i)
 #pragma warning restore 56506
             {
@@ -1161,7 +1161,7 @@ namespace System.ServiceModel.Syndication
                 writer.WriteElementString(Rss20Constants.GeneratorTag, this.Feed.Generator);
             }
 
-#pragma warning disable 56506 // Microsoft: this.Feed.Contributors is never null
+#pragma warning disable 56506 // [....]: this.Feed.Contributors is never null
             if (this.Feed.Contributors.Count > 0)
 #pragma warning restore 56506
             {
@@ -1263,7 +1263,7 @@ namespace System.ServiceModel.Syndication
                 WriteAlternateLink(writer, firstAlternateLink, (item.BaseUri != null ? item.BaseUri : feedBaseUri));
             }
 
-#pragma warning disable 56506 // Microsoft, item.Authors is never null
+#pragma warning disable 56506 // [....], item.Authors is never null
             if (item.Authors.Count == 1 && !string.IsNullOrEmpty(item.Authors[0].Email))
 #pragma warning restore 56506
             {
@@ -1281,7 +1281,7 @@ namespace System.ServiceModel.Syndication
                 }
             }
 
-#pragma warning disable 56506 // Microsoft, item.Categories is never null
+#pragma warning disable 56506 // [....], item.Categories is never null
             for (int i = 0; i < item.Categories.Count; ++i)
 #pragma warning restore 56506
             {
@@ -1409,7 +1409,7 @@ namespace System.ServiceModel.Syndication
                 }
             }
 
-#pragma warning disable 56506 // Microsoft, item.COntributors is never null
+#pragma warning disable 56506 // [....], item.COntributors is never null
             if (item.Contributors.Count > 0)
 #pragma warning restore 56506
             {
index a70a3246731819ad83eedd2b3f2e5d0fa21e7df9..737d71575ec6ce139f5cd4a7e497670f19cae6c1 100644 (file)
@@ -71,10 +71,10 @@ namespace System.ServiceModel.Transactions
         void ForcePromotion(Transaction transaction)
         {
             // Force promotion. This may throw TransactionException.
-            // We used to check the DistributedIdentifier property first, but VSWhidbey 
-
-
-
+            // We used to check the DistributedIdentifier property first, but VSWhidbey bug 547901 
+            // prevents us from doing so reliably in multi-threaded scenarios (there is a ----
+            // in the System.Transactions code that can cause a NullReferenceException if we ask
+            // for the identifier while the transaction is being promoted)
             TransactionInterop.GetTransmitterPropagationToken(transaction);
         }
 
index 5ea26cb17f41b6186f184f675db6948fe431707b..ee6af2c46ad5f41f1f4ae75537c68cbcdc8eedc9 100644 (file)
@@ -38,7 +38,7 @@ namespace System.ServiceModel
             if (identity == null)
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("identity");
 
-            // PreSharp 
+            // PreSharp Bug: Parameter 'identity.ResourceType' to this public method must be validated: A null-dereference can occur here.
 #pragma warning suppress 56506 // Claim.ResourceType will never return null
             if (!identity.ClaimType.Equals(ClaimTypes.Upn))
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.UnrecognizedClaimTypeForIdentity, identity.ClaimType, ClaimTypes.Upn));
@@ -80,7 +80,11 @@ namespace System.ServiceModel
             try
             {
                 downlevelName = windowsIdentity.Name;
-                upnName = GetUpnFromDownlevelName(downlevelName);
+
+                if (this.IsMachineJoinedToDomain())
+                {
+                    upnName = GetUpnFromDownlevelName(downlevelName);
+                }
             }
 #pragma warning suppress 56500 // covered by FxCOP
             catch (Exception e)
@@ -89,13 +93,34 @@ namespace System.ServiceModel
                 {
                     throw;
                 }
+
                 DiagnosticUtility.TraceHandledException(e, TraceEventType.Warning);
             }
+
             // if the AD cannot be queried for the fully qualified domain name,
             // fall back to the downlevel UPN name
             return upnName ?? downlevelName;
         }
 
+        bool IsMachineJoinedToDomain()
+        {
+            IntPtr pDomainControllerInfo = IntPtr.Zero;
+
+            try
+            {
+                int result = SafeNativeMethods.DsGetDcName(null, null, IntPtr.Zero, null, (uint)DSFlags.DS_DIRECTORY_SERVICE_REQUIRED, out pDomainControllerInfo);
+
+                return result != (int)Win32Error.ERROR_NO_SUCH_DOMAIN;
+            }
+            finally
+            {
+                if (pDomainControllerInfo != IntPtr.Zero)
+                {
+                    SafeNativeMethods.NetApiBufferFree(pDomainControllerInfo);
+                }
+            }
+        }
+
         // Duplicate code from SecurityImpersonationBehavior
         string GetUpnFromDownlevelName(string downlevelName)
         {
@@ -108,6 +133,7 @@ namespace System.ServiceModel
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperWarning(new InvalidOperationException(SR.GetString(SR.DownlevelNameCannotMapToUpn, downlevelName)));
             }
+
             string shortDomainName = downlevelName.Substring(0, delimiterPos + 1);
             string userName = downlevelName.Substring(delimiterPos + 1);
             string fullDomainName;
index 765abf1c5d219c5e4b4e2dd3a799320692da36f3..d7311de020fa2096951b6064abadb50015c40efd 100644 (file)
@@ -228,7 +228,7 @@ namespace System.Web.DynamicData {
         }
 
         /// <summary>
-        /// Make the SelectedIndex sync up with the PersistedSelection. Concretely, what it means is that
+        /// Make the SelectedIndex [....] up with the PersistedSelection. Concretely, what it means is that
         /// if you select a row and then page away (or sort), the selection remains on that row
         /// even if it's not currently visible.
         /// </summary>
index 2fcbbceb8984a524fe1a518ffab7f768fc704d26..f54d6521c67395387a1267fe662c7e312f4f6ca0 100644 (file)
@@ -189,7 +189,7 @@ namespace System.Web.DynamicData {
 
         internal static void EnablePersistedSelection(BaseDataBoundControl baseDataBoundControl, IMetaTable table) {
             Debug.Assert(baseDataBoundControl != null, "NULL!");
-            // Make the persisted selection sync up with the selected index if possible
+            // Make the persisted selection [....] up with the selected index if possible
             if (!table.IsReadOnly) {
                 DynamicDataExtensions.EnablePersistedSelectionInternal(baseDataBoundControl);
             }
index e0f4e82dbdaaa5ddec89cf27f80019e41648dae7..33381499ece2f29f0e3aae2a98a9788fd92f0557 100644 (file)
@@ -421,11 +421,11 @@ namespace System.Web.DynamicData {
         private void SetUpRequiredFieldValidator(RequiredFieldValidator validator, MetaColumn column) {
             var requiredAttribute = column.Metadata.RequiredAttribute;
             if (requiredAttribute!= null && requiredAttribute.AllowEmptyStrings) {
-                // Dev10 
-
-
-
-
+                // Dev10 Bug 749744
+                // If somone explicitly set AllowEmptyStrings = true then we assume that they want to
+                // allow empty strings to go into a database even if the column is marked as required.
+                // Since ASP.NET validators always get an empty string, this essential turns of
+                // required field validation.
                 IgnoreModelValidationAttribute(typeof(RequiredAttribute));
             } else if (column.IsRequired) {
                 validator.Enabled = true;
index ba73d02687807fcc3e6ef46eda0161c6e05d07e5..5598b5c6061f9649a794ae98f144fc175524f175 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.EntityClient;
index 24c9e3f49b037356d9a768e9c4122a5285006d8d..ceeca336731697bdcd7c7260506dff2ed80b8b24 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //
 // Manages the properties that can be set on the first page of the wizard
 //------------------------------------------------------------------------------
index ba12b645410df3aa1f640f2dc8e2ac8e0b376b08..fae30157a8d3ea46cba067829e812aee0be0cbea 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index d0af6f0701cfdf860797a03f7c68b8237b4d514e..8b78d5d1999d1e3e5b2b619073f86aef5e582fc0 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Windows.Forms;
index dddf08b8a927272dad68daa42875c1de12dad7cb..b92970d9ed79e268aa2181d1bd69f718ddf6e747 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 1a470ab01c4d6eef65b0d5ed7236f592b6c1fab2..561dbabb75b0f5f0bc257cd47da91dc211e40b8f 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index 95c9411215c4fa426498a51bee0a9c46a16a5831..68ca2a9632e21b4afc9e20940f96a3d93046e746 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //
 // Manages the properties that can be set on the second page of the wizard
 //------------------------------------------------------------------------------
index 9deff40bb7048bf3d3bb75afaa6d82710d08df19..a2d586e55c2862f0145026233ba0f12e7aebfb8b 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index b5854bbb0dd75e22be99b1b292877fa8afc645b5..e5f044744966607572c6cf52774675b7a2975c3a 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Windows.Forms;
index babe193dcc99888eb1176e944333a164336fe618..b630b7594efff50c4cee9903337de4ce98f16d2a 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.ComponentModel;
index c9369bc4382073c9f4ae03e25da1eabddfb64c9d..652acc58720bb7ff077d69aee74d10c37ad0e8f6 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
@@ -1131,12 +1131,12 @@ namespace System.Web.UI.Design.WebControls
                 // the right metadata from the design-time environment
                 EntityDataSource entityDataSource = new EntityDataSource(_entityConnection);
 
-                // This is workaround for a 
-
-
-
-
-
+                // This is workaround for a bug in the SQL CE provider services. SQL CE uses two providers - one is supposed to be used at design time 
+                // while the other one is supposed to be used at runtime. When the Entiy Designer is used in a way that requires to talk to the database 
+                // SQL CE starts returning design time provider. However they don't reset an internal flag and continue to return design time provider even if 
+                // the Entity Designer is not used anymore. Calling GetProviderManifestToken() method will reset the flag according to the provider in the
+                // connection. This fixes the problem for SQL CE provider without having to special case SQL CE because it will be a no-op for other providers. 
+                // For more details see bug 35675 in DevDiv database http://vstfdevdiv:8080/web/wi.aspx?pcguid=22f9acc9-569a-41ff-b6ac-fac1b6370209&id=35675
                 DbProviderServices.GetProviderServices(_entityConnection.StoreConnection).GetProviderManifestToken(_entityConnection.StoreConnection);
                 
                 // Copy only the properties that can affect the schema
index 59ab452a5e2140f0abc4113f0f1b6a636c434b89..fef0dc95f51228ad8a7ed487ce2f2f0f6b9c6482 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index e1fcec20251f78c79aff4edc51b4307def9f3902..4f522e7e5b829337b50d0a13efb647038408b1db 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index 9b5f5ed2d2edddb9edb82e91522ec723c4633e86..f814d7516c9a8af1b46c2848c983d481c4b7c4fd 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 271ff0562a0df503392fe9d3bd60a533d9a820a6..d5029c5064690083b79acd6759b4eea9b6cc1861 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System.Data.Metadata.Edm;
index 18982675357e6ab949717d93da71bd15876eb519..d0ab4f9f647c161829642d99bcb061a8260f92ab 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //
 // Temporary storage for properties set via the wizard
 //------------------------------------------------------------------------------
index 4d135b889341adc3e89dc9e23ce5bcd9c9944579..da4ed87c9c6f6724010bc9bee9041eef456fe25e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.ComponentModel;
index fd48f29e043f29c6702eb840c786f9434b936e8e..85f30115ba4edb93a859e240ec80ad488c5edc84 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //
 // Enables a user to edit CommandText, OrderBy, Select, and
 // Where properties and parameters
index 83cd536ab50bcc46c0cd895fa6a1f2c21342a25e..4ae9440329d9948750e05e12e3524377d8242bca 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //
 // Containing form for the wizard panels
 //------------------------------------------------------------------------------
index 4e664aa3294c20e340b89e226e0a7734493131ec..2206efbf87aaa8203120a8d7af775396896097ff 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 using System.Collections;
 using System.Data;
index 3467d4621405fff463cff9e97be1f09b55ac9b2c..fea3d8fac3b3e0ecfc00bc31e4c7f54af32d5fbe 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System;
index fcd3e820f51e690190aa0325c922c6a967c10931..25d42e05031de4c3148c4ded6b1cea5bd71affc9 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System;
index f7a25c7abfb2aaca13905db3ffcff3dbfae72f97..d61fc0f3a73076c35af2d63bb33a2b9d09a0f017 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System;
index 0ca68d843b0dbf85c36b56ee42ace16e0092925a..fbd461cd8d5dbc4924e894b55c1a24baa9d05591 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System;
index ca925042fc341140b04ef1c65cfc26c0c408d8ea..a21300b6939936ab756ed7786ecd7646e709f8de 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //
 // Helper methods for UI functionality like displaying dialogs
 //------------------------------------------------------------------------------
index 371f73057a84c0f44584202b262b0e33a934d77c..c8dadbce8ab035971382d68db3a226bb31a5af77 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System;
index 6aecc439a4f23563cf0dc4dcd4662fae5454e118..4374823c05fd1251947ac62beb4e36fa08ea408d 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System;
index 4e30056bf7c867fcdec99c78348e3afbb8245d45..a77f7e065bba72c9c0bb96318b2e005364cfe882 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System;
index 3114cbef76312f4f162eb616c8caea53f0de9845..f0971e34d2169e54362b6325577aca419136cf38 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Collections;
index b566079127615647312c1ac29aec684bb31f1524..c3ff8c1e14ca01489871d76a5d505bb75ea970f2 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner objsdev
 //---------------------------------------------------------------------
 
index c0fbdfb66d78ffabfc9428f5a5ba3cf3eadcf6af..c19dbcb822ba84e4b5f28fed31dc44184387e41c 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner objsdev
 //---------------------------------------------------------------------
 
index 09edc5e625fc625846d08abec241d50513c84640..c89ec893dc25d057daa51e1cfb5de7e24c9a440e 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index f92ab5ee5ddefdd64dbc0c85ded8a520b808ea51..2e639d2c124e3227ae4d7e782ccb626ebebb5cbd 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner objsdev
 //---------------------------------------------------------------------
 using System;
index d0a9eb119616152a4281f4d924dc67ffd132663e..a39034e814c360ec2e1d3e6ca947c2f42f25f6c4 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner objsdev
 //---------------------------------------------------------------------
 using System;
index 913b1580082c54b78d680f473c7cc9b264ff88f9..e53faa0c24171873703ee1bc10589425fa00d31c 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner objsdev
 //---------------------------------------------------------------------
 using System;
index c02df2400dc381ede4756fb1e62b36dfeba2a4e4..a1f0cbc1ebca3b0b8f03c0d3e7668673e5cf9c81 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index ebca39ae4343d88da964756847d3a00c76c951cd..21cecb80459684b8db5196bb80113778cab18735 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Web.UI.WebControls
index 90033972dc2cbf4521bcfb5344cb0c3c8eade7b6..065d0f8039874948b0bc4e737264f65789251756 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 using System;
index 132dc52f0921c103aae9624a48cb168699173d09..1b1f06ab3d4f421d6cd2a5ecbe74a37462704ac9 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner objsdev
 //---------------------------------------------------------------------
 
index 781a35ec02b865e4975d4b0d266ba9f976c1cffe..2e5c1656148f8a6d8943fe11664c255a94e158e6 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner objsdev
 //---------------------------------------------------------------------
 using System;
index 315148ec4b6de6dbe10ea2e7de70447632b3df75..2560d5e2ea62f3f2b6c15a2d346a99bb217e5110 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections;
 using System.Collections.Generic;
index f8108d339c133bbb60eaf575e8a6607915ac42af..6b285402c0f4749aafc96e1348e8f571671f7fb8 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
index a6f45854e147fe8197895be04fb02b2af297badc..88460b1e61eca3a1de9501993b8c2cd3f9419827 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System.Collections;
 using System.Collections.Generic;
index dfb3b2515899216113525d7befbe4625445bc4e6..497db73023ed49993ba96b87c4136686039d020a 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 
 namespace System.Web.UI.WebControls
index 00219e431d7e71e316e7431a88b5d57ba879f7a8..0660a995a69fd3d0c4729135cc91f289ef2b697c 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Data;
index 97ac5510425f23170d800cfc43c7b642c754293f..1d8a270c4aafc8602d947a5fd72f0f9456163078 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Data;
index e66c99544a86c2ae24d187aa165eafcd3c68e682..8cc49ef33c648d330e4e58e146c918d1b02403b5 100644 (file)
@@ -3,8 +3,8 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //---------------------------------------------------------------------
 using System;
 using System.Data;
index 218f1da608d27645354e99d30955284976d34646..94b2b327ea7d59506f991c4313f127547c73f55f 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 
 using System;
index ece6b3f21421a9c3f3baa9c4c208a1f4dc46eacd..529367d048244e1a3e2dba137af3b4c887c92980 100644 (file)
@@ -3,8 +3,8 @@
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
-// @backupOwner Microsoft
+// @owner       [....]
+// @backupOwner [....]
 //------------------------------------------------------------------------------
 using System;
 using System.ComponentModel;
index cd03f842f21da20892eef53217158292a4e7a23a..1df13685dd3fb36d6d3fdfaf3e30e0e9d9f6b4b6 100644 (file)
@@ -3,7 +3,7 @@
 //      Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
 //
-// @owner       Microsoft
+// @owner       [....]
 // @backupOwner objsdev
 //---------------------------------------------------------------------
 using System;
index 0cedd02d5524e8739c51f2d1c4ef646ceb46f4c7..45b862eda3a4a3bdb819532581a2764e61f27264 100644 (file)
@@ -441,9 +441,9 @@ namespace Microsoft.VSDesigner.WCFModel
             }
             catch (Exception ex)
             {
-                // fatal error... (workaround for 
-
-
+                // fatal error... (workaround for bug #135242)
+                // We want to convert fatal error exception to a normal code generator error message,
+                // so the user could find information from pervious errors to find KB topic.
                 proxyGenerationErrors.Add(new ProxyGenerationError(
                                     ProxyGenerationError.GeneratorState.GenerateCode,
                                     String.Empty,
@@ -1252,7 +1252,7 @@ namespace Microsoft.VSDesigner.WCFModel
             if (serializerType == ClientOptions.ProxySerializerType.Auto && ContainsHttpBindings(metadataSections))
             {
                 // NOTE: HTTP Get/Post binding indicates an old web service. We use XmlSerializer to prevent generating dup classes.
-                // Please check devdiv 
+                // Please check devdiv bug 94078
                 serializerType = ClientOptions.ProxySerializerType.XmlSerializer;
             }
 
index c70ccff6906020fb2c3bafd47ef997f6468db57f..93deb03db38fd033639736ffaf1f130c4ce6631d 100644 (file)
@@ -526,8 +526,8 @@ namespace System.Web.Handlers {
                 }
             }
             else {
-                // 
-
+                // Bug DevDiv #175061, we don't want to force any encoding here and let the default
+                // encoding apply no matter what the incoming scripts might have been encoded with.
                 response.Write(script.ToString());
             }
         }
index 28d28964e191f92f04eb0890ba17af8f3fca9c83..97d49938441c59875fb28892795dbca21f4d9855 100644 (file)
@@ -13,13 +13,13 @@ namespace System.Web.Script.Services {
 
         internal PageClientProxyGenerator(IPage page, bool debug)
             : this(VirtualPathUtility.MakeRelative(page.Request.Path, page.Request.FilePath), debug) {
-            // Dev10 
-
-
-
-
-
-
+            // Dev10 Bug 597146: Use VirtualPathUtility to build a relative path from the path to the file.
+            // Previously just Page.Request.FilePath was used, which was for example, /app/foo/page.aspx,
+            // but this breaks with cookieless sessions since the url is /app/foo/(sessionid)/page.aspx.
+            // We need to make a relative path from page.Request.Path (e.g. /app/foo) to page.Request.FilePath
+            // (e.g. /app/foo/page.aspx) rather than just strip off 'page.aspx' with Path.GetFileName, because
+            // the url may include PathInfo, such as "/app/foo/page.aspx/pathinfo1/pathinfo2", and in that case
+            // we need the path to be ../../page.aspx
         }
 
         internal PageClientProxyGenerator(string path, bool debug) {
index 29d3f6088b26ba91045cfd505439c196b3f48a42..eee0e1f07a2df73844f1640dc3fe2e6d5d216139 100644 (file)
@@ -224,9 +224,9 @@ namespace System.Web.Script.Services {
             context.Response.AddHeader("jsonerror", "true");
             // Maintain the Charset from before. (DevDiv Bugs 158401)
             context.Response.Charset = charset;
-            //Devdiv 
-
-
+            //Devdiv Bug: 118619:When accessed remotely, an Ajax web service that throws an error doesn't return the error string in the proper format on IIS7
+            //For IIS 7.0 integrated mode we need to set TrySkipIisCustomErrors to override IIS custom error handling. This has no functional/perf impact on
+            //IIS 7.0 classic mode or earlier versions.
             context.Response.TrySkipIisCustomErrors = true;
             using (StreamWriter writer = new StreamWriter(context.Response.OutputStream, new UTF8Encoding(false))) {
                 if (ex is TargetInvocationException) {
index 15ef4492480dc001991741633cbfa443775bdbd3..5c4032bac791b5671076fc11b59080c81a9974d0 100644 (file)
@@ -95,7 +95,7 @@ using System.Web.Script;
                 }
             }
             catch {
-                // 
+                // Bug 34311: If we are unable to load the attribute, don't throw. 
             }
             return null;
         }
index 4dc972c402001e6c55688d8e8f942ff0f20a4c50..bd0283344c38cb4d73246bf49bb5f3220daa40b4 100644 (file)
@@ -97,9 +97,9 @@ namespace System.Web.UI {
             }
 
             if (!String.IsNullOrEmpty(serviceUrl)) {
-                // DevDiv 
-
-
+                // DevDiv Bug 72257:When custom path is set and loadProperties=True, we shouldn't use the default path
+                // loadProperties script always retrieves the properties from default profile provider, which is not correct if ProfileService
+                // points to non default path. Hence throw when non default path and loadProperties both are specified.
                 if (defaultServicePath == null){
                     defaultServicePath = scriptManager.ResolveClientUrl("~/" + System.Web.Script.Services.WebServiceData._profileServiceFileName);
                 }
index 5533fd3dcf66f9b3f6d5a1be518c54d50e7b5cad..d86c29fd1785139c15265c8f4481055887be26dd 100644 (file)
@@ -84,9 +84,9 @@ namespace System.Web.UI {
 
             bool pathSpecified = !String.IsNullOrEmpty(serviceUrl);
             if (pathSpecified) {
-                // DevDiv 
-
-
+                // DevDiv Bug 71954:When loadRoles="true" and the path is set, we should not load the roles from the default path
+                // loadRoles script always retrieves the roles from default role provider, which is not correct if RolesService
+                // points to non default path. Hence throw when non default path and loadRoles both are specified.
                 if (defaultServicePath == null){
                     defaultServicePath = scriptManager.ResolveClientUrl("~/" + System.Web.Script.Services.WebServiceData._roleServiceFileName);
                 }
index 8ab1f58f399f069613cfab1bcb72dc2e5486c464..049a5452cbfa074ba66a84d261c4a4055934c460 100644 (file)
@@ -1060,8 +1060,8 @@ namespace System.Web.UI {
             // PERF: Use field directly to avoid creating List if not already created
             if (_scripts != null) {
                 foreach (ScriptReference scriptReference in _scripts) {
-                    // Fix for Dev11 
-
+                    // Fix for Dev11 Bug # 406984 : When user explicitly adds the MicrosoftAjax.[debug].js OR MicrosoftAjaxCore.[debug].js, we want to mark them as defining Sys so that
+                    // we can register the FrameworkLoadedCheck scripts after them.
                     if (scriptReference.IsAjaxFrameworkScript(this) && (scriptReference.Name.StartsWith("MicrosoftAjax.", StringComparison.OrdinalIgnoreCase) || scriptReference.Name.StartsWith("MicrosoftAjaxCore.", StringComparison.OrdinalIgnoreCase))) {
                         scriptReference.IsDefiningSys = true;
                         _scriptPathsDefiningSys.Add(scriptReference.EffectivePath);
index 408bf43925aa455847f62ad7ceced0d6c60613d1..01a24eb4bf8a138371c0eb6feb9527aa1b0ce063 100644 (file)
@@ -85,7 +85,7 @@ namespace System.Web.Mobile
         {
             String path;
 
-            // Make sure the relative path is not a physical path (
+            // Make sure the relative path is not a physical path (bug 73641)
             FailIfPhysicalPath(relative);
 
             if (IsRooted(relative))
@@ -99,7 +99,7 @@ namespace System.Web.Mobile
             else
             {
                 // If the relative path starts with "~/" or "~\", treat it as app root
-                // relative (
+                // relative (bug 68628)
                 if (relative.Length >=3 && relative[0] == appRelativeCharacter && (relative[1] == '/' || relative[1] == '\\'))
                 {
                     String appPath = HttpRuntime.AppDomainAppVirtualPath;
index 51781d641665bdf2ccfcda45eb9a8cbb55dd9bd4..0da1292575115387d327d0c2b20ab8136c7280d9 100644 (file)
@@ -409,7 +409,7 @@ namespace System.Web.UI.MobileControls.Adapters.XhtmlAdapters
             Style labelStyle = Control.LabelStyle;
             Color foreColor = (Color)style[Style.ForeColorKey, true];
 
-            // Note: table width is not supported in DTD (the text of the rec says it's supported; a 
+            // Note: table width is not supported in DTD (the text of the rec says it's supported; a bug in the rec).
             ClearPendingBreakIfDeviceBreaksOnBlockLevel(writer); // we are writing a block level element in all cases.
             ConditionalEnterLayout(writer, Style);
             RenderOpeningListTag(writer, "table");
index 36cd8f5632fa6e30015b6cf2997fc8d7483c3937..7ef342bd429463b71598e918a17c1edde7aea114 100644 (file)
@@ -1115,7 +1115,7 @@ namespace System.Web.UI.Design.MobileControls
                 Debug.Assert(
                     (_choicePropertyFilter == null)
                     || (_runtimeChoice == _choicePropertyFilter.RuntimeChoice),
-                    "Local runtime choice object out of sync."
+                    "Local runtime choice object out of [....]."
                 );
                 return _runtimeChoice;
             }
index b4d35c7c1dc7e65f98b172276e6ee3f3542559cf..7c5228de431fd28240fc29393544344ac582d992 100644 (file)
@@ -150,7 +150,7 @@ namespace System.Web.UI.Design.MobileControls
             Debug.Assert(e.CancelEdit == false);
 
             // this happens when the label is unchanged after entering and exiting
-            // label editing mode - bizarre behavior. this may be a 
+            // label editing mode - bizarre behavior. this may be a bug in treeview
             if (null == e.Label)
             {
                 return;
index da99d706beca19572dc067f5400c1541209bd036..5eb1668d1810120448a92e4624286d4f318d75dc 100644 (file)
@@ -674,7 +674,7 @@ namespace System.Web.UI.Design.MobileControls
             Debug.Assert(e.CancelEdit == false);
 
             // this happens when the label is unchanged after entering and exiting
-            // label editing mode - bizarre behavior. this may be a 
+            // label editing mode - bizarre behavior. this may be a bug in treeview
             if (null == e.Label)
             {
                 return;
index ca56237cd554f780b404313421939cf2c7e6c1c3..86ee1f1ab2b56e85671240e90735c2930fee6132 100644 (file)
@@ -168,7 +168,7 @@ namespace System.Web.UI.Design.MobileControls.Util
         }
     }
 
-    // Copied from ndp\fx\src\Designer\Microsoft\System\Microsoft\Design\RTLAwareMessageBox.cs
+    // Copied from ndp\fx\src\Designer\[....]\System\[....]\Design\RTLAwareMessageBox.cs
     [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
     internal sealed class RTLAwareMessageBox {
 
index c44549c4dd3757b58224deb94725ad627ea9c6d5..f8d091ccb54d4ced2a3c2a0c81828881d0c9e418 100644 (file)
@@ -6,7 +6,7 @@
 
 // MSHTMLHost.cs
 //
-// 12/17/98: Created: Microsoft
+// 12/17/98: Created: [....]
 //
 
 namespace System.Web.UI.Design.MobileControls.Util {
@@ -210,7 +210,7 @@ namespace System.Web.UI.Design.MobileControls.Util {
         }
 
         public virtual void OnUIDeactivate(int fUndoable) {
-            // NOTE, Microsoft, 7/99: Don't return E_NOTIMPL. Somehow doing nothing and returning S_OK
+            // NOTE, [....], 7/99: Don't return E_NOTIMPL. Somehow doing nothing and returning S_OK
             //    fixes trident hosting in Win2000.
         }
 
@@ -245,7 +245,7 @@ namespace System.Web.UI.Design.MobileControls.Util {
         }
 
         public virtual void SetActiveObject(NativeMethods.IOleInPlaceActiveObject pActiveObject, string pszObjName) {
-            // NOTE, Microsoft, 7/99: Don't return E_NOTIMPL. Somehow doing nothing and returning S_OK
+            // NOTE, [....], 7/99: Don't return E_NOTIMPL. Somehow doing nothing and returning S_OK
             //    fixes trident hosting in Win2000.
             // throw new COMException(String.Empty, NativeMethods.E_NOTIMPL);
         }
index 26d2ff6ddfed0e0f2f7284caa90c75c909f18653..afa31dc95415abc40ec1d2d28fa3a839bc6c43f8 100644 (file)
@@ -1290,7 +1290,7 @@ namespace System.Web.UI.MobileControls
             }
         }
 
-        // NOTE: Make sure this stays in sync with Page.PageRegisteredControlsThatRequirePostBackKey
+        // NOTE: Make sure this stays in [....] with Page.PageRegisteredControlsThatRequirePostBackKey
         private const string PageRegisteredControlsThatRequirePostBackKey = "__ControlsRequirePostBackKey__";
         private bool CheckEmptyViewState(Object viewState)
         {
@@ -1441,7 +1441,7 @@ namespace System.Web.UI.MobileControls
 
         private byte[] GetMacKeyModifier()
         {
-            //NOTE:  duplicate of the version in objectstateformatter.cs, keep in sync
+            //NOTE:  duplicate of the version in objectstateformatter.cs, keep in [....]
 
             // Use the page's directory and class name as part of the key (ASURT 64044)
             // We need to make sure that the hash is case insensitive, since the file system
index d0fae603e93ba6e6ee91f8ff753a5e5d5c21d917..656537ad4d1992778b6025d504b21b0d13d5ee40 100644 (file)
@@ -948,7 +948,7 @@ namespace System.Web.UI.MobileControls
             if (IsTrackingViewState)
             {
                 _items = null;
-                // avoid view state being out of sync with fields.
+                // avoid view state being out of [....] with fields.
                 _ignoreFieldsItemsViewModeViewState = true;
                 if (fieldAddedOrRemoved)
                 {
index da3b9fbc6001e651d02ec26eb94a5e4017b712b4..faba8d30920daf91e2503abaa0a9131f24b24f58 100644 (file)
@@ -27,7 +27,7 @@ namespace System.Web.UI.MobileControls
      * arise. The core issue behind most of these is how to handle the user 
      * clicking the Back button. When the user does this, there is no corresponding
      * notification to the server, and the client and server session state are thrown
-     * out of sync
+     * out of [....]
      *
      * This class attempts to alleviate this by storing a small history of view states
      * in session data. 
index 5ae94501893e9c39945e982f158024e2156032b5..687a920cf3098218fbd17ae34324c2c8a3aa3263 100644 (file)
@@ -374,7 +374,7 @@ namespace System.Web.Services.Description {
             foreach (XmlMembersMapping member in soapMembers)
                 soapExporter.ExportMembersMapping(member);
 
-            // NOTE, Microsoft, we are sharing the SoapInclude and XmlInclude attributes of the 
+            // NOTE, [....], we are sharing the SoapInclude and XmlInclude attributes of the 
             // class among ALL classes generated, This is probably OK, since doing to per 
             // class would probably result in the same set of includes if the user
             // has object as a return value (meaning 'all' types are OK).
@@ -1076,7 +1076,7 @@ namespace System.Web.Services.Description {
                 return true;
             }
             else if (soapBindingStyle == SoapBindingStyle.Document) {
-                // NOTE, Microsoft.  WSDL doesn't really let us figure out whether a document is
+                // NOTE, [....].  WSDL doesn't really let us figure out whether a document is
                 // in fact a struct containing parameters, so we apply a little heuristic here
                 // in order to produce the appropriate programming model.
                 hasWrapper = (parts.Length == 1 && string.Compare(parts[0].Name, "parameters", StringComparison.Ordinal) == 0);
index 30527d5c5ad77580bac8f90351fc1f07ea61acf4..48bfca053d8dda2eabf5c55ee581aeb524a70c5d 100644 (file)
@@ -36,7 +36,7 @@ namespace System.Web.Services.Discovery {
         public DiscoveryDocument() {
         }
 
-        // NOTE, Microsoft: This property is not really ignored by the xml serializer. Instead,
+        // NOTE, [....]: This property is not really ignored by the xml serializer. Instead,
         // the attributes that would go here are configured in WebServicesConfiguration's
         // DiscoveryDocumentSerializer property.
         /// <include file='doc\DiscoveryDocument.uex' path='docs/doc[@for="DiscoveryDocument.References"]/*' />
index 097e213372828f8fcdfaa5f181438d2f4cb119d6..f97304c06c177edbcb0105de5eef906d2d1d536e 100644 (file)
@@ -66,7 +66,7 @@ namespace System.Web.Services.Discovery {
         public override string DefaultFilename {
             get {
                 string filename = FilenameFromUrl(Url);
-                return Path.ChangeExtension(filename, ".disco");        // [Microsoft] change default extension
+                return Path.ChangeExtension(filename, ".disco");        // [[....]] change default extension
             }
         }
 
index 863998aafd38019e5900c1c5734a27c90cf3c11c..17f470547455500182c36b3cee0979eb60d764d8 100644 (file)
@@ -140,7 +140,7 @@ namespace System.Web.Services.Discovery {
 
 
         // -------------------------------------------------------------------------------
-        // Calculate root ADSI virtual directory name (func by 'Microsoft').
+        // Calculate root ADSI virtual directory name (func by '[....]').
         private string GetWebServerForUrl(string url) {
             Uri uri = new Uri(url);
             DirectoryEntry w3Service = new DirectoryEntry("IIS://" + uri.Host + "/W3SVC");
index f06508a76d328dd0966db9245e8c84defa4e9183..671183a28c64186f8627a64668716a4b5183c935 100644 (file)
@@ -90,7 +90,7 @@ namespace System.Web.Services.Protocols {
         ///    <para>[To be supplied.]</para>
         /// </devdoc>
         protected WebClientProtocol() {
-            this.timeout = 100000; // should be kept in sync with HttpWebRequest.Timeout default (see private WebRequest.DefaultTimeout)
+            this.timeout = 100000; // should be kept in [....] with HttpWebRequest.Timeout default (see private WebRequest.DefaultTimeout)
         }
 
         internal WebClientProtocol(WebClientProtocol protocol) {
index 1e3cb1b68c44fa5a8375319b18e99fd0f1541846..1b21ea69dcda907c62e1607ef2ff26d3126bb4d4 100644 (file)
@@ -20,7 +20,7 @@ namespace System.Web.Services.Protocols {
     ///    <para>[To be supplied.]</para>
     /// </devdoc>
     public enum LogicalMethodTypes {
-        /// <include file='doc\LogicalMethodInfo.uex' path='docs/doc[@for="LogicalMethodTypes.Sync"]/*' />
+        /// <include file='doc\LogicalMethodInfo.uex' path='docs/doc[@for="LogicalMethodTypes.[....]"]/*' />
         /// <devdoc>
         ///    <para>[To be supplied.]</para>
         /// </devdoc>
@@ -362,7 +362,7 @@ namespace System.Web.Services.Protocols {
         ///    <para>[To be supplied.]</para>
         /// </devdoc>
         public ICustomAttributeProvider CustomAttributeProvider {
-            // Custom attributes are always on the XXX (sync) or BeginXXX (async) method.
+            // Custom attributes are always on the XXX ([....]) or BeginXXX (async) method.
             get { return methodInfo; }
         }
 
index 0d388dd5e64b446b3329ffd7499113fed45f78e4..846bd630e3d024b641b4b8444801ad05336b5647 100644 (file)
@@ -107,7 +107,7 @@ namespace System.Web.Services.Protocols {
         }
 
         /*
-        // Microsoft: adapted from UrlEscapeStringUnicode below
+        // [....]: adapted from UrlEscapeStringUnicode below
         internal static string EscapeStringUnicode(string s) {
             int l = s.Length;
             StringBuilder sb = new StringBuilder(l);
@@ -126,7 +126,7 @@ namespace System.Web.Services.Protocols {
         }
         */
 
-        // Microsoft: copied from System.Web.HttpUtility
+        // [....]: copied from System.Web.HttpUtility
         internal static string UrlEscapeStringUnicode(string s) {
             int l = s.Length;
             StringBuilder sb = new StringBuilder(l);
index f3c23b9359eae02332c1d56ded09cd8552f3fbfd..1e77558f94d2dc16c8a03bb2b7361f7b8f2c746d 100644 (file)
@@ -59,7 +59,7 @@ namespace System.Web.Services.Protocols {
         /// <devdoc>
         ///    <para>[To be supplied.]</para>
         /// </devdoc>
-        // NOTE, Microsoft: The SOAP 1.1 is unclear on whether the detail element can or should be qualified.
+        // NOTE, [....]: The SOAP 1.1 is unclear on whether the detail element can or should be qualified.
         // Based on consensus about the intent, we will not qualify it.
         public static readonly XmlQualifiedName DetailElementName = new XmlQualifiedName(Soap.Element.FaultDetail, "");
 
@@ -191,9 +191,9 @@ namespace System.Web.Services.Protocols {
             actor = (string)list["actor"];
             role = (string)list["role"];
             
-            // 
-
-
+            // Bug: 323493: XmlNode is not serializable, and I don't think we want to really want to create
+            // an XmlDocument just to read a XmlNode from string to get the deserialized instance back.
+            // detail = (XmlNode)list["detail"];
 
             subCode = (SoapFaultSubCode)list["subCode"];
             lang = (string)list["lang"];
@@ -280,9 +280,9 @@ namespace System.Web.Services.Protocols {
             list["actor"] = Actor;
             list["role"] = Role;
             
-            // 
-
-
+            // Bug: 323493: XmlNode is not serializable, and I don't think we want to really want to create
+            // an XmlDocument just to read a XmlNode from string to get the deserialized instance back.
+            // list["detail"] = Detail;
             
             list["subCode"] = SubCode;
             list["lang"] = Lang;
index 8a2756ec6c8a13961435bef511aef6dae8c82025..47ceee67bd5751795e55e6503da3441f082d94b4 100644 (file)
@@ -91,7 +91,7 @@ namespace System.Web {
         // Overload used only for deducing ETW parameters; use the public entry point instead.
         //
         // !! WARNING !!
-        // The logic in RequestEnteredAspNetPipelineImpl must be kept in sync with these parameters, otherwise
+        // The logic in RequestEnteredAspNetPipelineImpl must be kept in [....] with these parameters, otherwise
         // type safety violations could occur.
         [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "ETW looks at this method using reflection.")]
         [Event((int)Events.RequestEnteredAspNetPipeline, Level = EventLevel.Informational, Task = (EventTask)Tasks.Request, Opcode = EventOpcode.Send, Version = 1)]
@@ -118,7 +118,7 @@ namespace System.Web {
 
             fixed (char* pHttpVerb = httpVerb) {
                 // !! WARNING !!
-                // This logic must be kept in sync with the ETW-deduced parameters in RequestStarted,
+                // This logic must be kept in [....] with the ETW-deduced parameters in RequestStarted,
                 // otherwise type safety violations could occur.
                 const int EVENTDATA_COUNT = 3;
                 EventData* pEventData = stackalloc EventData[EVENTDATA_COUNT];
@@ -141,7 +141,7 @@ namespace System.Web {
         // Overload used only for deducing ETW parameters; use the public entry point instead.
         //
         // !! WARNING !!
-        // The logic in RequestStartedImpl must be kept in sync with these parameters, otherwise
+        // The logic in RequestStartedImpl must be kept in [....] with these parameters, otherwise
         // type safety violations could occur.
         [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "ETW looks at this method using reflection.")]
         [Event((int)Events.RequestStarted, Level = EventLevel.Informational, Task = (EventTask)Tasks.Request, Opcode = EventOpcode.Start, Version = 1)]
index f402d77d87f3566556ab5f89aaba8ef0987ce59a..50d1538c9b09b99f425877ad7db079c58ed56df9 100644 (file)
@@ -117,11 +117,11 @@ namespace System.Web {
             Interlocked.Increment(ref _state.VoidAsyncOutstandingOperationCount);
         }
 
-        // Dev11 
-
-
-
-
+        // Dev11 Bug 70908: Race condition involving SynchronizationContext allows ASP.NET requests to be abandoned in the pipeline
+        //  
+        // When the last completion occurs, the _pendingCount is decremented and then the _lastCompletionCallbackLock is acquired to get
+        // the _lastCompletionCallback.  If the _lastCompletionCallback is non-null, then the last completion will invoke the callback;
+        // otherwise, the caller of PendingCompletion will handle the completion.
         internal override bool PendingCompletion(WaitCallback callback) {
             return _state.Helper.TrySetCompletionContinuation(() => callback(null));
         }
index a0e40fb6478c886b920ac13f395a5296e32982ec..32b120a22ebf417b4538cd835f3d1b755ce814cc 100644 (file)
@@ -111,7 +111,7 @@ namespace System.Web.Caching {
 
             // Prevent a conflict between using SQL9 outputcache and an explicit 
             // SQL9 SqlCacheDependency at the same time.  See VSWhidey 396429 and
-            // the attached email in the 
+            // the attached email in the bug.
             if (context != null && context.SqlDependencyCookie != null &&  // That means We have already setup SQL9 dependency for output cache
                 sqlCmd.NotificationAutoEnlist) {    // This command will auto-enlist in that output cache dependency
                 throw new HttpException(SR.GetString(SR.SqlCacheDependency_OutputCache_Conflict));
@@ -868,7 +868,7 @@ namespace System.Web.Caching {
 
                         if (obj == null) {
                             Debug.Assert(!dbState._tables.ContainsKey(tableName), 
-                                        "DatabaseNotifStae._tables and internal cache keys should be in-sync");
+                                        "DatabaseNotifStae._tables and internal cache keys should be in-[....]");
                             
                             Debug.Trace("SqlCacheDependencyManagerPolling", 
                                 "Add Database=" + dbState._database+ "; tableName=" + tableName + "; changeId=" + changeId);
@@ -881,7 +881,7 @@ namespace System.Web.Caching {
                         }
                         else if (changeId != (int)obj) {
                             Debug.Assert(dbState._tables.ContainsKey(tableName), 
-                                        "DatabaseNotifStae._tables and internal cache keys should be in-sync");
+                                        "DatabaseNotifStae._tables and internal cache keys should be in-[....]");
                             
                             Debug.Trace("SqlCacheDependencyManagerPolling", 
                                     "Change Database=" + dbState._database+ "; tableName=" + tableName + "; old=" + (int)obj + "; new=" + changeId);
index 845412d74cc654ae98bfc0948114a146aa350042..0b92b722dc5561513059fbb28c85105c1869a092 100644 (file)
@@ -115,7 +115,7 @@ internal abstract class BaseResourcesBuildProvider : BuildProvider {
                 }
                 finally {
                     // Put the assignment in a finally block to avoid a ThreadAbortException from
-                    // causing the created stream to not get assigned and become leaked (Dev10 
+                    // causing the created stream to not get assigned and become leaked (Dev10 bug 844463)
                     outputStream = assemblyBuilder.CreateEmbeddedResource(this, resourceFileName);
                 }
             }
@@ -141,7 +141,7 @@ internal abstract class BaseResourcesBuildProvider : BuildProvider {
         }
         finally {
             // Always close the stream to avoid a ThreadAbortException from causing the stream
-            // to be leaked (Dev10 
+            // to be leaked (Dev10 bug 844463)
             if (outputStream != null) {
                 outputStream.Close();
             }
index d416cb1d02443c8148ae3f8e02abff80f2d84e39..edd1461f5e59766ac386a216cb6da2d8c9ad9041 100644 (file)
@@ -510,12 +510,12 @@ namespace System.Web.Compilation {
                 // if ((this.__Template_TestTemplate != null)) {
                 //     // For 2.0:
                 //     this.__Template_TestTemplate.InstantiateIn(__ctrl);
-                //     // For 4.0, use a new method. This is for fixing Dev10 
-
-
-
-
-
+                //     // For 4.0, use a new method. This is for fixing Dev10 bug 776195.
+                //     this.InstantiateInContentPlaceHolder(__ctrl, this.__Template_TestTemplate);
+                // }
+                // else {
+                //     // normal sub control building code
+                // }
                 if (MultiTargetingUtil.IsTargetFramework40OrAbove) {
                     instantiateTemplateExpr = new CodeMethodInvokeExpression(new CodeThisReferenceExpression(), "InstantiateInContentPlaceHolder");
                     instantiateTemplateExpr.Parameters.Add(ctrlRefExpr);
@@ -1105,11 +1105,11 @@ namespace System.Web.Compilation {
                         BuildExtractStatementsRecursive(controlBuilder.SubBuilders, statements, topLevelStatements, linePragma, tableVarName, containerVarName);
                     }
 
-                    // Dev10 
-
-
-
-
+                    // Dev10 bug 525267
+                    // When a control defines a DefaultProperty in its ParseChildren attribute, its subBuilders are appended 
+                    // to the DefaultProperty's subbuilders, and the DefaultProperty itself is added 
+                    // as a ComplexProperty or a TemplateProperty (and not as a suBbuilder). Thus we 
+                    // also need to go through these properties as well.
                     ArrayList list = new ArrayList();
                     AddEntryBuildersToList(controlBuilder.ComplexPropertyEntries, list);
                     AddEntryBuildersToList(controlBuilder.TemplatePropertyEntries, list);
index 6525a6bef83268dc8d82689be31cf53516f19fd2..44dad1c5c54a8952909800976408ef08588aba14 100644 (file)
@@ -48,7 +48,7 @@ namespace System.Web.Compilation {
                     string version;
 
                     // If we are targeting previous versions, try loading the 2.0 version of ASP.BrowserCapsFactory
-                    // (Dev10 
+                    // (Dev10 bug 795509)
                     if (MultiTargetingUtil.IsTargetFramework40OrAbove) {
                         version = ThisAssembly.Version;
                     } else {
@@ -389,7 +389,7 @@ namespace System.Web.Compilation {
                             // If not, then we need to use the type BrowserCapabilitiesFactory35 that contains code
                             // from the 2.0 version of BrowserCapabilitiesFactory. This is because "baseType" is the 4.0 type
                             // that contains the new 4.0 definitions.
-                            // (Dev10 
+                            // (Dev10 bug 795509)
                             if (MultiTargetingUtil.IsTargetFramework40OrAbove || 
                                 baseType.Assembly == BrowserCapabilitiesCompiler.AspBrowserCapsFactoryAssembly) {
                                 _baseInstance = (BrowserCapabilitiesFactoryBase)Activator.CreateInstance(baseType);
index fcd72276bebeb98605b535b889ffd6bded91346f..9f26b6ed449d60e2c96baeff70f3bf474eaf9ecf 100644 (file)
@@ -779,7 +779,7 @@ namespace System.Web.Compilation {
             }
         }
 
-        // this method requires global lock as the part of the fix of DevDiv 
+        // this method requires global lock as the part of the fix of DevDiv bug 501777
         private static ISet<string> CallPreStartInitMethods(string preStartInitListPath, out bool isRefAssemblyLoaded) {
             Debug.Assert(PreStartInitStage == Compilation.PreStartInitStage.BeforePreStartInit);
             isRefAssemblyLoaded = false;
@@ -793,8 +793,8 @@ namespace System.Web.Compilation {
                 if (methods == null) {
                     // In case of ctlr-f5 scenario, two processes (VS and IisExpress) will start compilation simultaneously.
                     // GetPreStartInitMethodsFromReferencedAssemblies() will load all referenced assemblies
-                    // If shallow copy is enabled, one process may fail due race condition in copying assemblies (DevDiv 
-
+                    // If shallow copy is enabled, one process may fail due race condition in copying assemblies (DevDiv bug 501777) 
+                    // to fix it, put GetPreStartInitMethodsFromReferencedAssemblies() under the global lock 
                     bool gotLock = false;
                     try {
                         CompilationLock.GetLock(ref gotLock);
@@ -832,7 +832,7 @@ namespace System.Web.Compilation {
             return null;
         }
 
-        // this method requires global lock as the part of the fix of DevDiv 
+        // this method requires global lock as the part of the fix of DevDiv bug 501777
         internal static void SavePreStartInitAssembliesToFile(string path, ISet<string> assemblies) {
             Debug.Assert(assemblies != null);
             Debug.Assert(!String.IsNullOrEmpty(path));
@@ -933,7 +933,7 @@ namespace System.Web.Compilation {
                 }
                 catch {
                     // GetCustomAttributes invokes the constructors of the attributes, so it is possible that they might throw unexpected exceptions.
-                    // (Dev10 
+                    // (Dev10 bug 831981)
                 }
 
                 if (attributes == null || !attributes.Any()) {
@@ -1844,7 +1844,7 @@ namespace System.Web.Compilation {
             _localResourcesAssemblies[virtualDir] = resourceAssembly;
         }
 
-        // VSWhidbey 
+        // VSWhidbey Bug 560521
         private void EnsureFirstTimeDirectoryInitForDependencies(ICollection dependencies) {
             foreach (String dependency in dependencies) {
                 VirtualPath dependencyPath = VirtualPath.Create(dependency);
@@ -2324,11 +2324,11 @@ namespace System.Web.Compilation {
                     // There might be changes in local resources for dependencies,
                     // so we need to make sure EnsureFirstTimeDirectoryInit gets called
                     // for them even when we already have a cache result.
-                    // VSWhidbey 
+                    // VSWhidbey Bug 560521
 
                     if (result != null) {
                         // We should only process the local resources folder after the top level files have been compiled,
-                        // so that any custom VPP can be registered first. (Dev10 
+                        // so that any custom VPP can be registered first. (Dev10 bug 890796)
                         if (_compilationStage == CompilationStage.AfterTopLevelFiles && result.VirtualPathDependencies != null) {
                             EnsureFirstTimeDirectoryInitForDependencies(result.VirtualPathDependencies);
                         }
@@ -2942,8 +2942,8 @@ namespace System.Web.Compilation {
             bool createdDirectory = false;
 
             foreach (FileData fileData in FileEnumerator.Create(fromDir)) {
-                // Windows OS 
-
+                // Windows OS Bug 1981578
+                // Create a new directory only if there is something in the directory.
                 if (!createdDirectory)
                     Directory.CreateDirectory(toDir);
                 createdDirectory = true;
@@ -2966,7 +2966,7 @@ namespace System.Web.Compilation {
                     continue;
 
                 // Do not copy the file to the target folder if it has been already
-                // marked for deletion - Dev10 
+                // marked for deletion - Dev10 bug 676794
                 if (DiskBuildResultCache.HasDotDeleteFile(fileData.FullName)) {
                     continue;
                 }
index c1b0d99dab016852383e4462ed20771689096bfa..4de6d695484fdd69c92a508cd2254a89823d2e06 100644 (file)
@@ -765,10 +765,10 @@ internal class WebDirectoryBatchCompiler {
         }
 
         else {
-            // devdiv 
-
-
-
+            // devdiv bug 666936: ASP.NET compilation related deadlock in Antares scenario. 
+            // The main (current) thread holds a global compilation lock. CacheAssemblyResults and CacheCompileErrors may 
+            // also require the global compilation lock in case of removing old data and thus may lead to deadlock.
+            // Fix: using dictionaries to collect the build results from parallel threads and do caching in the main thread.
             ConcurrentDictionary<AssemblyBuilder, CompilerResults> buildResults = new ConcurrentDictionary<AssemblyBuilder, CompilerResults>();
             ConcurrentDictionary<AssemblyBuilder, CompilerResults> buildErrors = new ConcurrentDictionary<AssemblyBuilder, CompilerResults>();
             
index a47485862c8e89861bf87c028b65472488930e94..c3b929cb1f1e8d0a5fdf3d2bf08a25629055c615 100644 (file)
@@ -341,7 +341,7 @@ internal abstract class BuildResult {
 
         // Don't check more than every two seconds
         DateTime now = DateTime.Now;
-        // Due to 
+        // Due to bug 214038, CBM can be called multiple times in a very short time.
         if (now < _nextUpToDateCheck && !BuildManagerHost.InClientBuildManager) {
             Debug.Trace("BuildResult", "IsUpToDate: true since called less than 2 seconds ago. "
                 + _nextUpToDateCheck + "," + now);
@@ -503,11 +503,11 @@ internal abstract class BuildResultCompiledAssemblyBase: BuildResult {
         }
     }
 
-    // DevDiv 
-
-
-
-
+    // DevDiv Bug 98735
+    // Go through the assembly and all references (including deeper levels) to make sure that
+    // each referenced assembly exists and does not have a dot delete.
+    // If any referenced assembly is removed or marked for deletion,
+    // we invalidate the base assembly by throwing an InvalidOperationException
     private static void CheckAssemblyIsValid(Assembly a, Hashtable checkedAssemblies) {
 
         // Keep track of which assemblies we already checked so we can skip them
@@ -1036,9 +1036,9 @@ internal abstract class BuildResultNoCompileTemplateControl : BuildResult, IType
         try {
             // Create the control tree
 
-            // DevDiv 
-
-
+            // DevDiv Bug 59351
+            // Lock during the first time we initialize the control builder with the object,
+            // to prevent concurrency issues.
             if (!_initialized) {
                 lock (this) {
                     _rootBuilder.InitObject(templateControl);
index 8bf8c7a889f6dae8b394c0a2f05510160d1f5562..1e3bfd5a825792f0ccfba5b1598af3c7abe2ae06 100644 (file)
@@ -372,7 +372,7 @@ internal class MemoryBuildResultCache: BuildResultCache {
         // run into a situation where the dependency has changed just
         // when the cache item is about to get inserted, resulting in 
         // the callback deleting only the dll file and leaving behind the 
-        // pdb file. (Dev10 
+        // pdb file. (Dev10 bug 846606)
         var pdbPath = Path.ChangeExtension(f.FullName, ".pdb");
         if (File.Exists(pdbPath)) {
             DiskBuildResultCache.TryDeleteFile(new FileInfo(pdbPath));
index 6e271ae70220412a71e3d7428303675f36a4c793..5872f0ea61c38d7a8ee1506b00d8548496d70d81 100644 (file)
@@ -188,7 +188,7 @@ internal static class CompilationLock {
             // Always take the BuildManager lock *before* taking the mutex, to avoid possible
             // deadlock situations (VSWhidbey 530732)
 #pragma warning disable 0618
-            //@TODO: This overload of Monitor.Enter is obsolete.  Please change this to use Monitor.Enter(ref bool), and remove the pragmas   -- Microsoft
+            //@TODO: This overload of Monitor.Enter is obsolete.  Please change this to use Monitor.Enter(ref bool), and remove the pragmas   -- [....]
             Monitor.Enter(BuildManager.TheBuildManager);
 #pragma warning restore 0618
             _mutex.WaitOne();
index b36f63f94a033ca7babbf899781324ccccad4c71..a11707af7b10c95f94197bb58795efed8fd17ab4 100644 (file)
@@ -333,7 +333,7 @@ namespace System.Web.Compilation {
             return buildProviders.GetBuildProviderTypes(appliesTo);
         }
 
-        // In partial trust, do not allow the CompilerDirectoryPath provider option in codedom settings (Dev10 
+        // In partial trust, do not allow the CompilerDirectoryPath provider option in codedom settings (Dev10 bug 462348)
         internal static void CheckCompilerDirectoryPathAllowed(IDictionary<string, string> providerOptions) {
             if (providerOptions == null) {
                 return;
@@ -445,10 +445,10 @@ namespace System.Web.Compilation {
             return t;
         }
 
-        // Devdiv 
-
-
-
+        // Devdiv Bug 57600
+        // We need to use the constructor with ProviderOptions to get the v3.5/v4.0 compiler that was possibly set in config.
+        // We first check if there is any providerOptions and invoke the constructor if so.
+        // Otherwise, we fall back to the default constructor.
         internal static CodeDomProvider CreateCodeDomProvider(Type codeDomProviderType) {
             CodeDomProvider codeDomProvider = CreateCodeDomProviderWithPropertyOptions(codeDomProviderType);
             if (codeDomProvider != null) {
@@ -493,7 +493,7 @@ namespace System.Web.Compilation {
                 // We need to explicitly set to v3.5, as it is possible for the
                 // user to only have specified it for one compiler but not 
                 // the other.
-                // Dev10 
+                // Dev10 bug 809212
                 providerOptions["CompilerVersion"] = "v3.5";
             }
             else {
@@ -523,7 +523,7 @@ namespace System.Web.Compilation {
                     provider = CodeDomProvider.CreateProvider(language, providerOptions);
                 }
                 // Restore the provider options if we previously manually added the compilerDirectoryPath.
-                // Otherwise, we might incorrectly invalidate the compilerDirectoryPath in medium trust (Dev10 
+                // Otherwise, we might incorrectly invalidate the compilerDirectoryPath in medium trust (Dev10 bug 550299).
                 if (addedCompilerDirectoryPath) {
                     providerOptions.Remove(CompilerDirectoryPath);
                 }
index 09ca000d3c89b1cf554723efe69a193f03a98567..f60717c509432a4c19fec13b81980db96691b46e 100644 (file)
@@ -359,7 +359,7 @@ namespace System.Web.Compilation {
         private static void ValidateCompilerVersionFor40AndAbove() {
             // Since the root web.config already specifies 4.0, we need to make sure both compilerVersions
             // are actually greater than or equal to 4.0, in case the user only sets compilerVersion=3.5
-            // for one language. (Dev10 
+            // for one language. (Dev10 bug 738202)
             ValidateCompilerVersionFor40AndAbove(GetCSharpCompilerVersion());
             ValidateCompilerVersionFor40AndAbove(GetVisualBasicCompilerVersion());
         }
index 956ea7082a209676e6f2676a65f9c8a2e60810b1..ebcce1503c3ae5e9da28467a561b4ea70b3d02ef 100644 (file)
@@ -145,7 +145,7 @@ internal class PreservationFileReader {
                     // under the same lock so to avoid bad interleaving where one process 
                     // deletes the .compiled file that another process just created, orphaning
                     // the files generated by the other process. 
-                    // (Dev10 
+                    // (Dev10 bug 791299)
                     CompilationLock.GetLock(ref gotLock);
 
                     // Give the BuildResult a chance to do some cleanup
index 5d58d0f1c293f6ce1604babba4728300562e9afe..7802a250b5671824957e2e8728937232d1fbd480 100644 (file)
@@ -49,8 +49,8 @@ internal class XsdBuildProvider: BuildProvider {
         CodeNamespace codeNamespace = new CodeNamespace(ns);
         codeCompileUnit.Namespaces.Add(codeNamespace);
 
-        // Devdiv 18365, Dev10 
-
+        // Devdiv 18365, Dev10 bug 444516 
+        // Call a different Generate method if compiler version is v3.5 or above
         bool isVer35OrAbove = CompilationUtil.IsCompilerVersion35OrAbove(assemblyBuilder.CodeDomProvider.GetType());
 
         if (isVer35OrAbove) {
@@ -72,8 +72,8 @@ internal class XsdBuildProvider: BuildProvider {
                 if (isVer35) {
                     var aName = a.GetName();
                     if (aName.Name == "System.Data.DataSetExtensions") {
-                        // Dev10 
-
+                        // Dev10 Bug 861688 - We need to specify v3.5 version so that the build system knows to use the v3.5 version
+                        // because the loaded assembly here is always v4.0
                         aName.Version = new Version(3, 5, 0, 0);
                         CompilationSection.RecordAssembly(aName.FullName, a);
                     }
index 1b1ce790aef6fd4954cc8db81399529cdc5b9f01..5dd5d4b54fdf4fc4e56425dd1db1e8902311c091 100644 (file)
@@ -133,7 +133,7 @@ namespace System.Web.Configuration {
                     else {
                         // If we are targeting pre-4.0, we should be using version 2.0 of the assembly
                         // ASP.BrowserCapsFactory, so we need to read the token file from the 2.0 path.
-                        // (Dev10 
+                        // (Dev10 bug 795509)
                         string subPath = @"config\browsers\" + _publicKeyTokenFileName;
                         publicKeyTokenFile = ToolLocationHelper.GetPathToDotNetFrameworkFile(subPath, TargetDotNetFrameworkVersion.Version20);
                     }
index 7cd78d448a75d565c461cc656924a837e408bfce..e2f95210c405d483377828dac0bc4f1d361fdd8c 100644 (file)
@@ -404,7 +404,8 @@ namespace System.Web.Configuration {
                 return null;
             }
 
-            Regex regex = new Regex("\\.NET CLR (?'clrVersion'[0-9\\.]*)");
+            // Adding timeout for Regex in case of malicious UA string causing DoS
+            Regex regex = RegexUtil.CreateRegex("\\.NET CLR (?'clrVersion'[0-9\\.]*)", RegexOptions.None);
             MatchCollection matches = regex.Matches(ua);
 
             if (matches.Count == 0) {
index f3ea42245b8934e5ee5e8faec3a2f645795acc34..a58f233ea60799ef6a0cc32b06e1c60d4037024f 100644 (file)
@@ -48,6 +48,7 @@ namespace System.Web.Configuration {
                    minRequiredPasswordLength="int"            The minimum number of characters required in a password
                    minRequiredNonAlphanumericCharacters="int" The minimum number of non-alphanumeric characters that are required in a password
                    passwordStrengthRegularExpression="string" The regular expression used to test the password strength
+                   passwordStrengthRegexTimeout="int"         The timeout in milliseconds for the regex we use to check password strength 
         -->
 
         <membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="15" >
@@ -60,6 +61,7 @@ namespace System.Web.Configuration {
                     minRequiredPasswordLength="7"
                     minRequireNonAlphanumericCharacters="1"
                     passwordStrengthRegularExpression=""
+                    passwordStrengthRegexTimeout="2000"
                     enablePasswordRetrieval="false"
                     enablePasswordReset="true"
                     requiresQuestionAndAnswer="true"
index 2b1c78a28ffbc44cceb9b298e461bee80de80df4..d3727195d658d2984dc449d719ac94879e16d551 100644 (file)
@@ -233,7 +233,7 @@ namespace System.Web.Configuration {
                     cacheInfo = new MapPathCacheInfo();
                     // Add to the cache.
                     // No need to have a lock here. UtcAdd will add the entry if it doesn't exist. 
-                    // If it does exist, the existing value will be returned (Dev10 
+                    // If it does exist, the existing value will be returned (Dev10 Bug 755034).
                     object existingEntry = HttpRuntime.CacheInternal.UtcAdd(
                         cacheKey, cacheInfo, null, Cache.NoAbsoluteExpiration, slidingExpiration, CacheItemPriority.Default, null);
                     if (existingEntry != null) {
index b095d7c557b61ee217d661b439fa644b479f90e2..39dccac1a52832c2915ebd435b8eb8ba753ad316 100644 (file)
@@ -231,7 +231,7 @@ namespace System.Web.Configuration {
                     cacheInfo = new MapPathCacheInfo();
                     // Add to the cache.
                     // No need to have a lock here. UtcAdd will add the entry if it doesn't exist. 
-                    // If it does exist, the existing value will be returned (Dev10 
+                    // If it does exist, the existing value will be returned (Dev10 Bug 755034).
                     object existingEntry = HttpRuntime.CacheInternal.UtcAdd(
                         cacheKey, cacheInfo, null, Cache.NoAbsoluteExpiration, slidingExpiration, CacheItemPriority.Default, null);
                     if (existingEntry != null) {
index 34d9ce4cda7a3ba496bbb555e642450fc5bebbfc..2d1059b687bec18ae3100819efad9676ece22263 100644 (file)
@@ -88,7 +88,8 @@ namespace System.Web.Configuration {
                 target = String.Empty;
             }
 
-            Regex regex = new Regex(regexExpression, RegexOptions.ExplicitCapture);
+            // Adding timeout for Regex in case of malicious string causing DoS
+            Regex regex = RegexUtil.CreateRegex(regexExpression, RegexOptions.ExplicitCapture);
             Match match = regex.Match(target);
             if(match.Success == false) {
                 return false;
index 03df795945261f8ad131e2a2c1d2cad58e90884e..c09da8b62e63fbeec931d83586a67009cdef5c08 100644 (file)
@@ -392,7 +392,7 @@ namespace System.Web.Configuration {
                 return (string)base[_propLockAttributes];
             }
             set {
-                // base.LockedAttributes.SetFromList(value); // keep the internal list in sync
+                // base.LockedAttributes.SetFromList(value); // keep the internal list in [....]
                 base[_propLockAttributes] = value;
             }
         }
index 7c7f605996aa9c0fea0f997c22e92cac5ebabd01..143b9eca9ddca4d5a26338570f5b8c58ce872fc3 100644 (file)
@@ -476,9 +476,9 @@ namespace System.Web.Configuration {
                     // with these characters. We fallback to the default GetStreamName failure behavior which is to
                     // return null.
 
-                    // Dev10 
-
-
+                    // Dev10 Bug 835901: '?' (%3F), '*' (%2A), and ':' (%3A) are valid in a URL.  We need to return null
+                    // if the path contains one of these characters.  Instead of explicitly checking for these characters, 
+                    // we will rely on Path.Combine and Path.GetFullPath to throw when the path is invalid.
                     return CombineAndValidatePath(directory, baseName);
                 }
 
index 5691656cb249a395f3ab52f22a1b84ed5f37774d..e4b03d4752a7028638c7b89fed7946289eda792b 100644 (file)
@@ -149,7 +149,7 @@ namespace System.Web {
          }
 
         [SuppressMessage("Microsoft.Interoperability", "CA1404:CallGetLastErrorImmediatelyAfterPInvoke",
-                         Justification="Microsoft: Call to GetLastWin32Error() does follow P/Invoke call that is outside the if/else block.")]
+                         Justification="[....]: Call to GetLastWin32Error() does follow P/Invoke call that is outside the if/else block.")]
         static internal byte[] GetDacl(string filename) {
             // DevDiv #322858 - allow skipping DACL step for perf gain
             if (HostingEnvironment.FcnSkipReadAndCacheDacls) {
@@ -305,7 +305,7 @@ namespace System.Web {
             }
             else {
 #if DBG
-                // Needs the lock to sync with DebugDescription
+                // Needs the lock to [....] with DebugDescription
                 lock (_targets) {
 #endif                
                     _targets.Add(callback.Target, new FileMonitorTarget(callback, alias));
@@ -330,7 +330,7 @@ namespace System.Web {
 #endif
             if (target != null && target.Release() == 0) {
 #if DBG
-                // Needs the lock to sync with DebugDescription
+                // Needs the lock to [....] with DebugDescription
                 lock (_targets) {
 #endif                
                     _targets.Remove(callbackTarget);
@@ -1574,7 +1574,7 @@ namespace System.Web {
                     }
                 }
             }
-            // Dev10 
+            // Dev10 Bug 663511: Deletes, moves, and renames of the App_LocalResources folder may be ignored
             if (dirName.IndexOf(HttpRuntime.LocalResourcesDirectoryName, StringComparison.OrdinalIgnoreCase) > -1) {
                 return true;
             }
index 0ebbf12b54476c405f158d1f003f3f3a12e93df6..e02ad7fb551d31eaa0e5ad8730f471d3434552d7 100644 (file)
@@ -961,7 +961,7 @@ namespace System.Web.Hosting {
                     inClientBuildManager = true;
                     // The default hosting policy in VS has changed (from MultiDomainHost to MultiDomain), 
                     // so we need to specify explicitly to allow generated assemblies 
-                    // to be unloaded subsequently. (Dev10 
+                    // to be unloaded subsequently. (Dev10 bug)
                     setup.LoaderOptimization = LoaderOptimization.MultiDomainHost;
                 }
             }
index 80c0e8c69bd3266b55894dfed6cc468e29d95867..d5d2c15e352a8a9d843e51a7713ba89e1c73946c 100644 (file)
@@ -590,7 +590,7 @@ namespace System.Web.Hosting {
 
             HttpRuntime.SetShutdownReason(ApplicationShutdownReason.HostingEnvironment, "HostingEnvironment initiated shutdown");
 
-            // Avoid calling Environment.StackTrace if we are in the ClientBuildManager (Dev10 
+            // Avoid calling Environment.StackTrace if we are in the ClientBuildManager (Dev10 bug 824659)
             if (!BuildManagerHost.InClientBuildManager) {
                 new EnvironmentPermission(PermissionState.Unrestricted).Assert();
                 try {
@@ -601,7 +601,7 @@ namespace System.Web.Hosting {
                 }
             }
 
-            // waitChangeNotification need not be honored in ClientBuildManager (Dev11 
+            // waitChangeNotification need not be honored in ClientBuildManager (Dev11 bug 264894)
             if (!BuildManagerHost.InClientBuildManager) {
                 // this should only be called once, before the cache is disposed, and
                 // the config records are released.
index 2862566bee55eac38450ebf42e8e7a8f037589c1..11db9517311df13fd3dac1b168d64148dc88a659 100644 (file)
@@ -1380,7 +1380,7 @@ namespace System.Web.Hosting {
                 }
 
                 // send to unmanaged code
-                // sends are always sync now since they're buffered by IIS
+                // sends are always [....] now since they're buffered by IIS
                 FlushCore(true,
                           numFragments,
                           fragments,
@@ -2317,11 +2317,11 @@ namespace System.Web.Hosting {
             return isInRole;
         }
 
-        // Windows OS 
-
-
-
-
+        // Windows OS Bug 1726303 was "fixed" by changing SynchronizeVariables
+        // to only synchronize the IPrincipal/IHttpUser if Windows authentication
+        // was enabled.  This is incorrect behavior; for example, suppose a forms
+        // authenticated request calls TransferRequest and passes the parent IPrincipal to a
+        // child request.
         private static bool IsAuthenticationEnabled {
             get {
                 if (!s_AuthenticationChecked) {
index 965dadb44384eb89b90c80acdd9eeb8d6e893d0c..c1fd851c796a35f606d13777470aaaaa635c0d20 100644 (file)
@@ -703,9 +703,9 @@ namespace System.Web.Hosting {
         internal static extern int MgdGetTlsTokenBindingIdentifiers(
             [In] IntPtr pHandler,
             [In, Out] ref IntPtr tokenBindingHandle,
-            [Out] out IntPtr providedTokenIdentifier,
-            [Out] out uint providedTokenIdentifierSize,
-            [Out] out IntPtr referredTokenIdentifier,
-            [Out] out uint referredTokenIdentifierSize);
+            [Out] out IntPtr providedToken,
+            [Out] out uint providedTokenSize,
+            [Out] out IntPtr referredToken,
+            [Out] out uint referredTokenSize);
     }
 }
index c89ea82f2a00f973f4b30e96bdb6267a15270780..ce3d178ea98df8349b79281a9f46ddb56a0a5d73 100644 (file)
@@ -1649,7 +1649,7 @@ internal class ISAPIWorkerRequestInProc : ISAPIWorkerRequest {
     protected const int NUM_BASIC_SERVER_VARIABLES = 12; // needed on every request
     protected const int NUM_ADDITIONAL_SERVER_VARIABLES = 23; // needed when HttpRequest.ServerVariables is populated
 
-    // These constants must be kept in sync with g_szServerVariables and g_szUnicodeServerVariables in ecbdirect.cxx
+    // These constants must be kept in [....] with g_szServerVariables and g_szUnicodeServerVariables in ecbdirect.cxx
 
     protected const int LOGON_USER = 0;
     protected const int AUTH_TYPE = 1;
@@ -2407,7 +2407,7 @@ internal class ISAPIWorkerRequestInProcForIIS6 : ISAPIWorkerRequestInProc {
             CallEndOfRequestCallbackOnceAfterAllIoComplete();
         }
         else if (rc != 0 && async) {
-            // on async failure default to sync path
+            // on async failure default to [....] path
             async = false;
             
             if (!inAsyncFlush) {
index 9bc91f54b46bb3805d6da8f025ce5d85c2d45347..eff422558e332b96b845c2f140b46d0117076596 100644 (file)
@@ -179,7 +179,7 @@ namespace System.Web {
         // this is the per instance list that contains the events for each module
         private PipelineModuleStepContainer[] _moduleContainers;
 
-        // Byte array to be used by HttpRequest.GetEntireRawContent. Windows OS 
+        // Byte array to be used by HttpRequest.GetEntireRawContent. Windows OS Bug 1632921
         private byte[] _entityBuffer;
 
         // Counts the number of code paths consuming this HttpApplication instance. When the counter hits zero,
@@ -304,7 +304,7 @@ namespace System.Web {
 
         }
 
-        // Used by HttpRequest.GetEntireRawContent. Windows OS 
+        // Used by HttpRequest.GetEntireRawContent. Windows OS Bug 1632921
         internal byte[] EntityBuffer
         {
             get
@@ -769,7 +769,7 @@ namespace System.Web {
         }
 
         //
-        // Sync event hookup
+        // [....] event hookup
         //
 
 
@@ -1707,7 +1707,7 @@ namespace System.Web {
                 asyncHandler.CreateExecutionSteps(this, steps);
             }
 
-            // sync
+            // [....]
             EventHandler handler = (EventHandler)Events[eventIndex];
 
             if (handler != null) {
@@ -2398,7 +2398,7 @@ namespace System.Web {
                 Debug.Trace("PipelineRuntime", "RegisterEventSubscriptionsWithIIS: name=" + CurrentModuleCollectionKey
                             + ", type=" + httpModule.GetType().FullName + "\n");
 
-                // make sure collections are in sync
+                // make sure collections are in [....]
                 Debug.Assert(moduleInfo.Name == _currentModuleCollectionKey, "moduleInfo.Name == _currentModuleCollectionKey");
 #endif
 
@@ -2546,7 +2546,7 @@ namespace System.Web {
                 hasEvents = true;
             }
 
-            // sync
+            // [....]
             EventHandler handler = (EventHandler)Events[eventIndex];
 
             if (handler != null) {
@@ -4009,10 +4009,10 @@ namespace System.Web {
                             // a SendResponse, at which point it blocks until the SendResponse notification completes.
 
                             if (!isReEntry) { // currently we only re-enter for SendResponse
-                                // DevDiv 482614 (Sharepoint 
-
-
-
+                                // DevDiv 482614 (Sharepoint Bug 3137123)
+                                // Async completion or SendResponse can happen on a background thread while the thread that called IndicateCompletion has not unwound yet
+                                // Therefore (InIndicateCompletion == true) is not a sufficient evidence that we can use the ThreadContext stored in IndicateCompletionContext
+                                // To avoid using other thread's ThreadContext we use IndicateCompletionContext only if ThreadInsideIndicateCompletion is indeed our thread
                                 if (context.InIndicateCompletion && context.ThreadInsideIndicateCompletion == Thread.CurrentThread) {
                                     // we already have a ThreadContext
                                     threadContext = context.IndicateCompletionContext;
@@ -4087,7 +4087,7 @@ namespace System.Web {
                                         break;
                                     }
 
-                                    // sync case (we might be able to stay in managed code and execute another notification)
+                                    // [....] case (we might be able to stay in managed code and execute another notification)
                                     if (needToFinishRequest || UnsafeIISMethods.MgdGetNextNotification(wr.RequestContext, RequestNotificationStatus.Continue) != 1) {
                                         isSynchronousCompletion = true;
                                         needToComplete = true;
@@ -4151,14 +4151,14 @@ namespace System.Web {
                             if (threadContext != null) {
                                 if (context.InIndicateCompletion) {
                                     if (isSynchronousCompletion) {
-                                        // this is a sync completion on an IIS thread
+                                        // this is a [....] completion on an IIS thread
                                         threadContext.Synchronize();
                                         // Note for DevDiv 482614 fix:
                                         // If this threadContext is from IndicateCompletionContext (e.g. this thread called IndicateCompletion)
                                         // then we continue reusing this thread and only undo impersonation before unwinding back to IIS.
                                         //
                                         // If this threadContext was created while another thread was and still is in IndicateCompletion call
-                                        // (e.g. sync or async flush on a background thread from native code, not managed since isReEnty==false)
+                                        // (e.g. [....] or async flush on a background thread from native code, not managed since isReEnty==false)
                                         // then we can not reuse this thread and this threadContext will be cleaned before we leave ResumeSteps
                                         // (because needToDisassociateThreadContext was set to true when we created this threadContext)
 
@@ -4190,7 +4190,7 @@ namespace System.Web {
                                 }
                                 else if (isSynchronousCompletion) {
                                     Debug.Assert(needToDisassociateThreadContext == true, "needToDisassociateThreadContext MUST BE true");
-                                    // this is a sync completion on an IIS thread
+                                    // this is a [....] completion on an IIS thread
                                     threadContext.Synchronize();
                                     // get ready to call IndicateCompletion
                                     context.IndicateCompletionContext = threadContext;
index dc3174c8fa899c5f948b6701dd25771f56247cbe..ea274006e949383a60373ced0929b37bd1952949 100644 (file)
@@ -164,7 +164,7 @@ namespace System.Web {
                 }
             }
             else {
-                // perform a sync read
+                // perform a [....] read
                 return base.BeginRead(buffer, offset, count, callback, state);
             }
         }
index 2ec21dcb3e1ad10f201583e435673acba189999a..5cdde5d30067bf648131bb17ab7e515709b00edd 100644 (file)
@@ -773,7 +773,7 @@ namespace System.Web {
 
             Debug.Assert((_utcTimestampCreated == DateTime.MinValue && _utcTimestampRequest == DateTime.MinValue) ||
                          (_utcTimestampCreated != DateTime.MinValue && _utcTimestampRequest != DateTime.MinValue),
-                        "_utcTimestampCreated and _utcTimestampRequest are out of sync in UpdateCachedHeaders");
+                        "_utcTimestampCreated and _utcTimestampRequest are out of [....] in UpdateCachedHeaders");
 
             if (_utcTimestampCreated == DateTime.MinValue) {
                 _utcTimestampCreated = _utcTimestampRequest = response.Context.UtcTimestamp;
@@ -946,8 +946,8 @@ namespace System.Web {
                     }
                     
                     if (!omitVaryStar) {
-                        // Dev10 
-
+                        // Dev10 Bug 425047 - OutputCache Location="ServerAndClient" (HttpCacheability.ServerAndPrivate) should 
+                        // not use "Vary: *" so the response can be cached on the client
                         if (_varyByCustom != null || (_varyByParams.IsModified() && !_varyByParams.IgnoreParams)) {
                             varyByHeaders = "*";
                         }
@@ -1155,7 +1155,7 @@ namespace System.Web {
 
         internal bool   IsKernelCacheable(HttpRequest request, bool enableKernelCacheForVaryByStar) {
             return  _cacheability == HttpCacheability.Public
-                && !_hasUserProvidedDependencies // Consider (Microsoft): rework dependency model to support user-provided dependencies
+                && !_hasUserProvidedDependencies // Consider ([....]): rework dependency model to support user-provided dependencies
                 && !_hasSetCookieHeader
                 && !_noServerCaching
                 && HasExpirationPolicy()
index 5dff172707b3e0eed7536e0fdf30b9765e73be8f..4d02a0a8a8f726284a0931d2681dde864ba6c0f9 100644 (file)
@@ -730,7 +730,7 @@ namespace System.Web {
         // which doesn't fit our expected patterns and where that code likely has negative side effects.
         // 
         // This flag is respected only by AspNetSynchronizationContext; it has no effect when the
-        // legacy sync context is in use.
+        // legacy [....] context is in use.
         [EditorBrowsable(EditorBrowsableState.Advanced)]
         public bool AllowAsyncDuringSyncStages {
             get {
@@ -1313,7 +1313,7 @@ namespace System.Web {
                 return _rootedObjects;
             }
             set {
-                // Sync the Principal between the containers
+                // [....] the Principal between the containers
                 SwitchPrincipalContainer(value);
                 _rootedObjects = value;
             }
index 6466131547734e1c258fc40af1688b978b51e3c1..8858577a9a78813da90a56e84198e774070ec760 100644 (file)
@@ -53,7 +53,7 @@ namespace System.Web {
         }
 
         // This copy constructor is used by the granular request validation feature. The collections are mutable once
-        // created, but nobody should ever be mutating them, so it's ok for these to be out of sync. Additionally,
+        // created, but nobody should ever be mutating them, so it's ok for these to be out of [....]. Additionally,
         // we don't copy _response since this should only ever be called for the request cookies.
         internal HttpCookieCollection(HttpCookieCollection col)
             : base(StringComparer.OrdinalIgnoreCase) {
index 4f13464fee980e77fb97462ecff151e8f52773ae..9ad5bc288ab09d9e6a76dedf6e473bc26a2f3645 100644 (file)
@@ -3026,8 +3026,8 @@ namespace System.Web {
             _url = null;
             Unvalidated.InvalidateUrl();
 
-            // DevDiv 
-
+            // DevDiv Bug 164390: calling the worker request's RawUrl method here
+            // to ensure we cache the original request Url in Url Mapping scenarios.
             string temp = RawUrl;
 
             // remember the new path
@@ -3066,8 +3066,8 @@ namespace System.Web {
             _url = null;
             Unvalidated.InvalidateUrl();
 
-            // DevDiv 
-
+            // DevDiv Bug 164390: calling the worker request's RawUrl method here
+            // to ensure we cache the original request Url in Url Mapping scenarios.
             string temp = RawUrl;
 
             if (newPathInfo == null) {
index 07a14440e026a3fe09c01fe7f5d6f4df3540c260..b92ce62520ba19dc4df09601e85545381237d6a8 100644 (file)
@@ -726,7 +726,7 @@ namespace System.Web {
                 return _wr.BeginFlush(callback, state);
             }
 
-            // perform a sync flush since async is not supported
+            // perform a [....] flush since async is not supported
             FlushAsyncResult ar = new FlushAsyncResult(callback, state);
             try {
                 Flush(false);
@@ -752,7 +752,7 @@ namespace System.Web {
                 return;
             }
             
-            // finish sync flush since async is not supported
+            // finish [....] flush since async is not supported
             if (asyncResult == null)
                 throw new ArgumentNullException("asyncResult");
             FlushAsyncResult ar = asyncResult as FlushAsyncResult;
@@ -1368,7 +1368,7 @@ namespace System.Web {
                             // the <customErrors> element to control this behavior.
 
                             if (customErrorsSetting.AllowNestedErrors) {
-                                // The user has set the compat switch to use the original (pre-
+                                // The user has set the compat switch to use the original (pre-bug fix) behavior.
                                 goto case RedirectToErrorPageStatus.NotAttempted;
                             }
 
@@ -3284,10 +3284,10 @@ namespace System.Web {
         }
 
         private String UrlEncodeIDNSafe(String url) {
-            // 
-
-
-
+            // Bug 86594: Should not encode the domain part of the url. For example,
+            // http://Ãœbersite/Ãœberpage.aspx should only encode the 2nd Ãœ.
+            // To accomplish this we must separate the scheme+host+port portion of the url from the path portion,
+            // encode the path portion, then reconstruct the url.
             Debug.Assert(!url.Contains("?"), "Querystring should have been stripped off.");
 
             string schemeAndAuthority;
index 03161561576a4c58a3568c32128a6b6d69f48b8c..23b97ec0eefb4c4f39cb11ab4e5f20f0f3ddb94a 100644 (file)
@@ -402,11 +402,11 @@ namespace System.Web {
                     // Monitor renames to directories we are watching, and notifications on the bin directory
                     //
                     // Note that this must be the first monitoring that we do of the application directory.
-                    // There is a 
-
-
-
-
+                    // There is a bug in Windows 2000 Server where notifications on UNC shares do not
+                    // happen correctly if:
+                    //      1. the directory is monitored for regular notifications
+                    //      2. the directory is then monitored for directory renames
+                    //      3. the directory is monitored again for regular notifications
                     StartMonitoringDirectoryRenamesAndBinDirectory();
 
                     // Initialize ObjectCacheHost before config is read, since config relies on the cache
@@ -1744,7 +1744,7 @@ namespace System.Web {
         }
 
         /*
-         * Finish processing request, sync or async
+         * Finish processing request, [....] or async
          */
         private void FinishRequest(HttpWorkerRequest wr, HttpContext context, Exception e) {
             HttpResponse response = context.Response;
@@ -1899,7 +1899,7 @@ namespace System.Web {
                 catch (Exception e) {
                     Debug.Trace("AppDomainFactory", "AppDomain.Unload exception: " + e + "; Id=" + _appDomainAppId);
                     if (!BuildManagerHost.InClientBuildManager) {
-                        // Avoid calling Exception.ToString if we are in the ClientBuildManager (Dev10 
+                        // Avoid calling Exception.ToString if we are in the ClientBuildManager (Dev10 bug 824659)
                         AddAppDomainTraceMessage("Unload Exception: " + e);
                     }
                     throw;
@@ -2270,7 +2270,7 @@ namespace System.Web {
                         + ", ShutdownMessage=" + _theRuntime._shutDownMessage);
 
             if (String.IsNullOrEmpty(stackTrace) && !BuildManagerHost.InClientBuildManager) {
-                // Avoid calling Environment.StackTrace if we are in the ClientBuildManager (Dev10 
+                // Avoid calling Environment.StackTrace if we are in the ClientBuildManager (Dev10 bug 824659)
 
                 // Instrument to be able to see what's causing a shutdown
                 new EnvironmentPermission(PermissionState.Unrestricted).Assert();
index f2e757fb6644a31b19c760c9394faec5410cf16e..9627b3231b8106867da143f9f3057e1b53f8712b 100644 (file)
@@ -717,7 +717,7 @@ namespace System.Web {
                 return;
             }
 
-            // Dev10 
+            // Dev10 Bug 507392: Do as Stream does.
             if (buffer == null)
                 throw new ArgumentNullException("buffer");
             if (offset < 0)
@@ -1433,7 +1433,7 @@ namespace System.Web {
             _lastBuffer = null;
 
             // no content to filter
-            // Allow the filter to be closed (Dev10 
+            // Allow the filter to be closed (Dev10 Bug 550168).
             if (_buffers.Count == 0 && !finalFiltering)
                 return;
 
@@ -1621,7 +1621,7 @@ namespace System.Web {
                 return;
             }
 
-            // Dev10 
+            // Dev10 Bug 507392: Do as TextWriter does.
             if (buffer == null)
                 throw new ArgumentNullException("buffer");
             if (index < 0)
index eca2861417dc52dcdb77270aa50f5573a5492528..262070c90bea1e0329932bc626701131e8992d05 100644 (file)
@@ -20,7 +20,7 @@ namespace Microsoft.Runtime.Hosting {
         [ThreadStatic]
         private static IClrStrongName s_StrongName;
 
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         private static IClrStrongName StrongName {
             [System.Security.SecurityCritical]
             get {
@@ -33,7 +33,7 @@ namespace Microsoft.Runtime.Hosting {
             }
         }
 
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         private static IClrStrongNameUsingIntPtr StrongNameUsingIntPtr {
             [System.Security.SecurityCritical]
             get {
@@ -42,20 +42,20 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static int StrongNameErrorInfo() {
             return ts_LastStrongNameHR;
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         [SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "Microsoft.Runtime.Hosting.IClrStrongNameUsingIntPtr.StrongNameFreeBuffer(System.IntPtr)", Justification = "StrongNameFreeBuffer returns void but the new runtime wrappers return an HRESULT.")]
         public static void StrongNameFreeBuffer(IntPtr pbMemory) {
             StrongNameUsingIntPtr.StrongNameFreeBuffer(pbMemory);
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameGetPublicKey(string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob, out IntPtr ppbPublicKeyBlob, out int pcbPublicKeyBlob) {
             int hr = StrongNameUsingIntPtr.StrongNameGetPublicKey(pwzKeyContainer, pbKeyBlob, cbKeyBlob, out ppbPublicKeyBlob, out pcbPublicKeyBlob);
             if( hr < 0 )
@@ -70,7 +70,7 @@ namespace Microsoft.Runtime.Hosting {
 
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameKeyDelete(string pwzKeyContainer) {
             int hr = StrongName.StrongNameKeyDelete(pwzKeyContainer);
             if( hr < 0 )
@@ -82,7 +82,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameKeyGen(string pwzKeyContainer, int dwFlags, out IntPtr ppbKeyBlob, out int pcbKeyBlob) {
             int hr = StrongName.StrongNameKeyGen(pwzKeyContainer, dwFlags, out ppbKeyBlob, out pcbKeyBlob);
             if( hr < 0 )
@@ -96,7 +96,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameKeyInstall(string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob) {
             int hr = StrongNameUsingIntPtr.StrongNameKeyInstall(pwzKeyContainer, pbKeyBlob, cbKeyBlob);
             if( hr < 0 )
@@ -108,7 +108,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob) {
             IntPtr ppbSignatureBlob = IntPtr.Zero;
             int cbSignatureBlob = 0;
@@ -117,7 +117,7 @@ namespace Microsoft.Runtime.Hosting {
 
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob, ref IntPtr ppbSignatureBlob, out int pcbSignatureBlob) {
             int hr = StrongNameUsingIntPtr.StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ppbSignatureBlob, out pcbSignatureBlob);
             if( hr < 0 )
@@ -130,7 +130,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureSize(IntPtr pbPublicKeyBlob, int cbPublicKeyBlob, out int pcbSize) {
             int hr = StrongNameUsingIntPtr.StrongNameSignatureSize(pbPublicKeyBlob, cbPublicKeyBlob, out pcbSize);
             if( hr < 0 )
@@ -143,7 +143,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureVerification(string pwzFilePath, int dwInFlags, out int pdwOutFlags) {
             int hr = StrongName.StrongNameSignatureVerification(pwzFilePath, dwInFlags, out pdwOutFlags);
             if( hr < 0 )
@@ -156,7 +156,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureVerificationEx(string pwzFilePath, bool fForceVerification, out bool pfWasVerified) {
             int hr = StrongName.StrongNameSignatureVerificationEx(pwzFilePath, fForceVerification, out pfWasVerified);
             if( hr < 0 )
@@ -169,7 +169,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameTokenFromPublicKey(IntPtr pbPublicKeyBlob, int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, out int pcbStrongNameToken) {
             int hr = StrongNameUsingIntPtr.StrongNameTokenFromPublicKey(pbPublicKeyBlob, cbPublicKeyBlob, out ppbStrongNameToken, out pcbStrongNameToken);
             if( hr < 0 )
@@ -183,7 +183,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureSize(byte[] bPublicKeyBlob, int cbPublicKeyBlob, out int pcbSize) {
             int hr = StrongName.StrongNameSignatureSize(bPublicKeyBlob, cbPublicKeyBlob, out pcbSize);
             if( hr < 0 )
@@ -195,7 +195,7 @@ namespace Microsoft.Runtime.Hosting {
             return true;
         }
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameTokenFromPublicKey(byte[] bPublicKeyBlob, int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, out int pcbStrongNameToken) {
             int hr = StrongName.StrongNameTokenFromPublicKey(bPublicKeyBlob, cbPublicKeyBlob, out ppbStrongNameToken, out pcbStrongNameToken);
             if( hr < 0 )
@@ -209,7 +209,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameGetPublicKey(string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob, out IntPtr ppbPublicKeyBlob, out int pcbPublicKeyBlob) {
             int hr = StrongName.StrongNameGetPublicKey(pwzKeyContainer, bKeyBlob, cbKeyBlob, out ppbPublicKeyBlob, out pcbPublicKeyBlob);
             if( hr < 0 )
@@ -223,7 +223,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameKeyInstall(string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob) {
             int hr = StrongName.StrongNameKeyInstall(pwzKeyContainer, bKeyBlob, cbKeyBlob);
             if( hr < 0 )
@@ -235,7 +235,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob) {
             IntPtr ppbSignatureBlob = IntPtr.Zero;
             int cbSignatureBlob = 0;
@@ -243,7 +243,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob, ref IntPtr ppbSignatureBlob, out int pcbSignatureBlob) {
             int hr = StrongName.StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, bKeyBlob, cbKeyBlob, ppbSignatureBlob, out pcbSignatureBlob);
             if( hr < 0 )
index 24affab613503a9136ad7562bee1fcd09e5dc7f1..2bbdf1b4f3a12885eeae2c063c92d88e540d87b9 100644 (file)
@@ -43,7 +43,7 @@ namespace System.Web {
         private void CallCallback(SendOrPostCallback callback, Object state) {
             CheckForRequestStateIfRequired();
 
-            // don't take app lock for sync caller to avoid deadlocks in case they poll for result
+            // don't take app lock for [....] caller to avoid deadlocks in case they poll for result
             if (_syncCaller) {
                 CallCallbackPossiblyUnderLock(callback, state);
             }
@@ -72,7 +72,7 @@ namespace System.Web {
             }
         }
 
-        // this property no-ops using the legacy sync context
+        // this property no-ops using the legacy [....] context
         internal override bool AllowAsyncDuringSyncStages {
             get;
             set;
@@ -90,11 +90,11 @@ namespace System.Web {
             _error = null;
         }
 
-        // Dev11 
-
-
-
-
+        // Dev11 Bug 70908: Race condition involving SynchronizationContext allows ASP.NET requests to be abandoned in the pipeline
+        //  
+        // When the last completion occurs, the _pendingCount is decremented and then the _lastCompletionCallbackLock is acquired to get
+        // the _lastCompletionCallback.  If the _lastCompletionCallback is non-null, then the last completion will invoke the callback;
+        // otherwise, the caller of PendingCompletion will handle the completion.
         internal override bool PendingCompletion(WaitCallback callback) {
             Debug.Assert(_lastCompletionCallback == null); // only one at a time
             bool pending = false;
index d0ca991ba072a6638b9e0099f96e0a324e392102..f7c17a34926fd7ed2e6e72a7d6022a3ca3326ad1 100644 (file)
@@ -1341,7 +1341,7 @@ namespace System.Web.Management {
 
             Exception   ex = _exception;
 
-            // Please note we arbitrary pick a level limit per 
+            // Please note we arbitrary pick a level limit per bug VSWhidbey 143859
             for (int level = 0;
                   ex != null && level <= 2;
                   ex = ex.InnerException, level++)  {
@@ -1946,14 +1946,14 @@ namespace System.Web.Management {
 
                 _iprincipal = context.User;
 
-                // Dev11 #80084 - DTS 
-
-
-
-
-
-
-
+                // Dev11 #80084 - DTS Bug
+                // In integrated pipeline, we are very aggressive about disposing
+                // WindowsIdentity's.  If this WebRequestInformation is being used
+                // post-request (eg, while formatting data for an email provider
+                // that is reporting batched events), then the User.Identity is
+                // likely to be disposed.  So lets create a clone that will stick
+                // around.  This condition should vaguely match that found in
+                // HttpContext.DisposePrincipal().
                 if (_iprincipal is WindowsPrincipal
                     && _iprincipal != WindowsAuthenticationModule.AnonymousPrincipal
                     && (context.WorkerRequest is IIS7WorkerRequest)) {
index 76d3de52b4366062a3128f26b53fde8f1bdf118b..e342edd61d9c0fabb7f7cb4d1d8c73b165fa2df3 100644 (file)
@@ -29,7 +29,7 @@ namespace System.Web.ModelBinding {
             //Following code taken from ControlParameter - code duplicated because ControlPrameter throws exceptions whereas we do not.
             string propertyName = PropertyName;
 
-            //
+            //Bug Fix # 280051 : First try to find it on dataControl as DataBoundControlHelper.FindControl only walks up starting from dataControl's NamingContainer.
             Control foundControl = dataControl.FindControl(controlId) ?? DataBoundControlHelper.FindControl(dataControl, controlId);
 
             if (foundControl == null) {
index 90966962fc00f5d32698292e675a307346aefdf0..2c5acf046fca199103066f549d8285d231565ca9 100644 (file)
@@ -8,7 +8,7 @@
 
 #if UNDEF
         public override IEnumerable<ModelClientValidationRule> GetClientValidationRules() {
-            string errorMessage = ErrorMessage; // Per Dev10 
+            string errorMessage = ErrorMessage; // Per Dev10 Bug #923283, need to make sure ErrorMessage is called before Minimum/Maximum
             return new[] { new ModelClientValidationRangeRule(errorMessage, Attribute.Minimum, Attribute.Maximum) };
         }
 #endif
index 0d2b49071d8f8b494918c8415c29bda5f36c7141..fb8effd3dffd375b4a4783bada4ac9b74ba70f69 100644 (file)
@@ -130,7 +130,7 @@ namespace System.Web {
             for (int i = 0; i < stepArray.Count; i++ ) {
 
                 // we don't support removing async event handlers
-                // but the event syntax forces us to handle sync events
+                // but the event syntax forces us to handle [....] events
                 syncStep = stepArray[i] as HttpApplication.SyncEventExecutionStep;
                 if (null != syncStep) {
                     if (syncStep.Handler == (EventHandler)handler) {
index 519e1a7b93ecfa89cb2404468661ca78f8f735af..8fbef1b6671a8fd16d008240deb212a49686e4be 100644 (file)
@@ -164,9 +164,9 @@ namespace System.Web {
                 }
             }
 
-            // Fix 
-
-
+            // Fix Bug 640366: Setting the Principal to null (irrespective of Identity) 
+            // only if framework version is above .NetFramework 4.5 as this change is new and 
+            // we want to keep the functionality same for previous versions.
             if (BinaryCompatibility.Current.TargetsAtLeastFramework45) {
                 Principal = null;
             }
index 04f33a9d6aebdecc19899dc39ddfea1d286cda91..4e78e8ee3fb956a0dfb12129dc958402445f49b5 100644 (file)
@@ -80,7 +80,7 @@
             }
             set {
                 // The parser will throw for invalid routes. We don't have to worry
-                // about _parsedRoute getting out of sync with _url since the latter
+                // about _parsedRoute getting out of [....] with _url since the latter
                 // won't get set unless we can parse the route.
                 _parsedRoute = RouteParser.Parse(value);
 
index 5ab39facaa4764d2a95e659ea4511ee61a525e12..dc8b1d3540487ac4664a6802c6ecdac531fd166d 100644 (file)
             // a read lock when the collection is empty.  Without this check, the UrlRoutingModule causes a 25%-50%
             // regression in HelloWorld RPS due to lock contention.  The UrlRoutingModule is now in the root web.config,
             // so we need to ensure the module is performant, especially when you are not using routing.
-            // This check does introduce a slight 
-
-
+            // This check does introduce a slight bug, in that if a writer clears the collection as part of a write
+            // transaction, a reader may see the collection when it's empty, which the read lock is supposed to prevent.
+            // We will investigate a better fix in Dev10 Beta2.  The Beta1 bug is Dev10 652986.
             if (Count == 0) {
                 return null;
             }
index ff10d9a444608ac80b3db0651b1ffadb22cc88f0..6fc96d5a48329aa8e7ef17bceda3f17990c6df42 100644 (file)
@@ -29,7 +29,7 @@ namespace System.Web.Security
     using  System.Reflection;
     using  System.Configuration.Provider;
     using  System.Web.Management;
-
+    
     public enum ActiveDirectoryConnectionProtection
     {
         None           = 0,
@@ -78,6 +78,7 @@ namespace System.Web.Security
         private int minRequiredNonalphanumericCharacters;
         private string passwordStrengthRegularExpression;
         private MembershipPasswordCompatibilityMode _LegacyPasswordCompatibilityMode = MembershipPasswordCompatibilityMode.Framework20;
+        private int? passwordStrengthRegexTimeout;
 
         //
         // configuration parameters specific to the AD membership provider
@@ -377,6 +378,7 @@ namespace System.Web.Security
 
             int clientSearchTimeout = SecUtility.GetIntValue(config, "clientSearchTimeout", -1, false, 0);
             int serverSearchTimeout = SecUtility.GetIntValue(config, "serverSearchTimeout", -1, false, 0);
+            passwordStrengthRegexTimeout = SecUtility.GetNullableIntValue(config, "passwordStrengthRegexTimeout");
 
             enableSearchMethods = SecUtility.GetBooleanValue(config, "enableSearchMethods", false);
             requiresUniqueEmail = SecUtility.GetBooleanValue(config, "requiresUniqueEmail", false);
@@ -384,7 +386,7 @@ namespace System.Web.Security
             requiresQuestionAndAnswer = SecUtility.GetBooleanValue(config, "requiresQuestionAndAnswer", false);
             minRequiredPasswordLength = SecUtility.GetIntValue( config, "minRequiredPasswordLength", 7, false, 128 );
             minRequiredNonalphanumericCharacters = SecUtility.GetIntValue( config, "minRequiredNonalphanumericCharacters", 1, true, 128 );
-
+          
             passwordStrengthRegularExpression = config["passwordStrengthRegularExpression"];
             if( passwordStrengthRegularExpression != null )
             {
@@ -618,6 +620,7 @@ namespace System.Web.Security
             config.Remove("minRequiredNonalphanumericCharacters");
             config.Remove("passwordStrengthRegularExpression");
             config.Remove("passwordCompatMode");
+            config.Remove("passwordStrengthRegexTimeout");
 
             if (config.Count > 0)
             {
@@ -735,7 +738,7 @@ namespace System.Web.Security
 
             if( PasswordStrengthRegularExpression.Length > 0 )
             {
-                if( !Regex.IsMatch( password, PasswordStrengthRegularExpression ) )
+                if( !RegexUtil.IsMatch( password, PasswordStrengthRegularExpression, RegexOptions.None, passwordStrengthRegexTimeout ) )
                 {
                     status = MembershipCreateStatus.InvalidPassword;
                     return null;
@@ -1224,7 +1227,7 @@ namespace System.Web.Security
 
             if( PasswordStrengthRegularExpression.Length > 0 )
             {
-                if( !Regex.IsMatch( newPassword, PasswordStrengthRegularExpression ) )
+                if( !RegexUtil.IsMatch( newPassword, PasswordStrengthRegularExpression, RegexOptions.None, passwordStrengthRegexTimeout ) )
                 {
                     throw new ArgumentException(SR.GetString(SR.Password_does_not_match_regular_expression,
                                                              "newPassword"));
@@ -4020,8 +4023,8 @@ namespace System.Web.Security
                 }
                 catch (DirectoryOperationException)
                 {
-                    // Dev10 
-
+                    // Dev10 Bug# 623663:
+                    // concurrent bind is not supported when a client certificate is specified, (continue without it and don't try to set it next time)
 
                     this.concurrentBindSupported = false;
                 }
index 5537f87b4e42ef9ee331e859798776570e1c35bf..a4fcc08f63c7c19823cd6303411c347a549beba7 100644 (file)
@@ -12,7 +12,7 @@ namespace System.Web.Security.Cryptography {
     // Utility class to provide the "one true way" of getting instances of
     // cryptographic algorithms, like SymmetricAlgorithm and HashAlgorithm.
 
-    // From discussions with Microsoft and the crypto board, we should prefer
+    // From discussions with [....] and the crypto board, we should prefer
     // the CNG implementations of algorithms, then the CAPI implementations,
     // then finally managed implementations if there are no CNG / CAPI
     // implementations. The CNG / CAPI implementations are preferred for
index a9814daaea4bd9a3bd5ecec8194eb5c636c7fb41..b50ac700a50712ab3e9a04609878bde5ca942b99 100644 (file)
@@ -5,6 +5,7 @@
     using System.Globalization;
     using System.Linq;
     using System.Text.RegularExpressions;
+    using  System.Web.Util;
 
     /// <summary>
     /// Validates whether a password field meets the current Membership Provider's password requirements.
                 }
             }
         }
+
+        // The timeout for the regex we use to check password strength
+        public int? PasswordStrengthRegexTimeout { get; set; }
         #endregion
 
         #region Overriden Methods
 
                 Regex passwordStrengthRegex;
                 try {
-                    passwordStrengthRegex = new Regex(passwordStrengthRegularExpression);
+                    // Adding timeout for Regex in case of malicious string causing DoS
+                    passwordStrengthRegex = RegexUtil.CreateRegex(passwordStrengthRegularExpression, RegexOptions.None, PasswordStrengthRegexTimeout);
                 }
                 catch (ArgumentException ex) {
                     throw new InvalidOperationException(SR.GetString(SR.MembershipPasswordAttribute_InvalidRegularExpression), ex);
index 03563e9dc30fd0268959a359d3536f3fc1cc3c05..ad8c9dc19e9f2c0e96927c8922a2af29438c14f5 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 //
 // RoleClaimProvider.cs
index 3204cb75519e3c7783554d39422195af203b3baa..af1cf0fced4fdf063ca79533f9b8070810e404e1 100644 (file)
@@ -77,7 +77,7 @@ namespace System.Web.Security {
                 _AppName = value;
             }
         }
-
+        
         private string    _sqlConnectionString;
         private bool      _EnablePasswordRetrieval;
         private bool      _EnablePasswordReset;
@@ -94,6 +94,7 @@ namespace System.Web.Security {
         private MembershipPasswordFormat _PasswordFormat;
         private MembershipPasswordCompatibilityMode _LegacyPasswordCompatibilityMode = MembershipPasswordCompatibilityMode.Framework20;
         private string s_HashAlgorithm = null;
+        private int?       _passwordStrengthRegexTimeout;
 
         private const int      PASSWORD_SIZE  = 14;
 
@@ -124,6 +125,7 @@ namespace System.Web.Security {
             _PasswordAttemptWindow      = SecUtility.GetIntValue( config, "passwordAttemptWindow", 10, false, 0 );
             _MinRequiredPasswordLength  = SecUtility.GetIntValue( config, "minRequiredPasswordLength", 7, false, 128 );
             _MinRequiredNonalphanumericCharacters = SecUtility.GetIntValue( config, "minRequiredNonalphanumericCharacters", 1, true, 128 );
+            _passwordStrengthRegexTimeout = SecUtility.GetNullableIntValue(config, "passwordStrengthRegexTimeout");
 
             _PasswordStrengthRegularExpression = config["passwordStrengthRegularExpression"];
             if( _PasswordStrengthRegularExpression != null )
@@ -203,6 +205,7 @@ namespace System.Web.Security {
             config.Remove("minRequiredNonalphanumericCharacters");
             config.Remove("passwordStrengthRegularExpression");
             config.Remove("passwordCompatMode");
+            config.Remove("passwordStrengthRegexTimeout");
             if (config.Count > 0) {
                 string attribUnrecognized = config.GetKey(0);
                 if (!String.IsNullOrEmpty(attribUnrecognized))
@@ -331,7 +334,7 @@ namespace System.Web.Security {
 
             if( PasswordStrengthRegularExpression.Length > 0 )
             {
-                if( !Regex.IsMatch( password, PasswordStrengthRegularExpression ) )
+                if( !RegexUtil.IsMatch( password, PasswordStrengthRegularExpression, RegexOptions.None, _passwordStrengthRegexTimeout ) )
                 {
                     status = MembershipCreateStatus.InvalidPassword;
                     return null;
@@ -422,7 +425,7 @@ namespace System.Web.Security {
                 throw;
             }
         }
-
+        
         //////////////////////////////////////////////////////////////////////
         //////////////////////////////////////////////////////////////////////
         //////////////////////////////////////////////////////////////////////
@@ -580,7 +583,7 @@ namespace System.Web.Security {
 
             if( PasswordStrengthRegularExpression.Length > 0 )
             {
-                if( !Regex.IsMatch( newPassword, PasswordStrengthRegularExpression ) )
+                if( !RegexUtil.IsMatch( newPassword, PasswordStrengthRegularExpression, RegexOptions.None, _passwordStrengthRegexTimeout ) )
                 {
                     throw new ArgumentException(SR.GetString(SR.Password_does_not_match_regular_expression,
                                                              "newPassword"));
index c354c95e0f6abb606e50e3cee54f45c9223a0ce5..de279f206ddac8d0832681a3bd80d4c0b5fdfd9d 100644 (file)
@@ -303,9 +303,9 @@ namespace System.Web.SessionState {
             DateTime        localLockDate;
             long            lockAge;
 
-            // Note that due to a 
-
-
+            // Note that due to a bug in the RTM state server client, 
+            // we cannot add to body of the response when sending this
+            // message, otherwise the client will leak memory.
             response = context.Response;
             response.StatusCode = 423;
             localLockDate = DateTimeUtil.ConvertToLocalTime(content._utcLockDate);
@@ -318,9 +318,9 @@ namespace System.Web.SessionState {
         private void ReportActionFlags(HttpContext context, int flags) {
             HttpResponse    response;
 
-            // Note that due to a 
-
-
+            // Note that due to a bug in the RTM state server client, 
+            // we cannot add to body of the response when sending this
+            // message, otherwise the client will leak memory.
             response = context.Response;
             response.AppendHeader(StateHeaders.ACTIONFLAGS_NAME_RAW, flags.ToString(CultureInfo.InvariantCulture));
         }
index 8450d6d37b66f02548086bd3db5120b384efe460..385d054ebb59ba1b231fc2d68234988aea42c2d6 100644 (file)
@@ -23,7 +23,7 @@ namespace System.Web.SessionState {
 
     class StateHttpWorkerRequest : HttpWorkerRequest {
 
-        /* long enough to hold the string representation of an IPv4 or IPv6 address; keep in sync with tracker.cxx */
+        /* long enough to hold the string representation of an IPv4 or IPv6 address; keep in [....] with tracker.cxx */
         private const int ADDRESS_LENGTH_MAX = 64;
 
         IntPtr                                  _tracker;
index 679709b439b0b0ecad2ef56a15c1850b61fdf32a..9ae9f81b5331c6db2147fa547d310bf104341b0a 100644 (file)
@@ -508,7 +508,7 @@ namespace System.Web {
 
             // Determine Last Modified Time.  We might need it soon 
             // if we encounter a Range: and If-Range header
-            // Using UTC time to avoid daylight savings time 
+            // Using UTC time to avoid daylight savings time bug 83230
             lastModifiedInUtc = new DateTime(fileInfo.LastWriteTimeUtc.Year,
                                         fileInfo.LastWriteTimeUtc.Month,
                                         fileInfo.LastWriteTimeUtc.Day,
index bfd7b04d52be5b57ab6ee384baf2d16908d57b7a..2975040697e21b25b4a7d86e39c2fa68272b7a38 100644 (file)
@@ -61,7 +61,7 @@
 
             /*
              * !! IMPORTANT !!
-             * Keep this logic in sync with DisassociateFromCurrentThread and EnterExecutionContext.
+             * Keep this logic in [....] with DisassociateFromCurrentThread and EnterExecutionContext.
              */
 
             // attach http context to the call context
 
             /*
              * !! IMPORTANT !!
-             * Keep this logic in sync with AssociateWithCurrentThread and EnterExecutionContext.
+             * Keep this logic in [....] with AssociateWithCurrentThread and EnterExecutionContext.
              */
 
             Current = _originalThreadContextCurrent;
 
             /*
              * !! IMPORTANT !!
-             * Keep this logic in sync with AssociateWithCurrentThread and DisassociateFromCurrentThread.
+             * Keep this logic in [....] with AssociateWithCurrentThread and DisassociateFromCurrentThread.
              */
 
             // ExecutionContext.Run replaces the current impersonation token, so we need to impersonate
index 1ecb550dadd54a0211ec00bc723164cf3d6c5dd3..b5eea9d3ddc9fb22091de2b063ef634ca83e4a8f 100644 (file)
@@ -79,7 +79,7 @@ public class BaseParser {
     }
 
     private Regex _tagRegex;
-    // The 3.5 regex is used only when targeting 2.0/3.5 for backward compatibility (Dev10 
+    // The 3.5 regex is used only when targeting 2.0/3.5 for backward compatibility (Dev10 bug 830783).
     private readonly static Regex tagRegex35 = new TagRegex35();
     // The 4.0 regex is used for web sites targeting 4.0 and above. 
     private readonly static Regex tagRegex40 = new TagRegex();
index b698ff6f3104c3e0b4c754591b0d720ff7eae58b..7a21a881ad31bc5c73e652ddcd35b79bf8875b50 100644 (file)
@@ -2719,7 +2719,7 @@ namespace System.Web.UI {
             // But for control which requires its OnInit method to be called again
             // to properly initialize when the control is removed and added back
             // to Page's control tree, the control can override IsReloadable
-            // to true so the control state is reset.  e.g. Validator, see 
+            // to true so the control state is reset.  e.g. Validator, see bug
             if (IsReloadable) {
                 _controlState = ControlState.Constructed;
             }
@@ -3179,7 +3179,7 @@ namespace System.Web.UI {
         internal Control FindControlFromPageIfNecessary(string id) {
             Control c = FindControl(id);
             // Find control from the page if it's a hierarchical ID.
-            // Dev11 
+            // Dev11 bug 19915
             if (c == null && Page != null) {
                 char[] findControlSeparators = { ID_SEPARATOR, LEGACY_ID_SEPARATOR };
                 if (id.IndexOfAny(findControlSeparators) != -1) {
index 91b38689c564fdf3ea5f95adef5787db3c72bee6..6a5c0117707b381e70bcf74ba10f69b536e64bbd 100644 (file)
@@ -2220,8 +2220,8 @@ namespace System.Web.UI {
                         try {
                             // We must push the theme flag to child complex objects so they are init'd properly
                             
-                            // DevDiv 
-
+                            // DevDiv Bug 59351
+                            // Set applytheme only when necessary.
                             if (entry.Builder.flags[applyTheme] != flags[applyTheme]) {
                                 entry.Builder.flags[applyTheme] = flags[applyTheme];
                             }
index b5c395a74f8e0c78bf1ff4688c0a6554b6024955..af76ac63b0e16d3314d37ecf466de77f6d3717dc 100644 (file)
@@ -98,7 +98,7 @@ namespace System.Web.UI {
         public const char StyleEqualsChar = ':';
         public const string DefaultTabString = "\t";
 
-        // The DesignerRegion attribute name must be kept in sync with
+        // The DesignerRegion attribute name must be kept in [....] with
         // System.Web.UI.Design.DesignerRegion.DesignerRegionNameAttribute
         internal const string DesignerRegionAttributeName = "_designerRegion";
 
index 5dbcc9f16bdf35dcdf1dd8b8998a324ddc793562..9c06f604b87364cc34986d4027a9b0e6d9c7beb8 100644 (file)
@@ -219,8 +219,8 @@ namespace System.Web.UI.HtmlControls {
 
         /// <devdoc>
         /// Overridden to return a constant value or tack the ID onto the same constant value.
-        /// This fixes a 
-
+        /// This fixes a bug in PocketPC which doesn't allow the name and ID of a form to be different
+        /// </devdoc>
         public override string UniqueID {
             get {
                 if (NamingContainer == Page) {
@@ -279,14 +279,16 @@ namespace System.Web.UI.HtmlControls {
             // scenarios need the postback action to be the original URL.  Note however, if Server.Transfer/Execute
             // is used, the action will be set to the transferred/executed page, that is, the value of
             // CurrentExecutionFilePathObject.  This is because of ASURT 59970 and the document attached to
-            // that 
+            // that bug, which indirectly states that things should behave this way when Transfer/Execute is used.
             if (Context.ServerExecuteDepth == 0) {
                 // There hasn't been any Server.Transfer or RewritePath.
                 // ASURT 15979: need to use a relative path, not absolute
                 action = clientFilePath.VirtualPathString;
                 int iPos = action.LastIndexOf('/');
                 if (iPos >= 0) {
-                    action = action.Substring(iPos + 1);
+                    // Ensure the segment is always a relative path, so prepend a dot-segment
+                    // (RFC section 4.2 Relative Reference)
+                    action = "./" + action.Substring(iPos + 1);
                 }
             }
             else {
@@ -423,7 +425,7 @@ namespace System.Web.UI.HtmlControls {
                     (page.RequestInternal.Browser.W3CDomVersion.Major > 0)) {
                     if (DefaultButton.Length > 0) {
                         // Find control from the page if it's a hierarchical ID.
-                        // Dev11 
+                        // Dev11 bug 19915
                         Control c = FindControlFromPageIfNecessary(DefaultButton);
 
                         if (c is IButtonControl) {
index 7e60b164e4acbd7bdaa4b4c6366946821ddd2bd8..5eb66eae4cdd717169490e9968f7b2ce65292251 100644 (file)
@@ -189,7 +189,7 @@ namespace System.Web.UI {
                     return null;
                 }
 
-                // Note: duplicated (somewhat) in GetMacKeyModifier, keep in sync
+                // Note: duplicated (somewhat) in GetMacKeyModifier, keep in [....]
                 // See that method for comments on why these modifiers are in place
 
                 List<string> specificPurposes = new List<string>() {
@@ -216,7 +216,7 @@ namespace System.Web.UI {
                     return null;
                 }
 
-                // Note: duplicated (somewhat) in GetSpecificPurposes, keep in sync
+                // Note: duplicated (somewhat) in GetSpecificPurposes, keep in [....]
 
                 // Use the page's directory and class name as part of the key (ASURT 64044)
                 uint pageHashCode = _page.GetClientStateIdentifier();
index d8ee546df17ffc46ca4f932abecada4d3717f4fa..974680fd74222db0b425c15c2e38618f0c4c6439 100644 (file)
@@ -195,7 +195,7 @@ public class Page: TemplateControl, IHttpHandler {
     private const string PageSubmitScriptKey = "PageSubmitScript";
     private const string PageReEnableControlsScriptKey = "PageReEnableControlsScript";
 
-    // NOTE: Make sure this stays in sync with MobilePage.PageRegisteredControlsThatRequirePostBackKey
+    // NOTE: Make sure this stays in [....] with MobilePage.PageRegisteredControlsThatRequirePostBackKey
     // 
     private const string PageRegisteredControlsThatRequirePostBackKey = "__ControlsRequirePostBackKey__";
 
@@ -2167,17 +2167,15 @@ public class Page: TemplateControl, IHttpHandler {
         }
         // Load the scroll positions from the request if they exist
         if (_requestValueCollection != null) {
+            double doubleValue;
+            
             string xpos = _requestValueCollection[_scrollPositionXID];
             if (xpos != null) {
-                if (!Int32.TryParse(xpos, out _scrollPositionX)) {
-                    _scrollPositionX = 0;
-                }
+                _scrollPositionX = HttpUtility.TryParseCoordinates(xpos, out doubleValue) ? (int)doubleValue : 0 ;
             }
             string ypos = _requestValueCollection[_scrollPositionYID];
             if (ypos != null) {
-                if (!Int32.TryParse(ypos, out _scrollPositionY)) {
-                    _scrollPositionY = 0;
-                }
+                _scrollPositionY = HttpUtility.TryParseCoordinates(ypos, out doubleValue) ? (int)doubleValue : 0 ;
             }
         }
     }
@@ -2273,8 +2271,8 @@ public class Page: TemplateControl, IHttpHandler {
             // Need to always render out the viewstate field so alternate viewstate persistence will get called
             writer.Write("\r\n<input type=\"hidden\" name=\"");
             writer.Write(ViewStateFieldPrefixID);
-            // Dev10 
-
+            // Dev10 Bug 486494
+            // Remove previously rendered NewLine
             writer.Write("\" id=\"");
             writer.Write(ViewStateFieldPrefixID);
             writer.WriteLine("\" value=\"\" />");
@@ -3236,7 +3234,7 @@ window.onload = WebForm_RestoreScrollPosition;
         bool changed;
 
         // ListControl family controls call EnsureDataBound in consumer.LoadPostData, which could be an async call in 4.6. 
-        // LoadPostData, however, is a sync method, which means we cannot await EnsureDataBound in the method.
+        // LoadPostData, however, is a [....] method, which means we cannot await EnsureDataBound in the method.
         // To workaround this, for ListControl family controls, we call EnsureDataBound before we call into LoadPostData.
         if (AppSettings.EnableAsyncModelBinding && consumer is ListControl) {
             var listControl = consumer as ListControl;
@@ -5581,8 +5579,8 @@ window.onload = WebForm_RestoreScrollPosition;
         HttpCapabilitiesBase caps = _request.Browser;
 
         if(caps != null) {
-            // Dev10 440476: Page.SetIntrinsics method has a 
-
+            // Dev10 440476: Page.SetIntrinsics method has a bug causing throwing NullReferenceException
+            // in certain circumstances. This edge case was regressed by the VSWhidbey fix below.
 
             // VSWhidbey 109162: Set content type at the very beginning so it can be
             // overwritten within the user code of the page if needed.
index 5e61537f1e5c56a6a587cf5b7367ec966cb9e494..9efc13a5871cd9d0a7844cdd59d980915ab4c2ed 100644 (file)
@@ -468,9 +468,9 @@ public abstract class BasePartialCachingControl : Control {
         NameValueCollection reqValCollection;
         HttpRequest request = Page.Request;
         if (request != null && request.HttpVerb == HttpVerb.POST) {
-            // 
-
-
+            // Bug 6129: Partial cache key should include posted form values in postbacks.
+            // Include both QueryString and Form values (but not Cookies or Server Variables like Request.Params does).
+            // Per Request.Params behavior, add QueryString values before Form values
             reqValCollection = new NameValueCollection(request.QueryString);
             reqValCollection.Add(request.Form);
         }
index e4030f7da8952c220c971b03eb78c1cd147868f8..e8b736cd82aac04a6b5f5ab9cf57355d766ebabe 100644 (file)
@@ -103,7 +103,7 @@ namespace System.Web.UI {
 
         // The provider needs not be cached because the TFP service 
         // returns light-weight providers that delegate to the same 
-        // underlying TFP instance.  (Dev10 
+        // underlying TFP instance.  (Dev10 bug 795001)
         private static TypeDescriptionProvider GetTargetFrameworkProvider(object obj) {
             TypeDescriptionProviderService service = TargetFrameworkUtil.TypeDescriptionProviderService;
             if (service != null) {
@@ -532,7 +532,7 @@ namespace System.Web.UI {
                 //   updated).
                 // - Otherwise, we are either already using standard reflection, or we are using the
                 //   TFP in the primary appdomain, and should not be caching statically.
-                // Dev10 
+                // Dev10 bug 805134
                 return s_cbmTdpBridge == null;
             }
         }
index 13ba31d98c53803b5ce30b60031e6052f10bc0a2..dea1ef4c9486aa0b34f7425499f6767e4fec3722 100644 (file)
@@ -1567,7 +1567,7 @@ public abstract class TemplateParser : BaseParser, IAssemblyDependencyParser {
                 TypeDescriptor.GetAttributes(childType)[typeof(PartialCachingAttribute)];
 
             // If we are parsing a theme file, the controls do not have an ID,
-            // and we should not be adding one. (Dev10 
+            // and we should not be adding one. (Dev10 bug 660310)
             if (!(subBuilder.Parser is PageThemeParser) && cacheAttrib != null) {
                 _id = "_ctrl_" + _controlCount.ToString(NumberFormatInfo.InvariantInfo);
                 subBuilder.ID = _id;
index b0354a0dcc11b6ec27cf5e5a5be45bece78a783d..476a9ec005c833be320768854a3af63c1f78e9c3 100644 (file)
@@ -787,8 +787,8 @@ namespace System.Web {
 
             // header info
             try {
-                // 
-
+                // Bug 867196: Use Request.Unvalidated to ensure request validation will not
+                // be triggered when the entries of the collection are accessed.
                 AddCollectionToRequestData(requestData, SR.Trace_Headers_Collection, _context.Request.Unvalidated.Headers);
             }
             catch {
index 2fc4fce2058d64cc842d22202eac00d55a204825..83c46ef3715381b46354d1d2968aa1dc473a3696 100644 (file)
@@ -44,8 +44,8 @@ namespace System.Web.UI.WebControls.Adapters {
 
         private string Escape(string path) {
             // This function escapes \\ so that they don't get replaced because of
-            // a Netscape 4 
-
+            // a Netscape 4 bug. Other escapable characters will be escaped by .
+            // _ becomes __ and \\ becomes \_\
             StringBuilder b = null;
 
             if (String.IsNullOrEmpty(path)) {
index cd906e11df0930e8dbfbfa0f195ca9c19917d950..4588444664e8f7bea2a92ce24d3affb509ffc916 100644 (file)
@@ -1939,9 +1939,9 @@ namespace System.Web.UI.WebControls {
 
             string cancelPageUrl = CancelDestinationPageUrl;
             if (!String.IsNullOrEmpty(cancelPageUrl)) {
-                // Microsoft suggested that we should not terminate execution of current page, to give
+                // [....] suggested that we should not terminate execution of current page, to give
                 // page a chance to cleanup its resources.  This may be less performant though.
-                // Microsoft suggested that we need to call ResolveClientUrl before redirecting.
+                // [....] suggested that we need to call ResolveClientUrl before redirecting.
                 // Example is this control inside user control, want redirect relative to user control dir.
                 Page.Response.Redirect(ResolveClientUrl(cancelPageUrl), false);
             }
@@ -1993,9 +1993,9 @@ namespace System.Web.UI.WebControls {
             string continuePageUrl = ContinueDestinationPageUrl;
             if (!String.IsNullOrEmpty(continuePageUrl)) {
 
-                // Microsoft suggested that we should not terminate execution of current page, to give
+                // [....] suggested that we should not terminate execution of current page, to give
                 // page a chance to cleanup its resources.  This may be less performant though.
-                // Microsoft suggested that we need to call ResolveClientUrl before redirecting.
+                // [....] suggested that we need to call ResolveClientUrl before redirecting.
                 // Example is this control inside user control, want redirect relative to user control dir.
                 Page.Response.Redirect(ResolveClientUrl(continuePageUrl), false);
             }
@@ -2066,9 +2066,9 @@ namespace System.Web.UI.WebControls {
 
             string successPageUrl = SuccessPageUrl;
             if (!String.IsNullOrEmpty(successPageUrl)) {
-                // Microsoft suggested that we should not terminate execution of current page, to give
+                // [....] suggested that we should not terminate execution of current page, to give
                 // page a chance to cleanup its resources.  This may be less performant though.
-                // Microsoft suggested that we need to call ResolveClientUrl before redirecting.
+                // [....] suggested that we need to call ResolveClientUrl before redirecting.
                 // Example is this control inside user control, want redirect relative to user control dir.
                 Page.Response.Redirect(ResolveClientUrl(successPageUrl), false);
             }
index 39801f9c17eb3d51cb4dadb74f6778219b08463a..0a433fda7723326ba9db6bbd9a36b9a1ef4ff4c0 100644 (file)
@@ -445,14 +445,11 @@ namespace System.Web.UI.WebControls {
                 OnDataBinding(EventArgs.Empty);
             }
             DataSourceView view = GetData();
+            _arguments = CreateDataSourceSelectArguments();
             _ignoreDataSourceViewChanged = true;
             RequiresDataBinding = false;
             MarkAsDataBound();
-
-            // when PerformSelect is called in async method, setting _arguments
-            // to a new instance causes an exception deep in ListView.
-            // Instead, we should use SelectArguments.
-            view.Select(SelectArguments, OnDataSourceViewSelectCallback);
+            view.Select(_arguments, OnDataSourceViewSelectCallback);
         }
 
 
@@ -493,10 +490,10 @@ namespace System.Web.UI.WebControls {
         /// Saves view state.
         /// </devdoc>
         protected override object SaveViewState() {
-            // 
-
-
-
+            // Bug 322689: In the web farms scenario, if a web site is hosted in 4.0 and 4.5 servers
+            // (though this is not a really supported scenario, we are fixing this instance), 
+            // the View state created by 4.0 should be able to be understood by 4.5 controls.
+            // So, we create a Pair only if we are using model binding and otherwise fallback to 4.0 behavior.
 
             object baseViewState = base.SaveViewState();
 
index 268143d08969bd4fd092b0e27abd66697eab84f2..c51c96272d6cba564e2d0f7cba8295f5801f64a9 100644 (file)
@@ -2867,7 +2867,7 @@ namespace System.Web.UI.WebControls {
                 propertyChanged = true;
 
                 // since we can't go into insert mode in a callback, oldPageIndex should never be -1 and different from PageIndex
-                Debug.Assert(oldPageIndex >= 0, "Page indeces are out of sync from callback hidden field state");
+                Debug.Assert(oldPageIndex >= 0, "Page indeces are out of [....] from callback hidden field state");
                 _pageIndex = oldPageIndex;
                 
                 string oldDataKeyString = dataKey;
index 820d536afec0a5a9332bcfe46c8a17301979b902..3ede63ea959597c619f6659690b60546332171e3 100644 (file)
@@ -350,7 +350,7 @@ namespace System.Web.UI.WebControls {
                     // Note: we always recreate the child controls in the designer to correctly handle the case of
                     // the currently selected role group being deleted.  This is necessary because the
                     // setter for TemplateIndex won't recreate the controls if the TemplateIndex is unchanged,
-                    // which is the case when deleting all but the last role group. [Fix for 
+                    // which is the case when deleting all but the last role group. [Fix for Bug 148406]
                     ChildControlsCreated = false;
                 }
             }
index 0eeaa9fc94a407b5b3b4139a786d8c4f1521fa46..f78c6b43c0c2427f37f67258263d191b1859e871 100644 (file)
@@ -966,7 +966,7 @@ namespace System.Web.UI.WebControls {
                 // In 4.0, the default value of Menu.StaticSubMenuIndent was changed from 16px to Unit.Empty,
                 // since the table and list rendering modes need to have different effective default values.
                 // To maintain back compat, the effective default value for table rendering is 16px.
-                // Dev10 
+                // Dev10 Bug 741543
                 if (indent.IsEmpty) {
                     indent = Unit.Pixel(16);
                 }
index 8f762058eb25cd1a027963a5b7eb434e419b56e4..2c02401796dc9099125ebab469db3b24e685bab0 100644 (file)
@@ -464,7 +464,7 @@ namespace System.Web.UI.WebControls {
                 MethodInfo countHelperMethod = typeof(QueryableHelpers).GetMethod("CountHelper").MakeGenericMethod(modelType);
                 arguments.TotalRowCount = (int)countHelperMethod.Invoke(null, new object[] { result.ReturnValue });
 
-                //
+                //Bug 180907: We would like to auto sort on DataKeyName when paging is enabled and result is not already sorted by user to overcome a limitation in EF.
                 MethodInfo isOrderingMethodFoundMethod = typeof(QueryableHelpers).GetMethod("IsOrderingMethodFound").MakeGenericMethod(modelType);
                 bool isOrderingMethodFound = (bool)isOrderingMethodFoundMethod.Invoke(null, new object[] { result.ReturnValue });
                 if (!isOrderingMethodFound) {
index cef8bb9e4a249d66d0469db817bc96b90964d321..dc6bdc050eb348304ae4f8e17c07108d6e6a6c39 100644 (file)
@@ -290,7 +290,7 @@ namespace System.Web.UI.WebControls {
                 (Page.Request.Browser.W3CDomVersion.Major > 0)) {
                 if (DefaultButton.Length > 0) {
                     // Find control from the page if it's a hierarchical ID.
-                    // Dev11 
+                    // Dev11 bug 19915
                     Control c = FindControlFromPageIfNecessary(DefaultButton);
 
                     if (c is IButtonControl) {
index a236ddde52773400bc36cbc946b7b26a2875148c..f75ce6aa4cdd565ff51895e4b2ea0775c8037452 100644 (file)
@@ -1569,9 +1569,9 @@ namespace System.Web.UI.WebControls {
         private void PerformSuccessAction() {
             string successPageUrl = SuccessPageUrl;
             if (!String.IsNullOrEmpty(successPageUrl)) {
-                // Microsoft suggested that we should not terminate execution of current page, to give
+                // [....] suggested that we should not terminate execution of current page, to give
                 // page a chance to cleanup its resources.  This may be less performant though.
-                // Microsoft suggested that we need to call ResolveClientUrl before redirecting.
+                // [....] suggested that we need to call ResolveClientUrl before redirecting.
                 // Example is this control inside user control, want redirect relative to user control dir.
                 Page.Response.Redirect(ResolveClientUrl(successPageUrl), false);
             }
index 9ce940dcf82ffd27851e8b33afd872ec2df6b2f0..9f3bc32b1155d8f0a1a68efb336bd34b55587205 100644 (file)
@@ -54,6 +54,8 @@ namespace System.Web.UI.WebControls {
             }
         }
 
+        // The timeout for regex
+        public int? MatchTimeout { get; set; }
 
         /// <internalonly/>
         /// <devdoc>
@@ -87,9 +89,14 @@ namespace System.Web.UI.WebControls {
 
             try {
                 // we are looking for an exact match, not just a search hit
-                Match m = Regex.Match(controlValue, ValidationExpression);
+                // Adding timeout for Regex in case of malicious string causing DoS
+                Match m = RegexUtil.Match(controlValue, ValidationExpression, RegexOptions.None, MatchTimeout);
+
                 return(m.Success && m.Index == 0 && m.Length == controlValue.Length);
-            }
+            } 
+            catch (ArgumentOutOfRangeException) {
+                throw;
+            } 
             catch {
                 Debug.Fail("Regex error should have been caught in property setter.");
                 return true;
index bb4bbfdc14cf3e5de588cb180929e33d6baa1e1f..e9ff52cba9fc4739ce29c4123832446adbf3c446 100644 (file)
@@ -999,10 +999,10 @@ namespace System.Web.UI.WebControls {
         /// Saves view state.
         /// </devdoc>
         protected override object SaveViewState() {
-            // 
-
-
-
+            // Bug 322689: In the web farms scenario, if a web site is hosted in 4.0 and 4.5 servers
+            // (though this is not a really supported scenario, we are fixing this instance), 
+            // the View state created by 4.0 should be able to be understood by 4.5 controls.
+            // So, we create a Pair only if we are using model binding and otherwise fallback to 4.0 behavior.
 
             object baseViewState = base.SaveViewState();
 
index 89eede656b06a0938e7c20ba3cccc2a388a674b9..35e7c2844fc35c85d84de97fbac028f91ff3c3b5 100644 (file)
@@ -696,12 +696,12 @@ namespace System.Web.UI.WebControls {
         /// </devdoc>
         protected internal override void Render(HtmlTextWriter writer) {
             RenderBeginTag(writer);
-            //Dev10 
-
-
+            //Dev10 Bug 483896: Original TextBox rendering in MultiLine mode suffers from the
+            //problem of losing the first newline. We fixed this bug by always rendering a newline
+            //before rendering the value of the Text property.
             if (TextMode == TextBoxMode.MultiLine) {
-                //Dev11 
-
+                //Dev11 Bug 437709 fix: We do not want to encode the extra new line that we are
+                //rendering. However we are doing this only for 4.5 or later frameworks for back-compat.
                 if (RenderingCompatibility >= VersionUtil.Framework45) {
                     writer.Write(System.Environment.NewLine);
                     HttpUtility.HtmlEncode(Text, writer);
index 4d71a2379d766b0a68b3afa4ae4d3c0187c518fd..5f30b9b3e70b5a280a801601a7fd6360e45f26b9 100644 (file)
@@ -1213,9 +1213,18 @@ namespace System.Web.UI.WebControls {
                     if (imageToolTip.Length > 0) {
                         writer.AddAttribute(HtmlTextWriterAttribute.Alt,
                             String.Format(CultureInfo.CurrentCulture, imageToolTip, Text));
+                                   //fix bug 1197460, quirk it so the fix will only be enabled on projects on 4.6.1 or later version of framework
+                                   if (BinaryCompatibility.Current.TargetsAtLeastFramework461) {
+                            writer.AddAttribute(HtmlTextWriterAttribute.Title,
+                                String.Format(CultureInfo.CurrentCulture, imageToolTip, Text));
+                                   }
                     }
                     else {
                         writer.AddAttribute(HtmlTextWriterAttribute.Alt, String.Empty);
+                                   //fix bug 1197460, quirk it so the fix will only be enabled on projects on 4.6.1 or later version of framework
+                                   if (BinaryCompatibility.Current.TargetsAtLeastFramework461) {
+                               writer.AddAttribute(HtmlTextWriterAttribute.Title, String.Empty);
+                                   }
                     }
                     writer.RenderBeginTag(HtmlTextWriterTag.Img);
                     writer.RenderEndTag();
@@ -1362,9 +1371,17 @@ namespace System.Web.UI.WebControls {
                 writer.AddStyleAttribute(HtmlTextWriterStyle.BorderWidth, "0");
                 if (ImageToolTip.Length > 0) {
                     writer.AddAttribute(HtmlTextWriterAttribute.Alt, ImageToolTip);
+                           //fix bug 1197460, quirk it so the fix will only be enabled on projects on 4.6.1 or later version of framework
+                       if (BinaryCompatibility.Current.TargetsAtLeastFramework461) {
+                        writer.AddAttribute(HtmlTextWriterAttribute.Title, ImageToolTip);
+                           }
                 }
                 else {
                     writer.AddAttribute(HtmlTextWriterAttribute.Alt, String.Empty);
+                           //fix bug 1197460, quirk it so the fix will only be enabled on projects on 4.6.1 or later version of framework
+                               if (BinaryCompatibility.Current.TargetsAtLeastFramework461) {
+                           writer.AddAttribute(HtmlTextWriterAttribute.Title, String.Empty);
+                               }
                 }
                 writer.RenderBeginTag(HtmlTextWriterTag.Img);
                 writer.RenderEndTag();
index 882c5adcec85b0352e395b2e812f544b0c60d631..4aa0a6f25b369674e571d8a03ae37cbbc917d296 100644 (file)
@@ -1876,9 +1876,9 @@ namespace System.Web.UI.WebControls {
 
             string finishPageUrl = FinishDestinationPageUrl;
             if (!String.IsNullOrEmpty(finishPageUrl)) {
-                // Microsoft suggested that we should not terminate execution of current page, to give
+                // [....] suggested that we should not terminate execution of current page, to give
                 // page a chance to cleanup its resources.  This may be less performant though.
-                // Microsoft suggested that we need to call ResolveClientUrl before redirecting.
+                // [....] suggested that we need to call ResolveClientUrl before redirecting.
                 // Example is this control inside user control, want redirect relative to user control dir.
                 Page.Response.Redirect(ResolveClientUrl(finishPageUrl), false);
             }
index 840709301611b9814066673bb45caa2224c17100..04de8b3b4a169b644eafd16fbb01426c05006001 100644 (file)
@@ -110,9 +110,9 @@ namespace System.Web.UI.WebControls {
                         AddExpandoAttribute(expandoAttributeWriter, id, "dateorder", GetDateElementOrder(), false);
                         AddExpandoAttribute(expandoAttributeWriter, id, "cutoffyear", CutoffYear.ToString(NumberFormatInfo.InvariantInfo), false);
 
-                        // VSWhidbey 504553: The changes of this 
-
-
+                        // VSWhidbey 504553: The changes of this bug make client-side script not
+                        // using the century attribute anymore, but still generating it for
+                        // backward compatibility with Everett pages.
                         int currentYear = DateTime.Today.Year;
                         int century = currentYear - (currentYear % 100);
                         AddExpandoAttribute(expandoAttributeWriter, id, "century", century.ToString(NumberFormatInfo.InvariantInfo), false);
index 46968b54da770d8646fc2b5946bf70929eabfffa..597b93fd56493049a46f4f42cbe7f97864b6272a 100644 (file)
@@ -549,7 +549,7 @@ namespace System.Web.UI.WebControls.WebParts {
                 // Mozilla renders padding on an empty TD without this attribute
                 writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "0");
 
-                // Add an extra row with height of 100%, to Microsoft up any extra space
+                // Add an extra row with height of 100%, to [....] up any extra space
                 // if the height of the zone is larger than its contents
                 // Mac IE needs height=100% set on <td> instead of <tr>
                 writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
index 051143d56290c7b07c0aa01d00bfd4fb948b1f14..66e4961126b485bc0811bd6804391ee1f0cf4ef9 100644 (file)
@@ -246,7 +246,7 @@ namespace System.Web.UI.WebControls.WebParts {
         }
 
         /// <devdoc>
-        /// Called by the Zone when the EditorPart should sync its values because other EditorParts
+        /// Called by the Zone when the EditorPart should [....] its values because other EditorParts
         /// may have changed control properties.  This is only called after all the ApplyChanges have returned.
         /// </devdoc>
         public abstract void SyncChanges();
index ab7ee071b2200c7718c5fa7d7108a2cf371e6738..de13bd300764ced40d9e9d0fa20108c3cd784688 100644 (file)
@@ -412,7 +412,7 @@ namespace System.Web.UI.WebControls.WebParts {
                 // Mozilla renders padding on an empty TD without this attribute
                 writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "0");
 
-                // Add an extra row with height of 100%, to Microsoft up any extra space
+                // Add an extra row with height of 100%, to [....] up any extra space
                 // if the height of the zone is larger than its contents
                 // Mac IE needs height=100% set on <td> instead of <tr>
                 writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
index 5ace8f9d8da3cecca99b9f5237e22ccb4e20415c..4791f4a76fed95c5e14c58dbacf65cdcba03d46d 100644 (file)
@@ -113,7 +113,7 @@ namespace System.Web.UI.WebControls.WebParts {
             CheckReadOnly();
             if (_webPartManager != null) {
                 int webPartManagerIndex = _webPartManager.StaticConnections.IndexOf((WebPartConnection)oldValue);
-                // It is a 
+                // It is a bug if the main WebPartManager does not contain the oldValue
                 Debug.Assert(webPartManagerIndex >= 0);
                 _webPartManager.StaticConnections[webPartManagerIndex] = (WebPartConnection)newValue;
             }
index 25d9bb1c4102980182e97a903638ea9ba81216ae..c5b3495230e3320334b1a4ecf8403ec279b62c5c 100644 (file)
@@ -571,7 +571,7 @@ if (zoneElement != null) {{
         }
 
         // Only call PermitOnly() in legacy CAS mode.  In the v4 CAS model, calling PermitOnly() would prevent us from calling
-        // Activator.CreateInstance() on types in App_Code (assuming it is non-APTCA). (Dev10 
+        // Activator.CreateInstance() on types in App_Code (assuming it is non-APTCA). (Dev10 Bug 807117)
         private bool UsePermitOnly {
             get {
                 if (!_usePermitOnly.HasValue) {
@@ -1584,8 +1584,8 @@ if (zoneElement != null) {{
             StaticConnections.SetReadOnly(SR.WebPartManager_StaticConnectionsReadOnly);
 
             // The user can't directly change the DynamicConnections property since it is internal.
-            // Make it read-only in case we have a 
-
+            // Make it read-only in case we have a bug and try to change it after activation.
+            // We check the read-only status of this collection in ConnectWebParts() and DisconnectWebParts().
             DynamicConnections.SetReadOnly(SR.WebPartManager_DynamicConnectionsReadOnly);
 
             return (WebPartConnection[])finalConnectionsToActivate.ToArray(typeof(WebPartConnection));
@@ -2691,7 +2691,7 @@ if (zoneElement != null) {{
 
         /// <devdoc>
         /// Never throws except for null arguments. Returns an error message in the out parameter instead.
-        /// [Microsoft] I investigated whether this could be refactored to share common code with
+        /// [[....]] I investigated whether this could be refactored to share common code with
         ///           LoadDynamicWebPart(), but it seems the methods are too different.
         /// </devdoc>
         public virtual WebPart ImportWebPart(XmlReader reader, out string errorMessage) {
index 7dc790dc48504e00199712f28030908297073f7e..4fd1f72fd88c769ef2cd857241a51f2e0db0fa2d 100644 (file)
@@ -1261,7 +1261,7 @@ namespace System.Web.UI.WebControls.WebParts {
                 }
 
                 if (orientation == Orientation.Vertical) {
-                    // Add an extra row with height of 100%, to Microsoft up any extra space
+                    // Add an extra row with height of 100%, to [....] up any extra space
                     // if the height of the zone is larger than its contents
                     writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 
@@ -1276,7 +1276,7 @@ namespace System.Web.UI.WebControls.WebParts {
                     writer.RenderEndTag(); // Tr
                 }
                 else {
-                    // Add an extra cell with width of 100%, to Microsoft up any extra space
+                    // Add an extra cell with width of 100%, to [....] up any extra space
                     // if the width of the zone is larger than its contents.
                     writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
 
index f31af9df33032fcf936e4d08d634108a199dfa3b..e6f4043758ce7f0c723170b0c48a812a1aa47cee 100644 (file)
@@ -663,7 +663,7 @@ namespace System.Web {
         // List of functions supported by PMCallISAPI
         //
         // ATTENTION!!
-        // If you change this list, make sure it is in sync with the
+        // If you change this list, make sure it is in [....] with the
         // CallISAPIFunc enum in ecbdirect.h
         //
         internal enum CallISAPIFunc : int {
index 90f6e3eec32f6b184908313a5289260e4659ea46..f45390c0d226f90c2f44a4b9897dcb1dba5b53e7 100644 (file)
                 bool captureBeginStack = (myBeginMask & (CallStackCollectionBitMasks)AppVerifierCollectCallStackMask) == myBeginMask;
 
                 InvocationInfo beginHandlerInvocationInfo = InvocationInfo.Capture(captureBeginStack);
-                Uri requestUrl = null;
+                string requestUrl = null;
                 RequestNotification? currentNotification = null;
                 bool isPostNotification = false;
                 Type httpHandlerType = null;
                     HttpContext context = httpApplication.Context;
                     if (context != null) {
                         if (!context.HideRequestResponse && context.Request != null) {
-                            requestUrl = context.Request.Unvalidated.Url;
+                            requestUrl = TryGetRequestUrl(context);
                         }
 
                         if (context.NotificationContext != null) {
                                    // BeginHandler hasn't yet returned, so this call may be synchronous or asynchronous.
                                    // We can tell by comparing the current thread with the thread which called BeginHandler.
                                    // From a correctness perspective, it is valid to invoke the AsyncCallback delegate either
-                                   // synchronously or asynchronously. From Microsoft: if 'CompletedSynchronously = true', then
+                                   // synchronously or asynchronously. From [....]: if 'CompletedSynchronously = true', then
                                    // AsyncCallback invocation can happen either on the same thread or on a different thread,
                                    // just as long as BeginHandler hasn't yet returned (which in true in this case).
                                    if (!asyncResult.CompletedSynchronously) {
         /// <param name="errorHandler">The listener that can handle verification failures.</param>
         /// <returns>A callback which performs the verification.</returns>
         internal static Action<bool> GetSyncContextCheckDelegateImpl(ISyncContext syncContext, Action<AppVerifierException> errorHandler) {
-            Uri requestUrl = null;
+            string requestUrl = null;
             object originalThreadContextId = null;
 
             // collect all of the diagnostic information upfront
             HttpContext originalHttpContext = (syncContext != null) ? syncContext.HttpContext : null;
             if (originalHttpContext != null) {
                 if (!originalHttpContext.HideRequestResponse && originalHttpContext.Request != null) {
-                    requestUrl = originalHttpContext.Request.Unvalidated.Url;
+                    requestUrl = TryGetRequestUrl(originalHttpContext);
                 }
 
                 // This will be used as a surrogate for the captured HttpContext so that we don't
             // collect all of the diagnostic information upfront
             NotificationContext originalNotificationContext = context.NotificationContext;
             bool isReentry = originalNotificationContext.IsReEntry;
-            Uri requestUrl = null;
+            string requestUrl = null;
             if (!context.HideRequestResponse && context.Request != null) {
-                requestUrl = context.Request.Unvalidated.Url;
+                requestUrl = TryGetRequestUrl(context);
             }
 
             AppendAdditionalInfoDelegate appendCurrentNotificationInfo = (errorString) => {
                     assert(!isReentry, AppVerifierErrorCode.PendingProcessRequestNotificationStatusAfterCompletingNestedNotification);
                 }
                 else {
-                    // Completing synchronously with pending NotificationContext means a 
-
-
+                    // Completing synchronously with pending NotificationContext means a bug in either user code or the pipeline.
+                    // NotificationContext being null means we already completed asynchronously before completing synchronously.
+                    // Both cases indicate that we have some async operations we failed to account for.
                     assert(context.NotificationContext != null && !context.NotificationContext.PendingAsyncCompletion,
                             AppVerifierErrorCode.RequestNotificationCompletedSynchronouslyWithNotificationContextPending);
 
         /// <param name="errorHandler">The listener that can handle verification failures.</param>
         /// <param name="appendAdditionalInfoDelegate">The caller can provide this delegate to append additional information to the exception. Could be null.</param>
         /// <returns>A callback which performs the verification.</returns>
-        private static AssertDelegate GetAssertDelegateImpl(Uri requestUrl, Action<AppVerifierException> errorHandler, AppendAdditionalInfoDelegate appendAdditionalInfoDelegate) {
+        private static AssertDelegate GetAssertDelegateImpl(string requestUrl, Action<AppVerifierException> errorHandler, AppendAdditionalInfoDelegate appendAdditionalInfoDelegate) {
             // If the condition passed to this method evaluates to false, we will raise an error to whoever is listening.
             return (condition, errorCode) => {
                 long mask = 1L << (int)errorCode;
             GC.KeepAlive(ex);
         }
 
+        private static string TryGetRequestUrl(HttpContext context) {
+            try {
+                return context.Request.EnsureRawUrl();
+            }
+            catch (HttpException) {
+                return null;
+            }
+        }
+
         internal static string PrettyPrintDelegate(Delegate del) {
             return PrettyPrintMemberInfo((del != null) ? del.Method : null);
         }
index 5eb65fa4470e79ddace24daf6ad7cdc556f08f9b..eabc339b8ee37b5ac790bad78d08951ad9db56c5 100644 (file)
@@ -31,12 +31,14 @@ namespace System.Web.Util {
             TargetsAtLeastFramework451 = (version >= VersionUtil.Framework451);
             TargetsAtLeastFramework452 = (version >= VersionUtil.Framework452);
             TargetsAtLeastFramework46 = (version >= VersionUtil.Framework46);
+            TargetsAtLeastFramework461 = (version >= VersionUtil.Framework461);
         }
 
         public bool TargetsAtLeastFramework45 { get; private set; }
         public bool TargetsAtLeastFramework451 { get; private set; }
         public bool TargetsAtLeastFramework452 { get; private set; }
         public bool TargetsAtLeastFramework46 { get; private set; }
+        public bool TargetsAtLeastFramework461 { get; private set; }
 
         public Version TargetFramework { get; private set; }
 
index 661eabdff1b022261af1b63245128a193c815e40..0d3ef7d91c602357906ac6825c0ab7f6e7b3c775 100644 (file)
@@ -269,8 +269,8 @@ namespace System.Web.Util {
                 }
                 declaringType = baseCheckMethodInfo.GetBaseDefinition().DeclaringType;
 
-                // DevDiv 
-
+                // DevDiv Bug 27734
+                // Ignore the declaring type if it's generic
                 if (declaringType.IsGenericType)
                     declaringType = type;
 
@@ -379,8 +379,8 @@ namespace System.Web.Util {
                 return accessor.GetProperty(target);
             }
             else {
-                // Dev10 
-
+                // Dev10 bug 491386 - avoid CLR code path that causes an exception when designer uses two
+                // assemblies of the same name at different locations
                 FieldInfo fieldInfo = null;
                 PropertyInfo propInfo = null;
                 Type declaringType;
@@ -419,8 +419,8 @@ namespace System.Web.Util {
                 accessor.SetProperty(target, val);
             }
             else {
-                // Dev10 
-
+                // Dev10 bug 491386 - avoid CLR code path that causes an exception when designer uses two
+                // assemblies of the same name at different locations
                 FieldInfo fieldInfo = null;
                 PropertyInfo propInfo = null;
                 Type declaringType = null;
index 70362cfbc81ce87e4976ae9a0a581130df6ed2ca..6455f6db12fe3f9a9d92c8f251501a9198dff1b6 100644 (file)
@@ -89,7 +89,7 @@ namespace System.Web.Util {
                 || c == '\'' // HTML-sensitive chars encoded for safety
                 || c == '<'
                 || c == '>'
-                || (c == '&' && JavaScriptEncodeAmpersand) // 
+                || (c == '&' && JavaScriptEncodeAmpersand) // Bug Dev11 #133237. Encode '&' to provide additional security for people who incorrectly call the encoding methods (unless turned off by backcompat switch)
                 || c == '\u0085' // newline chars (see Unicode 6.2, Table 5-1 [http://www.unicode.org/versions/Unicode6.2.0/ch05.pdf]) have to be encoded (DevDiv #663531)
                 || c == '\u2028'
                 || c == '\u2029';
index 0de88fe30ae893b7751d5f94bfe6a9381cc71db1..f34ba5fcd78cf78beb9a4365493f5045d5577d6e 100644 (file)
@@ -92,7 +92,7 @@ namespace System.Web.Util
                 } else if ( monthIndex == (sbyte) 'R' ) {
             
                     //
-                    // if s[1] is 'a' then Microsoft, if 'p' then April
+                    // if s[1] is 'a' then [....], if 'p' then April
                     //
             
                     if ( s_monthIndexTable[(s[1 + startIndex]-0x40) & 0x3f] == (sbyte) 'A' ) {
diff --git a/mcs/class/referencesource/System.Web/Util/RegexUtil.cs b/mcs/class/referencesource/System.Web/Util/RegexUtil.cs
new file mode 100644 (file)
index 0000000..b856b90
--- /dev/null
@@ -0,0 +1,83 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Text.RegularExpressions;
+
+namespace System.Web.Util {
+    internal class RegexUtil {
+
+        // this method is for the regex match which accepts the pattern from developer
+        // since asp.net doesn't have control of the regex pattern string and it is possible 
+        // to take more than 2 sec to match a string, give developer option to set timeout value
+        public static bool IsMatch(string stringToMatch, string pattern, RegexOptions regOption, int? timeoutInMillsec) {            
+            int timeout = GetRegexTimeout(timeoutInMillsec);
+
+            if (timeout > 0 || timeoutInMillsec.HasValue) {
+                return Regex.IsMatch(stringToMatch, pattern, regOption, TimeSpan.FromMilliseconds((double)timeout));
+            } else {
+                return Regex.IsMatch(stringToMatch, pattern, regOption);
+            }
+        }
+
+        public static Match Match(string stringToMatch, string pattern, RegexOptions regOption, int? timeoutInMillsec) {
+            int timeout = GetRegexTimeout(timeoutInMillsec);
+
+            if (timeout > 0 || timeoutInMillsec.HasValue) {
+                return Regex.Match(stringToMatch, pattern, regOption, TimeSpan.FromMilliseconds((double)timeout));
+            } else {
+                return Regex.Match(stringToMatch, pattern, regOption);
+            }
+        }
+
+        public static Regex CreateRegex(string pattern, RegexOptions option, int? timeoutInMillsec) {
+            int timeout = GetRegexTimeout(timeoutInMillsec);
+
+            if (timeout > 0 || timeoutInMillsec.HasValue) {
+                return new Regex(pattern, option, TimeSpan.FromMilliseconds((double)timeout));
+            } else {
+                return new Regex(pattern, option);
+            }
+        }
+
+        // This method is for the regex asp.net controls the regex pattern and it should NOT take longer than 2 secs to match the string
+        // so no need for developer to specify a timeout value
+        internal static Regex CreateRegex(string pattern, RegexOptions option) {
+            return CreateRegex(pattern, option, null);
+        }
+
+        private static bool? _isRegexTimeoutSetInAppDomain;
+        private static bool IsRegexTimeoutSetInAppDomain {
+            get {
+                if (!_isRegexTimeoutSetInAppDomain.HasValue) {
+                    bool timeoutSetInAppDomain = false;
+                    try {
+                        timeoutSetInAppDomain = AppDomain.CurrentDomain.GetData("REGEX_DEFAULT_MATCH_TIMEOUT") != null;
+                    } catch {
+                    }
+                    _isRegexTimeoutSetInAppDomain = timeoutSetInAppDomain;
+                }
+                return _isRegexTimeoutSetInAppDomain.Value;
+            }
+        }
+
+        private static int GetRegexTimeout(int? timeoutInMillsec) {
+            int timeout = -1;
+
+            // here is the logic for using timeout in regex
+            // 1. if the caller sets a timeout value, then we use it(this may cause Regex throw ArgumentOutOfRangeException, 
+            // but developer will know what they need to do when seeing the exception)
+            // 2. if there is global setting in AppDomain, we do nothing(leave it to Regex to handle the timeout)
+            // 3. if the web app targets to 4.6.1+, then we set 2 secs timeout
+            if (timeoutInMillsec.HasValue) {
+                timeout = timeoutInMillsec.Value;
+            } else {
+                if (!IsRegexTimeoutSetInAppDomain && BinaryCompatibility.Current.TargetsAtLeastFramework461) {
+                    timeout = 2000;
+                }
+            }
+            return timeout;
+        }
+    }
+}
index 567446cea96a6181d5e35cb31e09ba6f1ae883e1..9a104eabbf598ee8deff7ab499926c6935696e05 100644 (file)
@@ -215,6 +215,17 @@ namespace System.Web.Util {
             return iValue;
         }
 
+        internal static int? GetNullableIntValue(NameValueCollection config, string valueName) {
+            int iValue;
+            string sValue = config[valueName];
+
+            if (sValue == null || !Int32.TryParse(sValue, out iValue)) {
+                return null;
+            }
+
+            return iValue;
+        }
+
 #if !FEATURE_PAL //
         internal static void CheckSchemaVersion(ProviderBase provider, SqlConnection connection, string[] features, string version, ref int schemaVersionCheck) {
             if (connection == null) {
index dd62049e927076124b11614ceece4c60d3571327..091076e02fe2ec8aa165b13652b569ae1b979a04 100644 (file)
@@ -165,7 +165,7 @@ namespace System.Web.Util {
                     // For example, the "//" could be missing, or there could be "///" as in "file:///C:\foo.txt"
                     // To retain the same string as originally given, find the authority in the original url and include
                     // everything up to that.
-                    int authorityIndex = inputWithoutQueryFragment.IndexOf(authority, StringComparison.Ordinal);
+                    int authorityIndex = inputWithoutQueryFragment.IndexOf(authority, StringComparison.OrdinalIgnoreCase);
                     if (authorityIndex != -1) {
                         int schemeAndAuthorityLength = authorityIndex + authority.Length;
                         schemeAndAuthority = inputWithoutQueryFragment.Substring(0, schemeAndAuthorityLength);
index a28855bd9ae3143098c9d033cbfd8736324ee000..5d485eabb754a5ecf577379a8a671e67bf3681d9 100644 (file)
@@ -23,6 +23,7 @@ namespace System.Web.Util {
         public static readonly Version Framework451 = new Version(4, 5, 1);
         public static readonly Version Framework452 = new Version(4, 5, 2);
         public static readonly Version Framework46 = new Version(4, 6);
+        public static readonly Version Framework461 = new Version(4, 6, 1);
 
         // Convenience accessor for the "default" framework version; various configuration
         // switches can use this as a default value. This value must only be bumped during
index 64b6f95526e197855f2273d64118e7dec9903184..742ac821be6ab31f490875adc96a147d544a013d 100644 (file)
@@ -489,8 +489,8 @@ namespace System.Web.WebSockets {
             }
 
             if (closeStatus == WebSocketCloseStatus.Empty) {
-                // Fix 
-
+                // Fix Bug : 312472, we would like to allow empty strings to be passed to our APIs when status code is 1005.
+                // Since WSPC requires the statusDescription to be null, we convert.
                 if (statusDescription == String.Empty) {
                     statusDescription = null;
                 }
index 54ea1bc1687e555b26c0c424d1e072601f6be494..0b42996659ac1e4ea8385f08a95eded80d4b8ebe 100644 (file)
@@ -492,7 +492,7 @@ namespace System.Web {
                             targetPage.SmartNavigation = true;
 #pragma warning restore 0618
 
-                        // If the target page is async need to save/restore sync context
+                        // If the target page is async need to save/restore [....] context
                         if (targetPage is IHttpAsyncHandler) {
                             savedSyncContext = _context.InstallNewAspNetSynchronizationContext();
                         }
index 159dedbb6c64824800d5117d1e9af67d2c300f84..76e02fafbaf129d1df896e79c433af109780ea35 100644 (file)
@@ -8,11 +8,11 @@
  */
 
 
-#if Microsoft_NAMESPACE
+#if WINFORMS_NAMESPACE
     namespace System.Windows.Forms
 #elif DRAWING_NAMESPACE
     namespace System.Drawing
-#elif Microsoft_PUBLIC_GRAPHICS_LIBRARY
+#elif WINFORMS_PUBLIC_GRAPHICS_LIBRARY
     namespace System.Internal
 #elif SYSTEM_NAMESPACE
     namespace System
@@ -127,7 +127,7 @@ namespace System.Windows.Forms
             return Activator.CreateInstance(type, flags, null, args, null);
         }
 
-#if (!Microsoft_NAMESPACE)
+#if (!WINFORMS_NAMESPACE)
 
         /// <devdoc>
         ///     This helper method provides safe access to Activator.CreateInstance.
index 6217eb6875764c1723d01bab2a5def00ecd4e7cd..edf00c3bb3669620aeed98f6109c77dd9b181850 100644 (file)
@@ -22,7 +22,7 @@ using System.Workflow.ComponentModel.Design;
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Common\Shared
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Common\Shared\BasePropertyDescriptor.cs
 *********************************************************************/
 
@@ -414,8 +414,8 @@ namespace System.Workflow.Activities.Common
             {
                 if (this.avoidDuplication)
                 {
-                    // WinOE 
-
+                    // WinOE Bug 10442: should only prefix with "(Parameter)" if there is and existing
+                    // member of the same name.
                     return GetParameterPropertyName(this.componentType, base.Name);
                 }
                 else
index 904f2cb3041e96c02fdb7f64b67ef50dc67bc61c..cc6b22aba9e6cb504393f22a7ebe0470d23c6185 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Common\Shared
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Common\Shared\CompModHelpers.cs
 *********************************************************************/
 
@@ -1169,10 +1169,10 @@ namespace System.Workflow.Activities.Common
                 Guid parentContextGuid = GetRuntimeContextGuid(parentContextActivity);
                 while (activity == null && declaringContextGuid != currentContextGuid)
                 {
-                    // WinOE 
-
-
-
+                    // WinOE Bug 17931: if the context id is different, it means that this activity is running in a child context (such as 
+                    // the children of a replicator or a while).  we need to resolve the activity within the child context
+                    // first.  If we go up to the declaring activity, we'd be finding children of the template instead of
+                    // the actual running instance.
                     while (parentContextActivity != null && parentContextGuid == currentContextGuid)
                     {
                         currentContextActivity = parentContextActivity;
@@ -1395,10 +1395,10 @@ namespace System.Workflow.Activities.Common
     }
     #endregion
 
-    // This class has been added as a fix for 
-
-
-
+    // This class has been added as a fix for bug 18214 in order to 
+    // create an independent code-path for debugger's use of ParseActivity functionality.
+    // The GetActivity method of this class uses QualifiedName instead of Name property
+    // for finding activities.
     internal static class DebuggerHelpers
     {
         [SuppressMessage("Microsoft.Globalization", "CA1307:SpecifyStringComparison", Justification = "IndexOf(\".\") not a security issue.")]
index 27ec4c11f6d4a8c46c0b6565dabd6ee460f03d7b..d02d9fe9138d25801c82a1534650ea4faaf7f003 100644 (file)
@@ -10,7 +10,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Common\Shared
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Common\Shared\CompilerHelpers.cs
 *********************************************************************/
 
index a7f911669f6c19d509d59f6909c74c6806af81b6..c3667ac5b60e7a15dcc38b0b44ecf16bffb499f3 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Common\Shared
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Common\Shared\DelegateTypeInfo.cs
 *********************************************************************/
 
index 8870aea0337cba194ddbf8df26ef4bcb1fa201b0..38e72c5ab8c909d41fcf465853c7fe6b347373eb 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Common\Shared
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Common\Shared\NativeMethods.cs
 *********************************************************************/
 namespace System.Workflow.Activities.Common
index d8cc8d986e51950110cb458bdc29994de3976dc9..caa3bbcf2bc0fc5978ffdffdd63b24d950200f39 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Common\Shared
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Common\Shared\TypeSystemHelpers.cs
 *********************************************************************/
 namespace System.Workflow.Activities.Common
index 65a9025900758416ebca9e97a187314c72a6dab0..b0ada5fd4c64d8836ee3d6e263873b50ef616105 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Common\Shared
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Common\Shared\ValidationHelpers.cs
 *********************************************************************/
 namespace System.Workflow.Activities.Common
index 7e450ac2b2fbe76c09dc4e014b7f50a345c6e0a7..9bd77fe7ed756f4b54190fce6cb3e7270e833ed5 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Common\Shared
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Common\Shared\Walker.cs
 *********************************************************************/
 namespace System.Workflow.Activities.Common
index b2a5a7a3302656032b17742cde28b042ad7c60c5..96aeacd9207db1427fabbf8fc24ccbe335fcd274 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Common\Shared
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Common\Shared\userdatakeys.cs
 *********************************************************************/
 namespace System.Workflow.Activities.Common
index 8d2add81be30063404eb6a2a2abd3e14214928ce..b7c11d49dca952e90a36864ed008fcb9940751e2 100644 (file)
@@ -840,7 +840,7 @@ namespace System.Workflow.Activities
                 //This is a work around for delgates of unbounded generic type. There is no support
                 //in file code model for these so we dont support it for now. The only way
                 //to detect if the DesignTimeEventInfo has EventHandler of unbounded generic type
-                //is to check if we get the methods correctly here Ref 
+                //is to check if we get the methods correctly here Ref Bug#17783
                 EventInfo eventInfo = interfaceType.GetEvent(operation);
                 if (eventInfo == null || eventInfo.GetAddMethod(true) == null)
                 {
index aebbe257d5a034897640962fd30884a98842d16b..be0a25e030917cc156b2b8561f1cd9c5e061d45d 100644 (file)
@@ -349,8 +349,8 @@ namespace System.Workflow.Activities
             if (wfQueue != null && wfQueue.Count != 0)
                 wfQueue.Dequeue();
 
-            // WinOE 
-
+            // WinOE Bug 16929: In the case of dynamic update, if this activity is being removed,
+            // we can not trace back to the root activity from "this".  
             Activity root = parentContext.Activity;
             while (root.Parent != null)
                 root = root.Parent;
index 4d06e1f0977f544b94b6266d5ad8e8d59f72aab7..f5df33064b5543aa0735711d6bb6707f6ab18090 100644 (file)
@@ -197,13 +197,13 @@ namespace System.Workflow.Activities
                 IComparable initializerValue = initializerValues.Current.Value as IComparable;
                 object followerValue = followerValues.Current.Value;
 
-                // 
-
-
-
-
-
-
+                // Bug DevDiv2\DevDiv 552322 - http://vstfdevdiv.redmond.corp.microsoft.com:8080/DevDiv2/DevDiv/_workitems#_a=edit&id=552322
+                // Reflection does not guarantee ordering, so the two collections (arrays) of
+                // CorrelationProperties may not be in the same order, based on Name. So we need to check all the
+                // elements of the followerProperties for the Name of the current initializerValue.
+                // The collections MIGHT be in the same order. Before searching the followerProperties collection for an element with a matching
+                // name, see if the current element in the initializerValues and followerValues enumerators have a matching name.
+                // If they do match, just fall thru because followerValue is already set to followerValues.Current.Value;
                 if (!initializerValues.Current.Name.Equals(followerValues.Current.Name, StringComparison.OrdinalIgnoreCase))
                 {
                     CorrelationProperty followerProperty = null;
index 3db7b1ea94a15c959a5c1b10990e9142fd4b217b..a9088872fd444c14dfc5a6f821d5bb1fca6ef664 100644 (file)
@@ -1,4 +1,4 @@
-#region Using directives
+#region Using directives
 
 using System;
 using System.Diagnostics;
index 01f8711a9fb60f35adf219f62f83c7bfd8244e72..b7fb7591d13c88ae4bc9450ebf34053fe4404190 100644 (file)
@@ -911,7 +911,7 @@ namespace System.Workflow.ComponentModel
             }
             else if (!this.DesignMode)
             {
-                // WinOE 
+                // WinOE Bug 20584: Fix this for dynamic updates only.  See bug description for details.
                 CompositeActivity parent = (withinThisActivityOnly ? this : this.RootActivity) as CompositeActivity;
                 if (parent != null)
                 {
index b58bbb630ba1c9fea162ae25d60d96803880d2cb..4ee980c8ce38da4fba16b941db209d087ad6c7c1 100644 (file)
@@ -127,9 +127,9 @@ namespace System.Workflow.ComponentModel
             compositeActivity.OnWorkflowChangesCompleted(executionContext);
         }
 
-        // Refer 
-
-
+        // Refer Bug 9339 (VB Compilation Failure - Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.)
+        //An unhandled exception of type 'System.TypeLoadException' occurred
+        // "Signature of the body and declaration in a method implementation do not match"
         protected override ActivityExecutionStatus Execute(T activity, ActivityExecutionContext executionContext)
         {
             return base.Execute(activity, executionContext);
index b60ee98da4ff90955106db4025077585614e569e..32eec08bf71df6c3dd02b241ad4a94ba00e91d52 100644 (file)
@@ -1115,15 +1115,15 @@ namespace System.Workflow.ComponentModel.Compiler
             return memberCollection;
         }
 
-        // CFx 
-
-
-
-
-
-
-
-
+        // CFx bug 461 
+        // The code dom being generated by VsCodeDomParser.cs does not
+        // add default constructors for classes unless they
+        // exist in the source code. Unfortunately, this cannot be easily
+        // fixed in the CodeDomParser because the code dom returned by that
+        // class is expected to kept in [....] with the real source code. 
+        // So we cannot "fabricate" a default constructor there without
+        // breaking lots of assumptions elsewhere in the code. 
+        // Instead, we add a default constructor here, if necessary.
         private List<ConstructorInfo> GetCodeDomConstructors()
         {
             List<ConstructorInfo> constructors = GetCodeDomMembers<ConstructorInfo>();
index 1ea88cabec1af6eb768efadb79720d6d8c7e4679..95e9dd8b725cebaa822630229eb6b1c477911ad3 100644 (file)
@@ -463,12 +463,12 @@ namespace System.Workflow.ComponentModel.Compiler
             }
 
             // replace the System.Type with RTTypeWrapper for generic types.
-            // WinOE 
-
-
-
-
-
+            // WinOE Bug 16560: The type provider may be used at runtime.  No RTTypeWrapper should ever be returned
+            // at runtime.  
+            // At design time, we need to wrap all generic types even if the parameter types are not 
+            // design time types.  This is because our parsing function creates a base generic type before it binds
+            // all the parameters.  The RTTypeWrapper.MakeGenericType override will then take care of binding to 
+            // design time types.
             if (this.designTimeTypes != null && this.designTimeTypes.Count > 0 && returnType.Assembly != null && returnType.IsGenericTypeDefinition)
             {
                 if (this.hashOfRTTypes.Contains(returnType))
index 7ad8751fd372d71ef345fbc5b271351d6b94e674..72e03066410ad42fcb1fb51153d2da3e0f1ee52b 100644 (file)
@@ -683,8 +683,8 @@ namespace System.Workflow.ComponentModel.Compiler
                     parameters.LocalAssembly = GenerateLocalAssembly(files, codeFiles, parameters, results, out intermediateTempFiles, out localAssemblyPath, out createdDirectoryName);
                     if (parameters.LocalAssembly != null)
                     {
-                        // WinOE 
-
+                        // WinOE Bug 17591: we must set the local assembly here,
+                        // otherwise, the resolver won't be able to resolve custom types correctly.
                         resolver.SetLocalAssembly(parameters.LocalAssembly);
 
                         // Work around HERE!!!
index d9e3a1d7ad6f1ed7ba47d228c01f85a4c6bd0422..ceb085c2822a2912336f9a1f58436830b495cb0a 100644 (file)
@@ -104,7 +104,7 @@ namespace System.Workflow.ComponentModel.Compiler
                         }
 
                         // In case of VB, if the ctor is autogenerated the PDB will not have symbol 
-                        // information. Use InitializeComponent method as the fallback. 
+                        // information. Use InitializeComponent method as the fallback. Bug 19085.
                         if (String.IsNullOrEmpty(fileName))
                         {
                             MethodInfo initializeComponent = type.GetMethod("InitializeComponent", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);
index 16fa06d5333d714b98736c59d0b9ee25d2958524..b4bc498aa1143f019005938449e7db7dabb1accf 100644 (file)
@@ -178,7 +178,7 @@ namespace System.Workflow.ComponentModel
             FieldInfo fieldInfo = null;
             bool isEvent = (typeof(System.Delegate).IsAssignableFrom(propertyType) && (defaultMetadata == null || (defaultMetadata.Options & DependencyPropertyOptions.DelegateProperty) == 0));
 
-            // WinOE 
+            // WinOE Bug 13807: events can not be meta properties.
             if (isEvent && defaultMetadata != null && defaultMetadata.IsMetaProperty)
                 throw new ArgumentException(SR.GetString(SR.Error_DPAddHandlerMetaProperty), "defaultMetadata");
 
index 27a55ac9886321e46767c948351b6165a17517cb..d621aec247d2b5c7939929825e6a6ea07edd32c2 100644 (file)
@@ -80,7 +80,7 @@ namespace System.Workflow.ComponentModel.Design
                         // Properties
                         new CommandSetItem(new EventHandler(OnStatusAlways), new EventHandler(OnMenuDesignerProperties), WorkflowMenuCommands.DesignerProperties),
 
-                        // IMPORTANT: Microsoft does not handle this command, so VS.NET sends it to solution explorer
+                        // IMPORTANT: [....] does not handle this command, so VS.NET sends it to solution explorer
                         // window, which enables this meu item on the for the current file node
                         new CommandSetItem(new EventHandler(OnStatusAlways), new EventHandler(OnViewCode), new CommandID(StandardCommands.Cut.Guid, 333)),
 
@@ -563,7 +563,7 @@ namespace System.Workflow.ComponentModel.Design
                     WorkflowView view = rootDesigner.GetView(ViewTechnology.Default) as WorkflowView;
                     if (view != null)
                     {
-                        //because the some key presses are not coming into the Microsoft OnKeyDown
+                        //because the some key presses are not coming into the [....] OnKeyDown
                         //we need to do this work around to manually send the keypress into the designer
 
                         KeyEventArgs eventArgs = new KeyEventArgs(key);
index bbbb984c10685790e7f8c7399c6319bea1aca87d..1b29bfee5c96c44b18936a15d08c19c2ba84a7ce 100644 (file)
@@ -764,7 +764,7 @@ namespace System.Workflow.ComponentModel.Design
                     return false;
 
                 ActivityDesigner designerToInsert = null;
-#pragma warning disable 56506//
+#pragma warning disable 56506//bug in presharp, activity has already been checked for null value
                 if (activity.Site != null)
                 {
                     //get an existing designer
@@ -787,7 +787,7 @@ namespace System.Workflow.ComponentModel.Design
                         activity.UserData[typeof(ActivityDesigner)] = designerToInsert;
                     }
                 }
-#pragma warning restore 56506//
+#pragma warning restore 56506//bug in presharp
 
                 if (designerToInsert == null)
                     return false;
@@ -1024,8 +1024,8 @@ namespace System.Workflow.ComponentModel.Design
                 //For details look at,
                 //\\cpvsbuild\drops\whidbey\pd6\raw\40903.19\sources\ndp\fx\src\Designer\Host\UndoEngine.cs
                 //OnComponentRemoving function which retains the references we hold to the parent
-                //This 
-
+                //This bug can be reproed by deleting a compositeactivity from design surface and then doing an undo
+                //VSWhidbey #312230
                 activity.SetParent(null);
                 if (activity is CompositeActivity)
                 {
index 937d534220281dd2cb85bff8985a7fa745a8c089..f77c81369462b4c6c8148a559e835d90e77ec97a 100644 (file)
         private string category;
         private string description;
         private DesignerSerializationVisibility designerSerializationVisibility = DesignerSerializationVisibility.Visible;
-        // NOTE: we don't write the ValidationOption attribute anymore (WinOE 
-
-
-
-
-
-
-
+        // NOTE: we don't write the ValidationOption attribute anymore (WinOE Bug 17398). We have removed our property creation
+        // dialog in beta1.  Now this code is only used for property promotion.  If the promoted property is a meta property,
+        // it can not be bindable so no promotion is not allowed.  If the property is an instance property, this attribute is ignored.  
+        // There is no reason for writing out this attribute anymore.We just remove it from property promotion all together.
+        // NOTE II: for the same reason that this code is only used for promotion, we don't write out meta properties anymore.
+        // We had customized the CodeDomSerializer.Deserialize to recognize meta properties by inspecting the field init expression,
+        // which is no long needed.  If we were to bring this functionality back in the future, sample code can be found
+        // from the file history in Source Depot.
         private bool isEvent = false;
         private bool browseable = true;
         private bool hidden = false;
index ad60d2bfc19a7841af553fa04281b4897c290d46..aa9a5ced95592e2217150ef0b6bc2b21e6441031 100644 (file)
@@ -25,7 +25,7 @@ namespace System.Workflow.ComponentModel.Design
     [Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
     public sealed class ThemeConfigurationDialog : System.Windows.Forms.Form
     {
-        #region Microsoft Generated Members
+        #region [....] Generated Members
         private System.Windows.Forms.Button button3;
         private System.Windows.Forms.TreeView designerTreeView;
         private System.Windows.Forms.Label themeNameLabel;
index a73a938fabfc85c8c71f8c9e28be2d3736aec921..9ee70afdcbdbabfa3389b1b65500f96e9993df0d 100644 (file)
@@ -1230,7 +1230,7 @@ namespace System.Workflow.ComponentModel.Design
                         catch (NullReferenceException)
                         {
                             // Work around: for some reason RuntimeType.Namespace throws exception for array of generic
-                            //       Remove the try-catch when the 
+                            //       Remove the try-catch when the bug is fixed.
                         }
                         keywords[1] = "{" + keywords[1] + "}";
                         keywords[2] = (selectedType.Assembly != null) ? selectedType.Assembly.GetName().FullName : "<Current Project>";
index 0c0d1897ee40799da60aeb597b39fd0df04c8ff7..57f8cb537bd81595c18f00652eda77148dfe80eb 100644 (file)
@@ -14,7 +14,7 @@ namespace System.Workflow.ComponentModel.Design
     [Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
     public sealed class WorkflowPageSetupDialog : System.Windows.Forms.Form
     {
-        #region Microsoft Desiger Generated Members
+        #region [....] Desiger Generated Members
         private System.ComponentModel.Container components = null;
         private System.Windows.Forms.TabControl tabs;
         private System.Windows.Forms.PictureBox landscapePicture;
index c8701dd8fdcf1e36cc469c8bb6eb892598f1c84a..9d07b2e10262b30888d364e55574f3b4b141c96d 100644 (file)
@@ -60,7 +60,7 @@ namespace System.Workflow.ComponentModel.Design
         private const int cmdidWOEShowAll = 0x3107;
 
         public const int FirstZoomCommand = cmdidWOEZoom400; //the first and last zoom commands
-        public const int LastZoomCommand = cmdidWOEShowAll; //should be in sync with the \private\Core\Tools\OrchestrationDesignerUI\PkgCmdID.h
+        public const int LastZoomCommand = cmdidWOEShowAll; //should be in [....] with the \private\Core\Tools\OrchestrationDesignerUI\PkgCmdID.h
 
         // page layout
         private const int cmdidDefaultPage = 0x3110;
index a2ca29c6aaa7a0f016f6b714afadbb78af0cc0f1..14e64a3aebc37a8b73cb7c0659347f1095b0c9d1 100644 (file)
@@ -64,7 +64,7 @@ namespace System.Workflow.ComponentModel.Design
         {
             // If the references are null, create them for the first time and connect
             // up our events to listen to changes to the container.  Otherwise, check to
-            // see if the added or removed lists contain anything for us to sync up.
+            // see if the added or removed lists contain anything for us to [....] up.
             //
             if (this.references == null)
             {
index ed7ed08ff4e48f66622bd3a8b38c0335913b9c9f..0decc066f5e89324d070ae83e5dd0b17d913936c 100644 (file)
@@ -150,7 +150,7 @@ namespace System.Workflow.ComponentModel.Design
                 //activities with errors we want to reveal these activities
                 DesignerHelpers.RefreshDesignerActions(Activity.Site);
 
-                //Keep the dynamic action and designer verbs in sync
+                //Keep the dynamic action and designer verbs in [....]
                 RefreshDesignerVerbs();
             }
         }
index 6a3dac250f9a3a75d508b301ae928e3872b14e98..1b8a6df8015e3192e8f76463e438f37a9651a724 100644 (file)
@@ -181,7 +181,7 @@ namespace System.Workflow.ComponentModel.Design
             //Initialize the tooltip shown
             this.workflowToolTip = new WorkflowToolTip(this);
 
-            //Sync the global theme change event, which is fired by the theme infrastructure for theme change
+            //[....] the global theme change event, which is fired by the theme infrastructure for theme change
             WorkflowTheme.ThemeChanged += new EventHandler(OnThemeChange);
 
             //Create the core message filters
@@ -1497,7 +1497,7 @@ namespace System.Workflow.ComponentModel.Design
             //To enable this functionality please note that selection change is not a good event as it will get
             //fired in multiple cases, instead we should add a event in extended ui service which will do this and move
             //the following code in the event handler of that event
-            //Ref 
+            //Ref Bug#3925
 
             if (RootDesigner != null && RootDesigner.Activity != null)
             {
index 4f767edf08aeb83728d06273a3af0e75f8bebbae..efc369bad0ab811f7a705dfa88710920a8a54d7d 100644 (file)
@@ -201,8 +201,8 @@ namespace System.Workflow.ComponentModel
                     {
                         foreach (Activity contextActivity in contextActivities)
                         {
-                            // WinOE 
-
+                            // WinOE Bug 16903: Ask the contextActivity itself whether or not it can be removed.
+                            // An activity can not be removed if it's in the executing mode.
                             if (changeAction is RemovedActivityAction &&
                                 contextActivity.DottedPath == ((RemovedActivityAction)changeAction).OriginalRemovedActivity.DottedPath)
                                 validationErrors.AddRange(changeAction.ValidateChanges(contextActivity));
index 532c3d76d0e19a449f3ee64ecb46e068454973ac..edb21a0ab4c9325aa2b8e185f95d14ded473ad17 100644 (file)
@@ -21,7 +21,7 @@ using System.Workflow.ComponentModel.Compiler;
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Activities\Common
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Activities\Common\BasePropertyDescriptor.cs
 *********************************************************************/
 
@@ -413,8 +413,8 @@ namespace System.Workflow.ComponentModel.Design
             {
                 if (this.avoidDuplication)
                 {
-                    // WinOE 
-
+                    // WinOE Bug 10442: should only prefix with "(Parameter)" if there is and existing
+                    // member of the same name.
                     return GetParameterPropertyName(this.componentType, base.Name);
                 }
                 else
index 1e5a102e2786b19a4ffe8ab25abe231863ee91e1..2183def5736f77aeb1486e6d13decc2daf195ca5 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Activities\Common
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Activities\Common\CompModHelpers.cs
 *********************************************************************/
 namespace System.Workflow.ComponentModel.Design
@@ -1167,10 +1167,10 @@ namespace System.Workflow.ComponentModel.Design
                 Guid parentContextGuid = GetRuntimeContextGuid(parentContextActivity);
                 while (activity == null && declaringContextGuid != currentContextGuid)
                 {
-                    // WinOE 
-
-
-
+                    // WinOE Bug 17931: if the context id is different, it means that this activity is running in a child context (such as 
+                    // the children of a replicator or a while).  we need to resolve the activity within the child context
+                    // first.  If we go up to the declaring activity, we'd be finding children of the template instead of
+                    // the actual running instance.
                     while (parentContextActivity != null && parentContextGuid == currentContextGuid)
                     {
                         currentContextActivity = parentContextActivity;
@@ -1393,10 +1393,10 @@ namespace System.Workflow.ComponentModel.Design
     }
     #endregion
 
-    // This class has been added as a fix for 
-
-
-
+    // This class has been added as a fix for bug 18214 in order to 
+    // create an independent code-path for debugger's use of ParseActivity functionality.
+    // The GetActivity method of this class uses QualifiedName instead of Name property
+    // for finding activities.
     internal static class DebuggerHelpers
     {
         [SuppressMessage("Microsoft.Globalization", "CA1307:SpecifyStringComparison", Justification = "IndexOf(\".\") not a security issue.")]
index 437248e7ea38fbe2214a6a417038b7eb38c0545f..c6dceb5b0de18d577a83bdffaccc5c06a25edeaa 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Activities\Common
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Activities\Common\CompilerHelpers.cs
 *********************************************************************/
 
index 3539c96edfb443fefa055e7a2cfdca9020d65847..01603ca74460d5f9d8e1fa0da7adc1f265425557 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Activities\Common
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Activities\Common\DelegateTypeInfo.cs
 *********************************************************************/
 namespace System.Workflow.ComponentModel
index cfd5e0e814aa903851f0f8d18db4890b41b81e6c..f6e921b5fc0f831fb74d14da99de814954f9a7be 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Activities\Common
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Activities\Common\NativeMethods.cs
 *********************************************************************/
 namespace System.Workflow.Interop
index 896ddf1cd9fef0dc2f3b4744c3600aa0e616b4cb..9b53df5eee38d90f34659d46fde372f3ad535ddf 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Activities\Common
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Activities\Common\TypeSystemHelpers.cs
 *********************************************************************/
 namespace System.Workflow.ComponentModel.Compiler
index 6f80c6056367643e30650c77f1e3f0c0ad3a3181..a93a3d061f900f258cbfbc61fdc361456e04c5e8 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Activities\Common
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Activities\Common\ValidationHelpers.cs
 *********************************************************************/
 namespace System.Workflow.ComponentModel.Compiler
index 1a8c8858e1747e7ca36db34830df9e9de336ad7d..e47e60f1c630ac59ff214ff1ad14e7c911571207 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Activities\Common
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Activities\Common\Walker.cs
 *********************************************************************/
 namespace System.Workflow.ComponentModel
index 90a6b6c5e14881ac508aa52042e17af5956bbb46..8407e6098fe61ecbba4a697066d76f799122b682 100644 (file)
@@ -207,11 +207,11 @@ namespace System.Workflow.ComponentModel.Serialization
                                     continue;
                                 if (codeDomProvider.IsValidIdentifier(codeDomSerializationManager.GetName(activity)))
                                 {
-                                    // WinOE 
-
-
-
-
+                                    // WinOE Bug 14561.  This is to fix a performance problem.  When an activity is added to the activity
+                                    // tree at the runtime, it's much faster if the ID of the activity is already set.  The code that
+                                    // the CodeDomSerializer generates will add the activity first before it sets the ID for the child
+                                    // activity.  We can change that order by always serializing the children first.  Therefore, we 
+                                    // construct a list where we guarantee that the child will be serialized before its parent.
                                     allActivities.Insert(0, activity);
                                 }
                                 else
index 3afb84b96008cde8e9311944e7c431b5c0dbc681..9812b64d26862f3bad34507a2f14929b924cbc55 100644 (file)
@@ -9,7 +9,7 @@
 
 /*********************************************************************
  * NOTE: A copy of this file exists at: WF\Activities\Common
- * The two files must be kept in sync.  Any change made here must also
+ * The two files must be kept in [....].  Any change made here must also
  * be made to WF\Activities\Common\UserDataKeys.cs
 *********************************************************************/
 namespace System.Workflow.ComponentModel
index 3a040d71d3febeb373596a2167e038987dd34f7e..3515b4383e35bf77f249cffa9c0b2cc182bbcf57 100644 (file)
@@ -880,7 +880,7 @@ namespace System.Workflow.Runtime.DebugEngine
         #region Helper methods and properties
 
         // Callers of this method should acquire the executor lock only if they 
-        // are not being called in the runtime thread.(
+        // are not being called in the runtime thread.(bug 17231).
         private void LoadExistingInstance(WorkflowInstance instance, bool attaching)
         {
             WorkflowExecutor executor = instance.GetWorkflowResourceUNSAFE();
index 14e2986fca83c4d85005e3db98ceb0e917a87e52..c540688abed0a1cfb2dd6c50758021ca674ed9db 100644 (file)
@@ -159,8 +159,8 @@ namespace System.Workflow.Runtime.DebugEngine
                 {
                     try
                     {
-                        // Expression eval on x64 does not work (
-
+                        // Expression eval on x64 does not work (bug 18143) so 
+                        // don't let the thread spin.
                         if (IntPtr.Size == 8)
                         {
                             Thread.Sleep(Timeout.Infinite);
index 2744a3bf95a288f8a35994b5180471b08fd37e1d..ba6ece5f1ecd9dcd38cf002a10cba4d9944c44b1 100644 (file)
@@ -10,7 +10,7 @@
 // REVISIONS
 // Date          Ver     By           Remarks
 // ~~~~~~~~~~    ~~~     ~~~~~~~~     ~~~~~~~~~~~~~~
-// 03/08/01      1.0     Microsoft       Created.
+// 03/08/01      1.0     [....]       Created.
 // ****************************************************************************
 using System;
 using System.Runtime.Serialization;
index a02a570083b56d256ebdd6e5ac27cd9835d41915..4327f7bd4244bcdb137998bd602fdbd857e3e3c0 100644 (file)
@@ -453,7 +453,7 @@ namespace System.Workflow.Runtime.Hosting
                         WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "SqlWorkflowPersistenceService.RetrieveInstanceState retrying.");
                         continue;
                     }
-                    else if (e is RetryReadException)    // ### hardcoded retry to work around sql ADM64 read 
+                    else if (e is RetryReadException)    // ### hardcoded retry to work around sql ADM64 read bug ###
                     {
                         count++;
                         if (count < 10)
@@ -510,7 +510,7 @@ namespace System.Workflow.Runtime.Hosting
                         WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "SqlWorkflowPersistenceService.RetrieveCompletedScope retrying.");
                         continue;
                     }
-                    else if (e is RetryReadException)    // ### hardcoded retry to work around sql ADM64 read 
+                    else if (e is RetryReadException)    // ### hardcoded retry to work around sql ADM64 read bug ###
                     {
                         count++;
                         if (count < 10)
@@ -617,7 +617,7 @@ namespace System.Workflow.Runtime.Hosting
                     {
                         WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "SqlWorkflowPersistenceService.RetrieveStateFromDB Failed to read results {0}", instanceId);
                     }
-                    else if ((int)resultParam.Value > 0)    // found results but failed to read - sql 
+                    else if ((int)resultParam.Value > 0)    // found results but failed to read - sql bug - retry the query
                     {
                         WorkflowTrace.Host.TraceEvent(TraceEventType.Error, 0, "SqlWorkflowPersistenceService.RetrieveStateFromDB Failed to read results {1}, @result == {0}", (int)resultParam.Value, instanceId);
                         throw new RetryReadException();
index aa4a26754356fa86942b295e7bd18db48e0ae58e..a5155c762e3fd9cbc4bcd7fcb6a5b1885b39f960 100644 (file)
@@ -10,7 +10,7 @@
 // REVISIONS
 // Date          Ver     By           Remarks
 // ~~~~~~~~~~    ~~~     ~~~~~~~~     ~~~~~~~~~~~~~~
-// 02/22/05      1.0     Microsoft       Implementation.
+// 02/22/05      1.0     [....]       Implementation.
  * ****************************************************************************/
 
 #region Using directives
index 0952d2bc1fe9c7ebbf732d0e8615d08397156205..383e5442eb25602dc26ebcad15bac6de6fbded66 100644 (file)
@@ -158,7 +158,7 @@ namespace System.Workflow.Runtime
                             transactionalProperties = (TransactionalProperties)atomicActivity.GetValue(WorkflowExecutor.TransactionalPropertiesProperty);
                             // If we've aborted for any reason stop now!
                             // If we attempt to enter a new TransactionScope the com+ context will get corrupted
-                            // See windows se 
+                            // See windows se bug 137267
                             if (!WorkflowExecutor.CheckAndProcessTransactionAborted(transactionalProperties))
                             {
                                 if (transactionalProperties.TransactionScope == null)
index e82732e73c927792a6e1931d92f7b169ed15ed0d..c45bac9f2efcb27f06f31dfede277f0b6812edf4 100644 (file)
@@ -1453,7 +1453,7 @@ namespace System.Activities.Statements
             }
         }
 
-        //This needs to be in sync with the table in the spec
+        //This needs to be in [....] with the table in the spec
         //We use this internally to keep a hashset of validation data
         enum InteropValidationEnum
         {
index a81dd7b359a15b45ead8152106bc792eb2522a5b..9e811599a586fa89204f5c7454619a898d87be24 100644 (file)
@@ -71,7 +71,7 @@ namespace System.Workflow.Runtime
                         if (this._workflowDefinition == null)
                         {
                             // Clone the original definition after locking the
-                            // definition's sync object which was passed in
+                            // definition's [....] object which was passed in
                             // the constructor.  This is so that the host cannot
                             // corrupt the shared definition
                             Activity tempDefinition = this._originalWorkflowDefinition.Clone();
index 9194516f9fb10a72e1a7b7b331cc3b97155c83f3..0d2d2daf4ff4648f95aa49c4af374df3a892294e 100644 (file)
@@ -961,7 +961,7 @@ namespace System.Workflow.Runtime
                 if (WorkflowExecutor.IsIrrecoverableException(e))
                 {
                     throw;
-                } //@@undone: for Microsoft:- we should not be running exception handler, when we are unlocking.
+                } //@@undone: for [....]:- we should not be running exception handler, when we are unlocking.
                 else if (this.WorkflowStatus != WorkflowStatus.Suspended && this.IsInstanceValid)
                 {
                     // the persistence attempt threw an exception
@@ -1548,7 +1548,7 @@ namespace System.Workflow.Runtime
             }
         }
 
-        // shutsdown the schedule instance sync
+        // shutsdown the schedule instance [....]
         internal void Unload()
         {
             WorkflowTrace.Runtime.TraceEvent(TraceEventType.Information, 0, "Workflow Runtime: WorkflowExecutor: Got an unload request for instance {0}", this.InstanceIdString);
@@ -1612,7 +1612,7 @@ namespace System.Workflow.Runtime
 
         #region Terminate
 
-        // terminates the schedule instance sync
+        // terminates the schedule instance [....]
         // must be called only from outside the instance... the thread running the instance must
         // never call this method... it should call TerminateOnIdle instead.
         internal void Terminate(string error)
@@ -1748,7 +1748,7 @@ namespace System.Workflow.Runtime
 
         #region Abort
 
-        // aborts the schedule instance sync
+        // aborts the schedule instance [....]
         // must be called only from outside the instance... the thread running the instance must
         // never call this method... it should call AbortOnIdle instead.
         internal void Abort()
@@ -1860,7 +1860,7 @@ namespace System.Workflow.Runtime
 
         #region Suspend
 
-        // suspends the schedule instance sync
+        // suspends the schedule instance [....]
         // must be called only from outside the instance... the thread running the instance must
         // never call this method... it should call SuspendOnIdle instead.
         internal bool Suspend(string error)
@@ -1966,7 +1966,7 @@ namespace System.Workflow.Runtime
 
         #region Resume
 
-        // resumes the schedule instance sync
+        // resumes the schedule instance [....]
         // must be called only from outside the instance... the thread running the instance must
         // never call this method... it should call ResumeOnIdle instead.
         internal void Resume()
@@ -1996,7 +1996,7 @@ namespace System.Workflow.Runtime
                             //@@Undone-- bmalhi there is one test in bat
                             //which fails here. This check is right thing but im 
                             //commenting it out for bat.
-                            // Microsoft:  this fails because when we load an instance into memory it grabs
+                            // [....]:  this fails because when we load an instance into memory it grabs
                             // the scheduler lock and starts running.  By the time the user Resume request
                             // gets the scheduler lock the instance is often done (the AbortBat test case scenario)
                             // Balinder is attempting a fix to separate rehydration from resuming execution.
index bf4836d6b602a9736991391639643f744fa5668d..01381b9a1cc16c6b720c23d7f1221bbcd5f3b5d9 100644 (file)
@@ -39,7 +39,7 @@ namespace System.ServiceModel
             string conversationId = null;
 
             //Chosen explicit look up against generic looping of Context Headers
-            //to mitigate security threat 
+            //to mitigate security threat bug PS#3470.
             if (contextProperties.TryGetValue(WellKnownContextProperties.ConversationId, out conversationId))
             {
                 StringBuilder stringBuilder = new StringBuilder();
index f4610d89c99a3dab75d720a711ecd8451083d8f8..87b3b237840104356f0508914c48fa64ae37f427 100644 (file)
@@ -64,7 +64,7 @@ namespace System.ServiceModel
         // Based on prior art from WCF:
         // ServiceModel.lst:System.ServiceModel.ServiceHost..ctor(System.Object,System.Uri[])
         // |DoNotCallOverridableMethodsInConstructors
-        // |Microsoft|By design, don't want to complicate ServiceHost state model
+        // |[....]|By design, don't want to complicate ServiceHost state model
         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
         internal WorkflowServiceHost(WorkflowDefinitionContext workflowDefinitionContext, params Uri[] baseAddress)
             : base()
index c74151825d9720cddcc01a7c0d82541cd1206c9e..81662844adeed46cb88f360dc093209df72dd59a 100644 (file)
@@ -303,7 +303,7 @@ namespace System.Workflow.Activities.Design
 
 
             // This is to make the selected operation the selected item in the operationsListBox.
-            // This needs to be done to work around the Microsoft 
+            // This needs to be done to work around the [....] bug causing selection events to not fire till form is loaded.
             if (this.selectedOperation != null)
             {
                 SelectServiceOperation(this.selectedOperation);
index bae23fc0bb5d34e0156a35ed33b8b14a497ba6fb..76380ee64a94c56f27773faaf861f6530a9ba139 100644 (file)
@@ -84,7 +84,7 @@ namespace System.Workflow.Runtime.Hosting
 
             public static void Post(SynchronizationContext synchronizationContext, SendOrPostCallback callback, object state)
             {
-                Fx.Assert(synchronizationContext != null, "Null Sync Context");
+                Fx.Assert(synchronizationContext != null, "Null [....] Context");
                 Fx.Assert(callback != null, "Null Callback");
 
                 synchronizationContext.OperationStarted();
index 124f9f45a4f77638dfef32a75c0f1ae622f5ef18..8a130a0f34285449d7dc69480eff98e832bf3edd 100644 (file)
@@ -25,7 +25,6 @@ namespace System
         /// We have this separate method for getting the parsed elements out of the TargetFrameworkName so we can
         /// more easily support this on other platforms.
         /// </summary>
-        [System.Security.SecuritySafeCritical]
         private static void ParseTargetFrameworkName(out string identifier, out string profile, out int version)
         {
             string targetFrameworkMoniker = AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName;
index b2508ba53f8bdd4db288d9fc2b70cace77e127dd..065662f2ec86c91b7db9a94ca2fcf2897d0d30ae 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Compilation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace Microsoft.Win32 {
index 700f00247652734c31e80402f90b162f743ee822..6fce5e708f4c95649cf1c30e7a1818d0e63a4352 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Base64Decoder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 826dda147907beb8bb3b80f364888a0f352c338c..2e5db862d303f8a77e08410bab42f9f9ebc198df 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="Base64Encoder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Text;
index f0e3e37cbb0451864812644701440d0ffef4e184..a5b8c826abe6d596409b2421f51514ab28ece2e2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="BinHexDecoder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 80aaef8855363759cc0cb37ae89d89e4c8abe1c8..84af530c3a04140310dc807dbdfa9e424c410353 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="BinHexEncoder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index f431af850c46d2159f2fcd8d6edd7e3bd5d7cf65..ac782eede0df8163d2c4500e3d9d6c5f2cb233e8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlBinaryWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 249bf8a70bb1c68465914808300d33b42a73af52..7ec7d87c084fb519ca76c4e2fa804b1f08c64d37 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlBinaryWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index c5617d0bef08b41c050612207ab6db796c935a4a..c246cd780deef8cac4a384c81fd62d1f8a0025bc 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlBinaryWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index af5df11c2154349cc84ef6e542be7aa5a5121a69..1a24b050303a37632357321d9abe3299c3f9ad3b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="BitStack.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index e33134c3de070ffac8ba96f02aa2728d1d9105bc..c971932dacebf9323aab72deb5b1e8b474ce2fb5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Bits.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index d1dac9ff8bef36537bf137c53b7b4f8485e60324..dad824cbba085cc269a30bf3c6af2af4df684bb4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ByteStack.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 7282d54555c41ab31eadb5f0c8c3fb54a187693e..5ca0974015eae1a97b21a1a886660691a9b709b4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathDocumentBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Globalization;
index 937c44a75c9aee853fd0ca99bc7dcbd07955e318..54d2808d16b923d6625fe4c1f370b1e0a46cbfdf 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathDocumentIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index f46468ff6ab8477a2b8fa4c0c1316a0556fb6e74..d5884ff333f79e0227eef2cb9176f5a8e32e6bb2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathDocumentNavigator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.IO;
index 9170badb6c40d62a5ec3facfb777c8383ac30585..1706a413b1f63837efbbe42ab383efcda3495fb4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index fbc150cb5c1824bca86d259a681d3f1840eeb4e0..d41386dc0567985990c1182846971c658148437a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathNodeHelper.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Diagnostics;
index f65ab8c144b4dba173c69ed75ca4ce6f9ed762d9..b2bd27cfc6f18b1c7b0fa26ed8f29120b1b89239 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathNodeInfoAtom.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System.Collections;
 using System.Text;
index b50a79dd40322df1bc1652ff0d86a454771a696d..9ada03fbdcb8d2b7cfc36bcbd2b89abd6b0d216c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CharEntitiesEncodingFallback.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Text;
@@ -124,10 +124,10 @@ namespace System.Xml {
         }
  
         public override char GetNextChar() {
-            // 
-
-
-
+            // Bug fix: 35637. The protocol using GetNextChar() and MovePrevious() called by Encoder is not well documented.
+            // Here we have to to signal to Encoder that the previous read was last character. Only AFTER we can 
+            // mark ourself as done (-1). Otherwise MovePrevious() can still be called, but -1 is already incorrectly set
+            // and return false from MovePrevious(). Then Encoder ----ing the rest of the bytes.
             if (charEntityIndex == charEntity.Length)
             {
                 charEntityIndex = -1;
index 0b90bc445e0e7348fb63a44c1b2fe577e8b10cc1..3e87a288024b6a5319abdab28f05b981c0486733 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="HtmlRawTextWriterGenerator.cxx" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 // WARNING: This file is generated and should not be modified directly.  Instead,
@@ -111,7 +111,7 @@ namespace System.Xml {
 
             RawText( "<!DOCTYPE ");
 
-            // 
+            // Bug 114337: Always output "html" or "HTML" in doc-type, even if "name" is something else
             if ( name == "HTML" )
                 RawText( "HTML" );
             else
index 67a2eb4e88d12cadc6fdcec51fece71a3fc3ce4a..ea40a4b1774f921f162b6466a358faa9cfa14714 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="TernaryTreeGenerator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 //
 // This file is generated by TernaryTreeGenerator.cs,
index 21746af58e3ce58f0bd8efd4e71fec9b134ef3b1..ce58ac04cef8cfc66541b0e84f419398918b3934 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="HtmlRawTextWriterGenerator.cxx" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 // WARNING: This file is generated and should not be modified directly.  Instead,
@@ -111,7 +111,7 @@ namespace System.Xml {
 
             RawText( "<!DOCTYPE ");
 
-            // 
+            // Bug 114337: Always output "html" or "HTML" in doc-type, even if "name" is something else
             if ( name == "HTML" )
                 RawText( "HTML" );
             else
index accabc8ae41ba35caad5d564a6659d75abdf89b3..75aa39c93e5089e962f7041e1e312198a6d80f5e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="IncrementalReadDecoder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index b2eb04606f18a48c4e93e85bd7d87515bb27bbd6..38d96cab293bb025b9534d642c03e625c63fbbe6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file=QueryOutputWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index b8118da24a9f75bd66c90bdd131cfd7bccfe2df2..7804b49e6496265ee3988cbf6c7886fc7ded18f1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file=QueryOutputWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index f901bb3b853322e5f5f6ec40c869599188c55be3..2279ac9d403cbb5c66eac450fa60aa0e1994d128 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="ReadContentAsBinaryHelper.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index e2bdd673aa724f2426c2d8393bdb2bb89a93ddff..c18e27b12c12b09fc7fe8ad289fd3078dd828458 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ReadOnlyTernaryTree.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
@@ -17,7 +17,7 @@ namespace System.Xml {
     //
     // XSL HTML output method properties
     //
-    // Keep the first four bits in sync, so that the element and attribute mask operation can be combined.
+    // Keep the first four bits in [....], so that the element and attribute mask operation can be combined.
     internal enum ElementProperties : uint {DEFAULT = 0, URI_PARENT = 1, BOOL_PARENT = 2, NAME_PARENT = 4, EMPTY = 8, NO_ENTITIES = 16, HEAD = 32,  BLOCK_WS = 64, HAS_NS = 128}
     internal enum AttributeProperties : uint {DEFAULT = 0, URI = 1, BOOLEAN = 2, NAME = 4}
 
index a0e1260823e7c7c859ad69f17563d9c29140942a..95684b22d5b24b0c3eeef264a2ecdb6a3ed9fd9e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SecureStringHasher.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 6565d5d3d547c692bd8fdbc7565e4dcc703da994..d09ec778982b5ffbf2d6adb9deaf87ec543cc8bb 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="TextWriterGenerator.cxx" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 // WARNING: This file is generated and should not be modified directly.  Instead,
index 4192d32857cf980d1d25f75aa7fc74f43d1dc803..1ed397e8fef488cb92e9fdc110ab08ddb29f7672 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="TextWriterGenerator.cxx" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 // WARNING: This file is generated and should not be modified directly.  Instead,
index 35ebb93441cccada29d0df7362ce18bb2e6caf54..0220c3ac4156bec9ba34f9af28aa31faf2f60ce1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ValidatingReaderNodeData.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner> 
+// <owner current="true" primary="true">[....]</owner> 
 //------------------------------------------------------------------------------
 
 using System;
index 5c8e6dbfabff34984913722de4e029b605bf554f..acfc2641270b8bd9d5b1ba66ed0c0f9d1e5efdbf 100644 (file)
@@ -55,7 +55,7 @@ namespace System.Xml {
             }
         }
 
-        #region Sync Methods, Properties Check
+        #region [....] Methods, Properties Check
         
         public override XmlReaderSettings Settings {
             get {
index 2ec002e88625340fdec4af6213f7d78cd874c0df..9d3d1259ba6cf4a3da0d861da0766d3fae3e92da 100644 (file)
@@ -28,7 +28,7 @@ namespace System.Xml {
             }
         }
 
-        #region Sync Methods, Properties Check
+        #region [....] Methods, Properties Check
 
         public override XmlWriterSettings Settings {
             get {
index c36fceca031f977a1326cd3b926b73834572146d..be7bdf2f133d75bc56109cda5a5caf8bfbe8def3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAutoDetectWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index 4d57beeb33257a0093b8935ce254e0350faa19af..e7494e219b1cc319a5ec290651ae5003b4b29c90 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlCharCheckingReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 879e99e0933f8d851b946a55c506f2f2f74dc790..d997aaf59d9abda6090daba22cf850a96a456d47 100644 (file)
@@ -4,7 +4,7 @@
 // <copyright file="XmlCharCheckingWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 
@@ -445,7 +445,7 @@ namespace System.Xml {
         // Interleave 2 adjacent invalid chars with a space. This is used for fixing invalid values of comments and PIs. 
         // Any "--" in comment must be replaced with "- -" and any "-" at the end must be appended with " ".
         // Any "?>" in PI value must be replaced with "? >". 
-        // This code has a 
+        // This code has a bug SQL BU Defect Tracking #480848, which was triaged as Won't Fix because it is a breaking change
         private string InterleaveInvalidChars( string text, char invChar1, char invChar2 ) {
             StringBuilder sb = null;
             int start = 0;
index 341890df115fa7e04a4452952abc0dd76ac672e7..15d6839fbc27549640df0877ac221548b7df3b02 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlRawTextWriterGenerator.cxx" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 // WARNING: This file is generated and should not be modified directly.  Instead,
@@ -416,8 +416,8 @@ namespace System.Xml {
 
             if ( trackTextContent && inTextContent != false ) { ChangeTextContentMark( false ); }
 
-            // VSTFDEVDIV 
-
+            // VSTFDEVDIV bug #583965: Inconsistency between Silverlight 2 and Dev10 in the way a single xmlns attribute is serialized    
+            // Resolved as: Won't fix (breaking change)
 
             if ( prefix.Length == 0 ) {
                 RawText( " xmlns=\"" );
index 17e6333ebfe4e700177b093265bfc7684230b71f..bfb770ee5b40e89340e753d894c07826a68ee991 100644 (file)
@@ -224,8 +224,8 @@ namespace System.Xml {
 
             if ( trackTextContent && inTextContent != false ) { ChangeTextContentMark( false ); }
 
-            // VSTFDEVDIV 
-
+            // VSTFDEVDIV bug #583965: Inconsistency between Silverlight 2 and Dev10 in the way a single xmlns attribute is serialized    
+            // Resolved as: Won't fix (breaking change)
 
 #if SILVERLIGHT
             if ( attrEndPos == bufPos ) {
index b48dd010fe6bd74c2e88463cf245d847d3ca1176..2f9b8e7dc3b7eeace6ca653bde7c2160a56094ad 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlEventCache.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 6b70e55b47a9cb712f2363f6c268f977fccdb4ed..c6427aa67ae904e8e23b22b3460682c36e9cff9d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlParserContext.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Xml;
index 6c05735bcb2e45db83c01fe35e948694bdfd2e0c..0de566338830afa6025e374bcd5ea6a25c0c5128 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlRawWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 40379dd159eb26c7ad110e58c85cbae2bc34dbe9..4449445424d0cbbe819d31c1d9e63ea284916ae8 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.IO;
index c570f19606a5e83b3bd33438efa47d56e5447b7d..2b54034544841758818c88282586a143f7fcb920 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlReaderSettings.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.IO;
index 602e1acb37090d6b47bc02640d544fb6c7d1a0f3..c78e851ad3bc3a3a4b9cd955b5faed3dc7cf0f82 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlSubtreeReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 7e4c58fd1b5f1b53e242e6e90acdad1410bef64c..8c90585f940fa08d08cf8fa4d52c89e7ae36147c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlTextWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 096f9b5cbad5762b6ff263718fd8fcd371988d8e..2ce8ee9b56f7eee17eb835544441da25e2f2c959 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlTextReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 19c9b948ec84c90d10286070e20c7b5f565b8646..9d2ec66d8c8eee7b9e57c7ba629c57fd7bfcbaac 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlTextReaderImpl.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 8d3dcd6f82511e8940a8d55f4586b8ba82cbfa36..3a031b7043106a2e391d4e28307fc71aadce0ed5 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlTextReaderHelpers.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index c69a408361ea66a62e8ca1af86893b9417a3bbc3..731426702fcfd13f3ba1a64b699cca43d964bb4f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlTextWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
@@ -1364,8 +1364,8 @@ namespace System.Xml {
 
             // Namespaces supported
             if (namespaces) {
-                // We can't use ValidateNames.ParseQName here because of backwards compatibility 
-
+                // We can't use ValidateNames.ParseQName here because of backwards compatibility bug we need to preserve.
+                // The bug is that the character after ':' is validated only as a NCName characters instead of NCStartName.
                 int colonPosition = -1;
 
                 // Parse NCName (may be prefix, may be local name)
@@ -1384,7 +1384,7 @@ namespace System.Xml {
                             // make sure it is not the first or last characters
                             if (position > 0 && position + 1 < nameLength) {
                                 colonPosition = position;
-                                // Because of the back-compat 
+                                // Because of the back-compat bug (described above) parse the rest as Nmtoken
                                 position++;
                                 position += ValidateNames.ParseNmtoken(name, position);
                                 goto Continue;
index 8cbec68c906c21033c09d36aa6722abc76723821..9267f3cf1db385cc6e5d33fa07e3a345ec3d27a8 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlRawTextWriterGenerator.cxx" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 // WARNING: This file is generated and should not be modified directly.  Instead,
@@ -360,8 +360,8 @@ namespace System.Xml {
         internal override void WriteStartNamespaceDeclaration(string prefix) {
             Debug.Assert( prefix != null );
 
-            // VSTFDEVDIV 
-
+            // VSTFDEVDIV bug #583965: Inconsistency between Silverlight 2 and Dev10 in the way a single xmlns attribute is serialized    
+            // Resolved as: Won't fix (breaking change)
 
             if ( prefix.Length == 0 ) {
                 RawText( " xmlns=\"" );
index bce188d159c58d82660bc3522a4ce93960e06692..3d5024d13ac1bf05039be58e6212e12a002914c4 100644 (file)
@@ -210,8 +210,8 @@ namespace System.Xml {
             CheckAsyncCall();
             Debug.Assert( prefix != null );
 
-            // VSTFDEVDIV 
-
+            // VSTFDEVDIV bug #583965: Inconsistency between Silverlight 2 and Dev10 in the way a single xmlns attribute is serialized    
+            // Resolved as: Won't fix (breaking change)
 
 #if SILVERLIGHT
             if ( attrEndPos == bufPos ) {
index 9c997f1447041033ffb9f48760c9f21201f2f462..5027da2ff84d314a19fd68bd9d8cfe4438c2a9b4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlValidatingReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 55d380288025730f00c460fb9209f421c62b358a..7836c255bcfea21b7e12bfe26719c668b4b5449a 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlValidatingReaderImpl.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 27378cd78305fb77d0895b1ded11b627fb837d0a..30bf76c544b8e8cc102687fc32784f72a016ac08 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlWellFormedWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
@@ -1370,7 +1370,7 @@ namespace System.Xml {
                     }
                 }
                 else {
-                    // We do not pass the standalone value here - Dev10 
+                    // We do not pass the standalone value here - Dev10 Bug #479769
                     writer.WriteStartDocument();
                 }
             }
index f38cc97dd1afed762560b2542469313f160428ee..13d33b2c446466625a94c79a79719fe610129919 100644 (file)
@@ -1013,7 +1013,7 @@ namespace System.Xml {
                     }
                 }
                 else {
-                    // We do not pass the standalone value here - Dev10 
+                    // We do not pass the standalone value here - Dev10 Bug #479769
                     await writer.WriteStartDocumentAsync().ConfigureAwait(false);
                 }
             }
index 144d806e5a81402161a33e95cae95c5e0e540a4f..6454136eac05103b40110359c0f8b7a6d189fe4a 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlWellFormedWriterHelpers.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 0bddf6c93c6b21acf3fa5e1c51d959128cb3604a..5aba9d28d198e8623e5048f71e4ec6be7d02b353 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlWrappingReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index f73c5eb902d00ef08255c778b55ecd04c5f13f7f..6176c6dd547d0ef36a366953412b3453b24f2677 100644 (file)
@@ -4,7 +4,7 @@
 // <copyright file="XmlWrapingWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index f4ca61856cf0ed288b54ce27f58629b7df965443..64ce1c4292093bdf6de1ee6cf7ce060165f34834 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index e799402b01efc6e3d7ae86d997dfa47b14c1923e..bd18d0db051114d867dff5f0b3cad4839afb5f8d 100644 (file)
@@ -263,7 +263,7 @@ namespace System.Xml {
 
         // Copies the current node from the given reader to the writer (including child nodes), and if called on an element moves the XmlReader 
         // to the corresponding end element.
-        //use sync methods on the reader
+        //use [....] methods on the reader
         internal async Task WriteNodeAsync_CallSyncReader(XmlReader reader, bool defattr) {
         
             bool canReadChunk = reader.CanReadValueChunk;
index d6da652138989de351cef7f72a7eea19a11ababd..0e5d3e1b79b4fb4a6992cfc8f6e56f2df662d917 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlWriterSettings.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections.Generic;
index 2775de956b3cd8437eb6f2e0f308e1971495cba6..eabe7e09aad0c37542176406b297ad320b1bd43f 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XsdCachingReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.IO;
index 1624db0c151719cf82b090867fb9984bf499518c..78b479a94bfe7ae62839da4008e676044988c782 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XsdValidatingReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.IO;
index aa2a2be4f2df43307f83cace31279f41ae881a44..18e16e93e08bf7fbdb266e8f195b441c011a95bd 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DiagnosticsSwitches.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index ad2afe144cb42eaf309cb65a82a3f6067722d74f..61467a7e28b7d55bb4b92878da2bc61e3547dc2e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlDocumentValidator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 519989144d3588fd9f8b5eedc40c11fc2919cc0d..65156508850baa9952c711c7c9d926120b6ff7f9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DocumentXPathNavigator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index a593fc00fc2f834f901ffee60b1a30c519f8ddd3..b81819b7f421fa59ec80fa54ef8a535061c613ba 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DocumentXmlWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 1887cf8fe5a3289ccd2014aa47f46955d85509a4..f804251dd2cec0f66927c408ccd372bb9d5e5d7c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DomNameTable.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 375f9c645bcf03bc5e5bef9d156f172344e27bad..72cce94b6ad0f70e9020fd5fec7bbcca89107cc1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathNodeList.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index e72968196193ffb99bc0081b5074e3cc2464bd56..5a78890c5185dbd5db850a048749b6370d4c57b3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index bfe86a970799052ee43844e84fff82c89f9aea34..5825e1d6b774d0f342421d5d8ec92e974eceb1d8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAttributeCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 
index b1f2676b1c960a756f8223eff328ad20284e5afe..9879cf9e519f2e618ea475985b663758befc4c7b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlCDATASection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 6797b896be4fce8f88052fd8efe873e24891d5fe..3744cd8bce88808edbb2971da1d15ba729e727b6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlCharacterData.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 namespace System.Xml {
     using System.Diagnostics;
index d17bffe83c05fd5b26daf9487984855b8fc2c93d..41a25efe24572cce47caf616a02e771c0a095a01 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlChildEnumerator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 391b5666768dd009b8782a6a6eff607f538ae388..6450c64f66f7bccc536b3bb029a09969f303e457 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlChildNodes.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 namespace System.Xml {
     using System.Collections;
index 8e7289c899ad93535e6552d840467c698f626ff0..087c7546a478e0bb1d2a829aff87c4e8c65e2a92 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlComment.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 8de8430a3ddf42d493d9032562b29de50ea23972..bd8ab0ef6df96196cb99e7e46b124d8671622485 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlDeclaration.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 03d419b0dc757e59312799d844ec9fb62315fc15..dff26fa7d6bed7a789fd9a7cd52254e3bbda41de 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlDocument.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml
index ef3e33eca406f1305fcc66a110f5f0366b379f31..1ee01648ccef31d0e7c42353de56891f3e09081a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlDocumentFragment.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 // <code>DocumentFragment</code> is a "lightweight" or "minimal" 
index 19ae68b987ab761881f32e067ffaed6b424d6537..27daa745e945dc4b224020de8455cc5a98282b3e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlDocumentType.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 0369f5e16720fcf5b66ac98b5a1f589bf66c5fed..228d6ff1f9b666fb331c28d8d866c4780a5d93b2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlDomTextWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index e2d979845c2374ba8b5376e9ff74c1ca3ed8b3d8..66171a9177f43aeb7580411919c0b08dbfeb6995 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlElement.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index ef190d83c1049d40f8597c730316126728cc9f96..d76e66c2a1cf1f51d45a864cd198b20c30a384cb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlElementList.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 0522631c15051853f16deb71d499c6dc778684b8..3576d03a7c7bfdb5a569deb9416e3ddf18ef0c1c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlEntity.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 4bb982a16450573404d9b7893beb805d38fe6f6b..d9ee2866b8c84fd678b3bbf1dfa96024c1f40760 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlEntityReference.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 // <code>EntityReference</code> objects may be inserted into the structure 
index 13711af70ed262f29b9c2a0f6f6da09c1951c97b..0082d7faf2f4e636f3c4c35e1b8177d2d292a41f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlImplementation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Globalization;
index 9e62d4674904644289ba91e1e27f65adc54f6be6..0c29d1527be90592f312c55a5a0b60ed173296a2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlLinkedNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index ca642eff40086028434643153efb49129f71b1fb..988ab2d16b7d6303fe1e6d5aeeec1f99bcc94638 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlLoader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index dc217a6e60e6533d5338c5dd80b89460839758af..0b9723361304f76fb5ee9b24f455e2e4b71494e6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlName.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index aa1f05e2844bd8334ee6de0480c6bb208e27dd7c..5def2f6d2ea2550bd9e6dbf0d48a143ce66f8f55 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNamedNodeMap.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index d814e3d238d2ea0dd2364694331ad5e07de2346c..cebe870875223dae4bd6627c6da7f18b8621fb41 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index ac4c5097ee90792b555d2ca5e9059bcfd9b5cb48..617f0b54c51090fefcfd06252e2b7a4ba063bbe1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNodeChangedEventArgs.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index d19afba0bc507c8cf6f40352d72605c0916c56cc..697ae92649c7ed3368430ef512e3cfc549b497b1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNodeList.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 2ef079a486bffc4542e6c7f2aa08d546a6e4b3a5..514b79fb8723202b1100f853c1a30791d912213a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNodeReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml
index 527bdcf6bf5f3d36362f81801a82381c9e362fea..79be847a2ee5f37c73694146a1887a371a5f9365 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNotation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 04d09502a53a376c4d7b6f8d763ce68172aeb2da..c940944befb475d1f8a5025e30dec270901ab691 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlProcessingInstruction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index d083222ae23f890c40d2761407a430b507b46566..70cd9498aabdb02c8bd8b75f316a6bb868b6241f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSignificantWhiteSpace.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml
index 52d74574103144197d9050f99ccb3584010583e7..4d9e3dc10c7a6105f16447068b3152bbfddb876c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlText.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml 
index fecd81cc57a55985abe50babc261d6fc66df73df..c1a0974d0dd4bc511908415e04c42a921a49cd39 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlUnspecifiedAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml
index 3e0df6ab35ec699df0fbcda13ed71614f115e8a0..ce4f166e8aa71ce4b259550acaebc3475c571298 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlWhitespace.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml 
index 5d9787f124858ad12c709fa6a64ff72089652983..b9c7f41d8d93dde96d369ac89ba6a66e6714e7c6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="EmptyEnumerator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 2f076f8c835ffa2891cabe871bb4afacbab3b1fd..9df2ad1656c62e815d9c4673b3d449f4721b4dab 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="HWStack.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 438840e1c1fcafc02008342dd0bfb60d60c4c37b..a5503a1775d7013704f1a0225f6f653721897ed9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="IXmlLineInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 76afcce36bd080bc8b0dab7e64760c9c112fadc5..4095a490dfbd31035eb7d26ca1383f0529738922 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="LineInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 9ffc2ff5e5d51151f4c658f95bda2ddd21271f43..debdacdd399da888dbf8cabaf6916743774bdf31 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NameTable.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 8df1dc31348c4086a296140dcece8b343865fd49..f90790b1014626351409a0c9a15b40136c534dda 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Ref.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Diagnostics;
index e3b347a517423e4bc4c40c292b401d3f10c16495..69f9f41d75316fcd7fe5c067189a68e73ee7c610 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlPreloadedResolver.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.IO;
index 109c6e6ad6d06e4c0fa12e489e03f9c901eabb1d..01cde42a300eb853ed5a8e7c86019bd0687ff847 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlPreloadedResolver.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.IO;
index 31facd0a7444c39c8dd049b50f1c142362bd4bda..48074ea45734c3f9a7bc04d4453ebe6c2a2d686c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="asttree.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 33231373d7dd6cd9953d0f7297638258e8c1ffe7..a18d39a6b1b9021cdfe485cd5317eb9e1f1403b3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="AutoValidator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index e6cf4bd1ed69d70a3c733519dc25d9ba5f03807a..287f39f7a7f66b23e5f755bf4b938228cfd9fec6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="BaseProcessor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>  
-// <owner current="true" primary="true">Microsoft</owner>                                                              
+// <owner current="true" primary="true">[....]</owner>                                                              
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 7726307277ab457efad89ff445ecfd06b2fa5115..a41795d18687cfff3f06d03d74ce58901afe6cd0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="BaseValidator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                              
+// <owner current="true" primary="true">[....]</owner>                                                              
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index f8573bbcf9dd40f8e5753e56131647c94e77d3b2..564c593ce4a2c2269cbfcc547652aca65e16c9a7 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="BitSet.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index b487289d78ed298528d4a94848696f72bc2f0f6e..2cf8040e573a91dfbe3f16023fa488f15165c6b9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaExternal.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index d6bb8a5ea766f12583682e7ea60a43930410c5a7..afe0acdf73ed150b059109b4c3b722ec6e9d9930 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CompiledIdentityConstraint.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 468d82b7431389dfa18cf8e9d07cfb62d3fdea99..4e6cbfc1cd9b4e5de7af734db0f69f0ffde98f18 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ConstraintStruct.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
@@ -386,10 +386,9 @@ namespace System.Xml.Schema {
             }
             hashcode = 0;  // indicate it's changed. even the calculated hashcode below is 0
             for (int i = 0; i < this.ks.Length; i ++) {
-                               if (this.ks[i] != null) {
-                                       // extract its primitive value to calculate hashcode
-                                       // decimal is handled differently to enable among different CLR types
-                                       this.ks[i].SetDecimal();
+                // extract its primitive value to calculate hashcode
+                // decimal is handled differently to enable among different CLR types
+                this.ks[i].SetDecimal();
                                        if (this.ks[i].IsDecimal) {
                                                for (int j = 0 ; j < this.ks[i].Dim ; j ++) {
                                                        hashcode += this.ks[i].Dvalue[j].GetHashCode();
@@ -415,55 +414,31 @@ namespace System.Xml.Schema {
                                                        hashcode += this.ks[i].Value.GetHashCode();
                                                }
                                        }
-                               }
             }
             return hashcode;
         }
 
         // considering about derived type
         public override bool Equals(object other) {
-            if (LocalAppContextSwitches.IgnoreEmptyKeySequences) {
-                // each key sequence member can have different type
-                KeySequence keySequence = (KeySequence)other;
-                for (int i = 0; i < this.ks.Length; i++) {
-                    if (!this.ks[i].Equals(keySequence.ks[i])) {
-                        return false;
-                    }
-                }
-                return true;
-            }
-            else {
-                // each key sequence member can have different type
-                KeySequence keySequence = (KeySequence)other;
-                for (int i = 0; i < this.ks.Length; i++) {
-                    if (!(this.ks[i] == null && keySequence.ks[i] == null) && (this.ks[i] == null || keySequence.ks[i] == null || !this.ks[i].Equals(keySequence.ks[i]))) {
-                        return false;
-                    }
+            // each key sequence member can have different type
+            KeySequence keySequence = (KeySequence)other;
+            for (int i = 0; i < this.ks.Length; i++) {
+                if (!this.ks[i].Equals(keySequence.ks[i])) {
+                    return false;
                 }
-                return true;
             }
-        }
+            return true;
+               }
 
         public override string ToString() {
-            if (LocalAppContextSwitches.IgnoreEmptyKeySequences) {
-                StringBuilder sb = new StringBuilder();
-                sb.Append(this.ks[0].ToString());
-                for (int i = 1; i < this.ks.Length; i++) {
-                    sb.Append(" ");
-                    sb.Append(this.ks[i].ToString());
-                }
-                return sb.ToString();
+            StringBuilder sb = new StringBuilder();
+            sb.Append(this.ks[0].ToString());
+            for (int i = 1; i < this.ks.Length; i++) {
+                sb.Append(" ");
+                sb.Append(this.ks[i].ToString());
             }
-            else {
-                StringBuilder sb = new StringBuilder();
-                sb.Append(this.ks[0].ToString());
-                for (int i = 1; i < this.ks.Length; i++) {
-                    sb.Append(" ");
-                    sb.Append(this.ks[i] == null ? "{}" : this.ks[i].ToString());
-                }
-                return sb.ToString();
-            }
-        }
+            return sb.ToString();
+               }
     }
 
 }
index a2eb25b667edbbfe6b2596ae13a648a33187bc46..fcee874bde14a175aac5c43965a03b01ef9a2c79 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ContentValidator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 2e85e1866069989efbe45ba0c04d0445abe4a800..efeab36444b5f20edd3519cf2b125ebd863c85e4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DatatypeImplementation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
@@ -805,7 +805,7 @@ namespace System.Xml.Schema {
             return 0;
         }
 
-#if Microsoft
+#if PRIYAL
         protected object GetValueToCheck(object value, IXmlNamespaceResolver nsmgr) {
             object valueToCheck = value;
             string resId;
index c72fe649f08cb4b5d8c94f7ca092a19bcd77fd19..a9d85fc2028cc90798288c8b2d1c704d3e39ea4b 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="DtdParser.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 086df1b395f32a8b3c079011bc42331214164df9..f103e3da01f986fe046e33516a3fc1e2a92b3466 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DtdValidator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index ea32d7099ffcdfe577f18cbb21b568c5b1adf67c..398a2aa525984e1cbba7313b2b844eefa4edb76e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaFacet.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 49254264120862ddd30279364fc3096abe0e4ae4..6fdbc73d6ab2655188f92de5210d78dea358f943 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="Infer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner> 
-// <owner current="false" primary="false">Microsoft</owner> 
+// <owner current="true" primary="true">[....]</owner> 
+// <owner current="false" primary="false">[....]</owner> 
 //------------------------------------------------------------------------------
 
 using System;
index 69a3156bffc72914a8fa5ff5f44a191f3387b47a..d41c45f148a567d4a3af17ed89991c8cd807ccfa 100644 (file)
@@ -2,8 +2,8 @@
 // <copyright file="XmlSchemaInferenceException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner> 
-// <owner current="false" primary="false">Microsoft</owner> 
+// <owner current="true" primary="true">[....]</owner> 
+// <owner current="false" primary="false">[....]</owner> 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema 
index 93ecf3f6045dd2ddb75b75b9b2498a2db93908c7..7cb6a8a33bb0170b340a411333d9e011a2452b90 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NamespaceList.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 
index e296e7446af7e87735491b1d913f966922d58a4a..4f38bf400c6c51d882850ac78b38e0ce262aa9fe 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="Parser.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>  
-// <owner current="true" primary="true">Microsoft</owner>                                                              
+// <owner current="true" primary="true">[....]</owner>                                                              
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 06af064697ab4cc0768e4fcd78772cc1f39210c3..e7dd3880acb42f2bc5f46c679b1a45eed590fca9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Preprocessor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 0cd4d5757ad9bf2c35909e3dd61f3efb4e9250ee..48becdf5bb6beb2cc7ec58112a5ddf80a24c4b48 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaAttDef.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>   
-// <owner current="true" primary="true">Microsoft</owner>                                                             
+// <owner current="true" primary="true">[....]</owner>                                                             
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 7dfc0226e89a725886f67b3994ac1bed9ed23bb4..314986435ec4f09f1a614bad4a77810062d96565 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Compiler.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>  
-// <owner current="true" primary="true">Microsoft</owner>                                                              
+// <owner current="true" primary="true">[....]</owner>                                                              
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
@@ -678,8 +678,8 @@ namespace System.Xml.Schema {
                 if (baseType.ContentType == XmlSchemaContentType.TextOnly) {
                     if (simpleRestriction.BaseType == null) { 
                         datatype = baseType.Datatype; 
-                        //There is a 
-
+                        //There is a bug here. Need to check if simpleRestriction has facets.
+                        //If yes, Need tp apply these facets as well. 
                     }
                     else {
                         CompileSimpleType(simpleRestriction.BaseType);
index f2fa40056ce4e9673a327f3a9c2b0b2505618321..82e40815021dab66f0fdd5689cc92ca62ca6c030 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Preprocessor.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>   
-// <owner current="true" primary="true">Microsoft</owner>                                                             
+// <owner current="true" primary="true">[....]</owner>                                                             
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 22f1d1dc82f2abf420702dc3797a9097b6cdd2b2..65c11d09ccd8f5531dee73ae9e05c97a9a8a34d5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaDeclBase.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 345c89d131fe00f0355d65bdac57b05ecba4bc6f..52d641f925a89f0e0bb33df16f3896544dd82ab9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaElementDecl.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index f326c5bfee8db9d90a54cc8a139162e867b9baf0..c0c96d0d9b34076dc104c9850695289abe73e180 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaEntity.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>   
-// <owner current="true" primary="true">Microsoft</owner>                                                                                                                            
+// <owner current="true" primary="true">[....]</owner>                                                                                                                            
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 294ef6a3525a0d01262f073213191e2a6517a96c..6429bcad31a80117c51be4c71d3790af2228ad4b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>  
-// <owner current="true" primary="true">Microsoft</owner>                                                              
+// <owner current="true" primary="true">[....]</owner>                                                              
 //------------------------------------------------------------------------------
 
 using System;
index 69b23b05edb8157047b02ffccfa0fb121d19498c..6ca87fd757bd5d21bd8e2dcfcc056a89c1e1a85f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaNames.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index ee380b1c1710953e64f40a4318aba7368365ccdb..af750839a04c272bd60d55ad57ca18d0f484605d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaNamespaceManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index e156aa006f1c1c2432d93110cf9378ef95eb2bec..2c9604ce581d6ab098559012c685dfb4c44c9d2f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaNotation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>  
-// <owner current="true" primary="true">Microsoft</owner>                                                              
+// <owner current="true" primary="true">[....]</owner>                                                              
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 02ce25bc61ec9efc3dddf30738a039329af24deb..d1dc9412e2b268ee4492cc897c87bc810e831d92 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Compiler.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
@@ -591,7 +591,7 @@ namespace System.Xml.Schema {
             }
 
             //Now add the baseTypes that are defined inside the union itself
-            XmlSchemaObjectCollection mainBaseTypes = mainUnion.BaseTypes; //
+            XmlSchemaObjectCollection mainBaseTypes = mainUnion.BaseTypes; //TODO check for null
             if (mainBaseTypes != null) {
                 for (int i = 0; i < mainBaseTypes.Count; ++i) {
                     XmlSchemaSimpleType st = (XmlSchemaSimpleType)mainBaseTypes[i];
@@ -736,8 +736,8 @@ namespace System.Xml.Schema {
                 if (baseType.ContentType == XmlSchemaContentType.TextOnly) {
                     if (simpleRestriction.BaseType == null) { 
                         datatype = baseType.Datatype; 
-                        //There is a 
-
+                        //There is a bug here. Need to check if simpleRestriction has facets.
+                        //If yes, Need tp apply these facets as well. 
                     }
                     else {
                         CompileSimpleType(simpleRestriction.BaseType);
@@ -1365,7 +1365,7 @@ namespace System.Xml.Schema {
             return true;
         }
   
-#if Microsoft      
+#if PRIYAL      
         private bool IsElementFromGroupBase(XmlSchemaElement derivedElement, XmlSchemaGroupBase baseGroupBase,  bool skipEmptableOnly) {
             if (!IsRangeSimple(baseGroupBase.MinOccurs, baseGroupBase.MaxOccurs) || !IsRangeSimple(derivedElement.MinOccurs, derivedElement.MaxOccurs)) {
                 return IsElementFromGroupBase(derivedElement, baseGroupBase); //SPEC COMPLIANT
index 779280b7e566bee948d1a5e738a1e92aa5cbb2c1..8cce19ff1e31b901f38fa56686f2365e87e3d8ca 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ValidationEventArgs.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 8efbae5e5233c43b1e04bd89e099d7c7f528085a..8d60154dbd8e30156f1d3c95b3ae5543788493f8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="validationstate.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index fb5d270570c3faf9d2fc497d850a932986402ff5..d19527ca7bf0b3e612c5ecd94439ae81a0cef1c6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XdrBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 1f68d23b7477c7425e7902aeee4db717c023c4d3..232088c901c6a74e70b6ea5c914bc4f5daebb7ab 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XdrValidator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 20356ef46d4290e34c970a89cf789f38dccf7f33..b5f81386b5d40a9b38b24278ecceaf2217424b4e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAtomicValue.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner> 
+// <owner current="true" primary="true">[....]</owner> 
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index 58e4d475e4f1cfd21c83659aa1ee9794d7615511..569b5bf53f8cf0986959f13d6a8188dba0ec6c49 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchema.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 049a900b69a4fc2618b309337c931fcd6887bd41..2b84df839a5e0f2d3bf6df0c84c994b9a4884ac7 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaAll.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 836e430db5bbaec659bdfbf49ab3b50003c33ca0..48c108af70da6f1d95cb04b23a6b9192dde715c8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaAnnotated.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 9fd7fd10fad2f123ee2ab263e055a01799873bad..c3a052d0e9b6b5f0d8478a0a54d3e405b57a8f51 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaAnnotation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index a811ed67ead36f2c6f335e74ad754e4679ed9a75..a57e92753e9b824209a516c06f4006d2cd77e1f0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaAny.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 8eb31c7318e832b8be09f8c7abb163b8bfbbdcf7..c1fc904490e0f9aa309032c0db857d82e49bdbc9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaAnyAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index aba46e610ac1a943225844c3b508247c3f87a915..c738d792ab4f6126bcbe60b259c62a6d135ad334 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaAppInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 4920ccbbe76a567fbdedad4934be300d61b01416..30eebaaac9b6c2f615477e29ef7efe1847580045 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 using System.Collections;
index 46ee40ef02a0aa92573a5310326e6635ec592068..f05e75f10d9d627bca4998bdfff730b27712b0aa 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaAttributeGroup.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>   
-// <owner current="true" primary="true">Microsoft</owner>                                                             
+// <owner current="true" primary="true">[....]</owner>                                                             
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index b69122fe37e216783ef4eb5642f4fd8eb61ca1a4..d42202a8fd19b40908bddd6e38fd60676b2c17da 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaAttributeGroupRef.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 9e4e15769c88df6a323a71c8f40a70ecd8b8ec2f..db19ae6e29638d3e8084dd690c593486d023b50a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaChoice.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 23f4a3c219da760a6d20c0d344da6419822ebc9d..38b1e024040d28d36558c3c987d1e00730248231 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index c0544a1627a507c6780f5b6dd0937d0b14f3500b..babedcc1c1e501e0d948e93aee6793be3e84856c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaDerivationMethod.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>  
-// <owner current="true" primary="true">Microsoft</owner>                                                              
+// <owner current="true" primary="true">[....]</owner>                                                              
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 7fd72fb3964f3ff0275db32d1084df2c7f19393f..87560df0c534fc796e7371e23631ab8c5baa9a57 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaComplexContent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index ba4213a297c3f0d48274c98c81160b5fd0e9b9c7..8404e53b5ca1bdcbde14ad186c7d90e93d222f24 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaComplexContentExtension.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>  
-// <owner current="true" primary="true">Microsoft</owner>                                                              
+// <owner current="true" primary="true">[....]</owner>                                                              
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 1879a3b34f4d9eea4c7b48582c6d20dae4b73e9f..522d6354430e6545715ea8ad7f690ced341e3057 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaComplexContentRestriction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 0ce2f136c9a49bc1b8dd4c2cb2ec729e1289158f..1db07809ced233ad544f5590a5243dd4c0f04745 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaComplexType.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>  
-// <owner current="true" primary="true">Microsoft</owner>                                                              
+// <owner current="true" primary="true">[....]</owner>                                                              
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 28bd99b2d0e6a8a312606a06a69c0db54d646535..164891340ecbbc0b964db54a1881c5a3798bef4b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaDatatype.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 using System.Collections;
 using System.Diagnostics;
@@ -337,7 +337,7 @@ namespace System.Xml.Schema {
             return canonicalUri;
         }
 
-#if Microsoft
+#if PRIYAL
         private bool CanConvert(object value, System.Type inputType, System.Type defaultType, out string resId) {
             resId = null;
             decimal decimalValue;
index a3d46ffb9b4fe4c0027aa0c65d625dc7a816bbf3..8468b38d2530c55df88ce449091553adf53bbd58 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaDocumentation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 52604d9313efefac22effdcc651d19e847b79d01..fd7e91449dbd124f759f5e9b08534f427a930ce3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaElement.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>  
-// <owner current="true" primary="true">Microsoft</owner>                                                              
+// <owner current="true" primary="true">[....]</owner>                                                              
 //------------------------------------------------------------------------------
 
 using System.ComponentModel;
index 6f9aebccae7279f632c7c622190aa835dba36fb0..508c058bbac44998e5f265560039d84f30782067 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index b5e41e694c1a0696d20b7489f0b1b2d455186401..29f2d0d732a3458b5eba03703e66be1da2bccbe5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaExternal.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 1a54786975e9eee646bb933abb87f79dd7423cac..df6402047e81862bd8cb9a65c64082326ec78708 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaFacet.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index df6049d0ce07a0a51d2ba01c070c7743134b6888..0453e2f6d0d26d7842982f1f70e7a02212145600 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaGroup.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 973cfbf60bf2937f5ea0a451e72f4847c30450a0..8f6bfd74f6c13f7f3c73bc3501a698a821d66871 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaGroupRef.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 768a05dfb6dfd60e467045480ed79424d22b8c7e..94ff513cdefd3000663d880438e504adcf5d0bf7 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaIdentityConstraint.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 68aa2a3febbd1611d01f034e796d58a53f63e91a..4683a0a74eaada3adc778161093143189766dc1c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaImport.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index a7d9fc838226839125a8c3a5ef6b958acb59ad34..143944e44b72d070cb01c7f18dfa2dbda482f262 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaInclude.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index e8a764df5899173a2d2e56d76378908f24e25d78..81d503a135413332ace8065bc68adcb019c466c0 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner> 
+// <owner current="true" primary="true">[....]</owner> 
 //------------------------------------------------------------------------------
 
 using System.Xml;
index cc14abe77f5c9b57389982557e2df0fbac5790d3..38178eccd120e047da8f5a6ca28c196759a29ac5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaNotation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 70c41758f025603c3648ff32673e4033a733229e..7c42f39bca9a199b56e90099bc0aa4a8f61e0e87 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaObject.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index aa392aea9cb04ff7d82873ab7c5ab31437c041db..a3e46ec075b721c756d472bda5e2613c662d2366 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaObjectCollection.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index ff82368dd7fe67ee653c6372a7ddf3f8495895a5..5277ce63985b2b46c0c7c0e768985f1daff1c328 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaObjectTable.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 4317b730247b474374f0ec040f70b87181f6a276..7ed178dbe3f6b31e82c5a845b95ce1546858b300 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaParticle.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 1eb572a43bd0123c2e8cb2d60d588625b11d25b5..baa659da8f49e3644152ce473fcbecb4d19a8f9e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaRedefine.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 73a3297255591f3d7ebb3b6694f589f88bfb2635..9ea17ae09425144a0ddb21bf93cf0fc781935250 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSequence.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index bffc4b7cf5c2a70e4c2300d55fbd521bacb63667..ab9d27e27b7c95ac0f9ec923709c62c637e45d53 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSet.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 using System.Diagnostics;
 using System.Collections;
@@ -598,11 +598,11 @@ namespace System.Xml.Schema {
         ///    <para>[To be supplied.]</para>
         /// </devdoc>
         public XmlSchema Reprocess(XmlSchema schema) {
-            // Due to 
-
-
-
-
+            // Due to bug 644477 - this method is tightly coupled (THE CODE IS BASICALLY COPIED) to Remove, Add and AddSchemaToSet
+            // methods. If you change anything here *make sure* to update Remove/Add/AddSchemaToSet method(s) accordingly.
+            // The only difference is that we don't touch .schemas collection here to not break a code like this:
+            // foreach(XmlSchema s in schemaset.schemas) { schemaset.Reprocess(s); }
+            // This is by purpose.
             if (schema == null) {
                 throw new ArgumentNullException("schema");
             }
@@ -718,8 +718,8 @@ namespace System.Xml.Schema {
 //Internal Methods
 
         private XmlSchema Add(string targetNamespace, XmlSchema schema) {
-            // Due to 
-
+            // Due to bug 644477 - this method is tightly coupled (THE CODE IS BASICALLY COPIED) to Reprocess 
+            // method. If you change anything here *make sure* to update Reprocess method accordingly.
 
             if (schema == null || schema.ErrorCount != 0) { //Schema with parsing errors cannot be loaded
                 return null;    
@@ -908,8 +908,8 @@ namespace System.Xml.Schema {
         }
 
         private void AddSchemaToSet(XmlSchema schema) {
-            // Due to 
-
+            // Due to bug 644477 - this method is tightly coupled (THE CODE IS BASICALLY COPIED) to Reprocess 
+            // method. If you change anything here *make sure* to update Reprocess method accordingly.
 
             schemas.Add(schema.SchemaId, schema);
             //Add to targetNamespaces table
@@ -998,8 +998,8 @@ namespace System.Xml.Schema {
         }
 
         internal XmlSchema Remove(XmlSchema schema, bool forceCompile) {
-            // Due to 
-
+            // Due to bug 644477 - this method is tightly coupled (THE CODE IS BASICALLY COPIED) to Reprocess 
+            // method. If you change anything here *make sure* to update Reprocess method accordingly.
             if (schema == null) {
                 throw new ArgumentNullException("schema");
             }
index 09e12ca1d75a6559d7d38e43c78993f05412693c..72b8e838caf1b2dcb8979eb13b26b454d5ceab00 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSimpleContent.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 518fc1a80bc5cf8c219fe3aae44f0a5b0751e790..bd843c6000e5ecd1b14123d3acb588f200c85efd 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSimpleContentExtension.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 6d5572294bae4416948ba946c959b6d178915556..44ba849574d3f2ddb7103e6f4d4b0f3e5ef76ea2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSimpleContentRestriction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 7c5f4e01c9c5f81ce52f81a0e3b45ff2127d56e7..fc2d9a63660dd91b0653395062991457a785b7bb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSimpleType.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index e4c1d46e3fd7b13107576cbe7fbc29900e777457..b61ad2ced9fb705d80b9a33d43a6860f5e0fb334 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSimpleTypeList.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index ed297392f4c7c46adfa29b8b1bbe43999e7a4663..00a50e25d2594e9c3a56eccdaa6e1559321e877d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSimpleTypeRestriction.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner> 
+// <owner current="true" primary="true">[....]</owner> 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index b79aa843e8f867baa571fd5bcb8ffcee9274095d..7b0f5d209c1bc7a6a41b0e4a4c4e419e164350bc 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSimpleTypeUnion.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 8a9a38a1f6390450747b2f46af7b8d7707d0f62f..57c128310544ac44095b108474005b3ac6ab9670 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSubstitutionGroup.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 03330c7440b5587097408b5ca627499876dab2e5..033fa6c43a3ee80655f5e7255d403602d282da01 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaType.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>  
-// <owner current="true" primary="true">Microsoft</owner>                                                               
+// <owner current="true" primary="true">[....]</owner>                                                               
 //------------------------------------------------------------------------------
 
 using System.Collections;
index 855c9e0cb0446fdc7240a3baf81dba9a89e2ea83..7f6719ef19b5c3ccbc471d6d15b510e73ad0401f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaValidationException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 05b3b5784a18a5d629debaf1a8cdc2c0764f7577..acfd701d425c942b6443b5e762ab30a44bf1bd82 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaValidator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
@@ -1971,8 +1971,15 @@ namespace System.Xml.Schema {
                             }
                             else {
                                 // for element, Reader.Value = "";
-                                if(typedValue != null && stringValue.Length != 0) {
-                                    laxis.Ks[laxis.Column] = new TypedObject(typedValue, stringValue, datatype);
+                                if (LocalAppContextSwitches.IgnoreEmptyKeySequences) {
+                                    if (typedValue != null && stringValue.Length != 0) {
+                                        laxis.Ks[laxis.Column] = new TypedObject(typedValue, stringValue, datatype);
+                                    }
+                                }
+                                else {
+                                    if (typedValue != null) {
+                                        laxis.Ks[laxis.Column] = new TypedObject(typedValue, stringValue, datatype);
+                                    }
                                 }
                             }
                         }
@@ -2006,10 +2013,8 @@ namespace System.Xml.Schema {
                             break;
 
                         case CompiledIdentityConstraint.ConstraintRole.Unique:
-                            if (LocalAppContextSwitches.IgnoreEmptyKeySequences) {
-                                if (!ks.IsQualified()) {
-                                    continue;
-                                }
+                            if (!ks.IsQualified()) {
+                                continue;
                             }
                             if (constraints[i].qualifiedTable.Contains (ks)) {
                                 // unique or key checking confliction
index 10742ccec7ae96a510bce147dbebe664e081b3c1..02ccfd06efd4ae400be180442e094cc2ba3eeb7c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlValueConverter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 using System;
 using System.Xml;
index 1b003a79e6cef3b7c3682184ec3a522c0d16f618..21c0ddc0ef29ec6ad6a62b6cf18bf6aa2f943e6b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsdBuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                 
+// <owner current="true" primary="true">[....]</owner>                                                                 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 923651d28f160550fcda28f80b085049a7d88f62..41b2d7223977dec55daf3eea9178f52abb0f9110 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsdDuration.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index 8efe7a1fb0421952782ad1761517b4871d97af8e..cd8d56364639a539c2a457a346ac92bbf4cc30cb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsdDuration.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index eeed4aecae006bdadb8a0f7a4fbf014dc6336a11..32f4e92753b4d2340914875cabc0c5f796ba71c5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsdValidator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner> 
+// <owner current="true" primary="true">[....]</owner> 
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Schema {
index c619b6c7a35e13d2d206386cc9a6464f764eff74..405b942ee9a3f55671e056214d23de8185bb6020 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="IXmlSerializable.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization.Advanced {
index 4b1cfbc7ec00e0503d47bef10c77a1ee73ce7937..5084e376c45d56caa9ae43dccc68f6ae8a0f2829 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CodeExporter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index a01f38828d598c0d1967e25094b19873c3e1171d..3f933eebef6260791387dd93ac8fe4b9a6680f31 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CodeGenerator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 using System;
index c0dea737d730c3e681f1d0d6053be9620db97e17..324f1af212995fd5b8f57b1c0a26d31cb60445f8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CodeIdentifier.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 33c37fb941cb661956995bbdf07f40a63f5d79c1..1213c82f2b3995882f6053f15ea4d74d5a1e86d2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CodeIdentifiers.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index b34385a1dff2fa46db125c00533c132012df7fff..8ca9ba646d18175a7e541d13de75900f3ed1fb2b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Compilation.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 1cd1c6499b47feddce8403e6659916c2717d7454..a415250e5f214825b16f5fe80341091aa0121100 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Compiler.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 34b7f45b42f2708169745daa181f4cc1271d4c9e..76688cdf0d51c276756d4366a71601242a2eb936 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ConfigurationStrings.cs" company="Microsoft Corporation">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 namespace System.Xml.Serialization.Configuration
 {
index 05f3d9bfcb3dcb5d72536f31b5b2e5594b7451b0..88518da10ee046e2619be459ef978c1fba35573f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DateTimeSerializationSection.cs" company="Microsoft Corporation">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 #if CONFIGURATION_DEP
 namespace System.Xml.Serialization.Configuration
index 8a5c5b1dd1b57c3370538d6f04bc98decf99d873..1d0e2f2b296061c200f18c3dcf0b38187ead4342 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaImporterExtensionElement.cs" company="Microsoft Corporation">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 #if CONFIGURATION_DEP
 namespace System.Xml.Serialization.Configuration
index c7eeb00c76fcc24375639f4443a495d8e3a91b88..1bfc52aadbf016fa282fb7842873b23c1ecb5c8e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaImporterExtensionElementCollection.cs" company="Microsoft Corporation">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 #if CONFIGURATION_DEP
 namespace System.Xml.Serialization.Configuration
index 924ef8c6debc8350db65679c9b4d9558839a808a..c8aad1da1f593d1211aa8167b6d07772f1763be1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaImporterExtensionsSection.cs" company="Microsoft Corporation">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 #if CONFIGURATION_DEP
 namespace System.Xml.Serialization.Configuration
index 8dd0bc90735d447d279f5b63f65b17fbf0e40ce7..cd4a4d9ba1e76bf7d0bfe564c04c8513caa20580 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SerializationSectionGroup.cs" company="Microsoft Corporation">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 #if CONFIGURATION_DEP
 namespace System.Xml.Serialization.Configuration
index 3e32d3119cf896beaad78a708a3acb75dd7c26a5..b4691e75a0fc48b38d126759096a744e0a9a4723 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ImportContext.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index b8be09a3a88d0299b8838f0151e2ae46617ffb72..b1143fdd1a0d56bc981803f364f7bf95e94e22cd 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Mappings.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index adeb663175a6c8fd6fcbab9d8ff6d34c8e85f3b8..a555726ea071326e8716a46ed3694d340ab161c3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Models.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 9df48e3668e4f62df12c0770ddb1c42fc4742c6b..eb9a3973a10d20f8ac5ed91d514ad347b44eff6b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NameTable.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index d2df57b8168e8be0eedb9e9752d355baacf211aa..5915f59b1088287364eaca9857d87aeff618751d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="PrimitiveXmlSerializers.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 236f74f199c8d49ce86e4c725f880312b9f7813c..07de77756f9dbb5bc5fccf0d1fa458440eda3dfb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SchemaImporter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization  {
index c3cdc3dfa4effa16bd740360136110a9487c2f24..0c356f8b4925cb2422e2a1046d940ce106aff7b4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaSerializer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index b7d0b0173fca8cd9f616c3ea109a04e18a174a25..c67b07494d3ec2aad46736a6479ee550e0b4c12c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapAttributeAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 973efa75f9615685c8dbc62cadb34d76a815eb99..70e4578fd66f4af00a907f8ec8917ff730269579 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapAttributeOverrides.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 1351c4f2411e04d67eb7a447849aefc0ffd55bed..7e51c2ae24955cfc6ac15c2c88c70de44619d582 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapAttributes.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 0f69038917033f8f7e1813b2ce5c64ac6c8d74f6..f7b9ed8785efa7dafcac2c6a4a862c2d956bcf8d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapCodeExporter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index d1efc68ccf6b39a5113eb31ab86e1502566609f9..b30a00770cc79a3acebb9158428b655d87a76cd7 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapElementAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index badd54f86c95da40b85eb7089350185875f5b060..28af677d6d038a7b19b172ddc6dc53556382fbbf 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapEnumAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index d4b6f158a4ff9a416af252ccc1c778cead671a30..fbd44f768853053c546788316bc201a82b784e71 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapIgnoreAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index b94e97973a72656cd3c56e496bdde25b2ed99b86..5c406d7f558f9fb0001b5f2a70200fa63fa55ca2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapIncludeAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 89159cfe0e14176f3099640728e76b09404616d3..5c7fdae0cfbcbc8e1fe67d17a5753713baca3ef5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapReflectionImporter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index aaf94a6442a424fcf5e3b53100cad4ec702bcc62..17d6dfd57788f172a940b90a1c680ff69ab2e6ee 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapSchemaExporter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index f36606e7bc31b81ea1804667147ec1f2b95ac4b1..65a6e2a38cace0d63b0525a0c7df5296526c5385 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapSchemaImporter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization  {
index eb710ad171dc4b07bb49dbbcdd83b250666a136e..09f0e10d72479e3266ded30db51bb808c73977ce 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapSchemaMember.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 51b16412cfb36a517b4c0b3c8f8107bf3280cd31..450f4ce5aacd7f4a2ba15057fb5902e26dff856a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SoapTypeAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index b0337dfe8c09cf4766f111043ebcc073ac4ffbbd..1663c89a9ab89fbf2c0da4a084363e0e8354dcb4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SourceInfo.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 103b424f9fd4d6795ac96f679fb06e5956afd1c8..f924a4374a54f0a53140dc69db06e4ee3ba092b9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Types.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
@@ -476,7 +476,7 @@ namespace System.Xml.Serialization {
 
             AddPrimitive(typeof(byte[]), "base64Binary", "ByteArrayBase64", TypeFlags.AmbiguousDataType | TypeFlags.CanBeAttributeValue | TypeFlags.CanBeElementValue | TypeFlags.HasCustomFormatter | TypeFlags.Reference | TypeFlags.IgnoreDefault | TypeFlags.XmlEncodingNotRequired | TypeFlags.HasDefaultConstructor);
             AddPrimitive(typeof(byte[]), "hexBinary", "ByteArrayHex", TypeFlags.AmbiguousDataType | TypeFlags.CanBeAttributeValue | TypeFlags.CanBeElementValue | TypeFlags.HasCustomFormatter | TypeFlags.Reference | TypeFlags.IgnoreDefault | TypeFlags.XmlEncodingNotRequired | TypeFlags.HasDefaultConstructor);
-            // NOTE, Microsoft: byte[] can also be used to mean array of bytes. That datatype is not a primitive, so we
+            // NOTE, [....]: byte[] can also be used to mean array of bytes. That datatype is not a primitive, so we
             // can't use the AmbiguousDataType mechanism. To get an array of bytes in literal XML, apply [XmlArray] or
             // [XmlArrayItem].
 
index aee71d513bf8aee32cec4efa6307397c7344ae92..87a78f38d646436aec21484f0032686b7a1054e2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAnyAttributeAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index d9479840f3065f399030925199c547a71b9fb15f..d83ce1e407c9413e5dcda12f422a146e08bdef9b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAnyElementAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 58a9fc1cc96a899c750de2228c6140d33b113d3b..898934b9005781c59dffde7389ba4f2133c44f55 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAnyElementAttributes.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index f2f777ba41615ea6ab92a48f946522a3a455f073..6011b322f6c8084ff0faded3ecf00def76da63cb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlArrayAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index e652fb697cd0d4c3b5ac5a04da6a60956101dc6e..a476a7edacac9c11f4225f1f2bfc533ddaf17bb1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlArrayItemAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index fb335d877b4e2c94fd98c5e86c872bdc21580885..b5fbde2b9ff8d875354014f3c964d6dbc4c2ff11 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlArrayItemAttributes.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index f7d59c32f0f46966acecd30de3e980e04ce47297..07751a9b3b59bfa1a49d6da3c640e7fdfcc1e5f6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAttributeAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index bdb8893ecf6d18e89da38baac0864ebe4e4125cc..af725a3320dffa8ad3f4be222893e4424dbba273 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAttributeOverrides.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 31bb36612ed9bff2ed9f6533e4627d56824adbcf..58437dabae8b2bf41d8cb882cb5ae71ab5f2b611 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlAttributes.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 021d99d07b1a01b67f1ede5d71d158e5d47d805c..c30af562a273460b749d7f62eb5fe649fb64229d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlChoiceIdentifierAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index bb8d1e1771c6d41fc3b95ebcdd11dbab2d98f8df..690a9d8e1c7ac919ab5785338b328fa5a3b775fb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlCodeExporter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index bbe4dea203788a40a95604922c9d2ed00754d98f..cb302c652ce7aa4161793199a54ab5ee9d51ed89 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlElementAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index d868493f22760b9f174a301f34efe56a6409a97d..a94e8215b17e42f7c87f20658128e9f57fff6f4a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlElementAttributes.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 969830dc0f756a5d0995fa25c3407d11e4dcebc8..3c658f592c4fe5f700b179954d56a47d96eec8b9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlEnumAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 3aafd13b76d56518e040a1c622e2d657e7c24e7c..1205bb29f9f3f454a84abf7e3e8a62e4d0825d97 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlIgnoreAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 7616791ae34cc00aebd6de512b3e18a75917f961..54034c8e1b1d54cf13764a8e6ef82b6dc9e42b4c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlIncludeAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 33efdae68e7664076c888a385dc4e20803b69b99..6158e7773d976d866ead35e215a18eaf519defa7 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlMapping.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index ee5af6c4d29c224fa685fb508301cdf91c083be6..1636b004ab6e359af3545b2f26a2139e2152fc01 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlMemberMapping.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 75331e3de27bebf38313cdaa5c296adac80f6370..cfda2925269cc1d2998a90121a246f17ca23e552 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlMembersMapping.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index ff139a068880562d5b88e7408fb145a60814dd8a..efe61e2841507d4998e6c5f214b551832b8ddfb2 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNamespaceDeclarationsAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 679017453992082c8b5befede3bdab682f21a2a1..67ee9bc54267e11905a7ff1f00299cebb1b07f42 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlReflectionImporter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index d3f36fe929368194a5791bcd5db547b3281ea54f..2c9c0699d611dd5ef49b5f166d664f041c5b7dde 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlReflectionMember.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 6225393033316136ed134890ded0ebf9b1899cfe..fd00efa5441cf574c3428c079dbfb923277b9ca5 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlRootAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index d8e6e13185269c83160030f4d068d8bd8a1daece..8c0704b15a27361539d0fa0cfb3c420e93db4cd8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaExporter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 1f7aa1d1a103bfec063ea5227cb03fbb6ef5003e..2f4309b4f24a38541967397847a4bca520373975 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemaImporter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization  {
index 27c46a66269c16bfc9dbcbd677a56c8e8635b037..ccdeec6bb4d28aaf29aff6f9e8d4aaa72cc37652 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlSchemaProviderAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 1e3e27f8ea83194cfadc96c91b4bf6190f181938..eef8682e72710c7653c96659c248a9b5234d0a09 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSchemas.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index d3f838001639371a45b43ae5b0d2a76b0f2a4858..a46500689defcfcc415094607c5be4733f144b60 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSerializationGeneratedCode.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 3460db55baf6e5f1858a51420ce6ce2593839177..564d888ef91a39a3abecfa84d493015f265e2f6f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSerializationILGen.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 5a3d21642d46f4e2e06e88f9fc591742bf823d14..b6800a7f4e641f45d10832207ee0dc87098e21de 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSerializationReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
@@ -4185,7 +4185,7 @@ namespace System.Xml.Serialization {
                 memberMapping.TypeDesc = arrayMapping.TypeDesc;
                 memberMapping.ReadOnly = readOnly;
                 Member member = new Member(this, source, arrayName, 0, memberMapping, false);
-                member.IsNullable = false;//Note, Microsoft: IsNullable is set to false since null condition (xsi:nil) is already handled by 'ReadNull()'
+                member.IsNullable = false;//Note, [....]: IsNullable is set to false since null condition (xsi:nil) is already handled by 'ReadNull()'
 
                 Member[] members = new Member[] { member };
                 WriteMemberBegin(members);
index 6ba4b2d7fb5998e5aa8751d6aee797b977883f02..e7f2c1bef49445dc6e928f601e26dfb81de02d4a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSerializationReaderILGen.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
@@ -2881,7 +2881,7 @@ namespace System.Xml.Serialization {
                 memberMapping.MemberInfo = memberInfos[source.Substring(3)];
             }
             Member member = new Member(this, source, arrayName, elementIndex, memberMapping, false);
-            member.IsNullable = false;//Note, Microsoft: IsNullable is set to false since null condition (xsi:nil) is already handled by 'ReadNull()'
+            member.IsNullable = false;//Note, [....]: IsNullable is set to false since null condition (xsi:nil) is already handled by 'ReadNull()'
 
             Member[] members = new Member[] { member };
             WriteMemberBegin(members);
index d15b2bf9bf55da3fee70ba528b0a9592c1d3f194..69bbbd4086282107e7f6d0015e7c635c35237871 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSerializationWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
@@ -3627,7 +3627,7 @@ namespace System.Xml.Serialization {
                     return "(("+typeDesc.CSharpName+")"+obj+").@"+memberName;
             }
             //throw GetReflectionVariableException(saveTypeDesc.CSharpName,memberName); 
-            // NOTE, Microsoft:Must never happen. If it does let the code
+            // NOTE, [....]:Must never happen. If it does let the code
             // gen continue to help debugging what's gone wrong.
             // Eventually the compilation will fail.
             return "["+obj+"]";
index 05e529ea2ccfc83fa285c6e8d6217f37ee2718e8..0884a6c7b5da7e6315611e5a49e476e297bde417 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSerializationWriterILGen.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index eb11fe3b3729159e2bf4fe5ddd82706c8e75bf80..9600e7603b208a6f629a34b4c464cee74a7dd618 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSerializer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index d8b1a898d02bc6439c46dee4618018369e3497b6..677f7a15fae83e3495ebae892faa2b302c83b8e8 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlSerializerAssemblyAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index a4bf3a0a9402d52cb2e42a2dc598652ca69cf713..9163984f441a26aa98bf3aa7a3ba117c92e10692 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSerializer.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index ce3b533dcfcf17523cdd89735647ad4a5c602c70..de689d2a5646f1e55341ac59828f5442775114af 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSerializerNamespaces.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index be04e89919e276250d31672603f54a1fd6c81218..4b5d05ee5c8cab7dc813e69f488400be5258ae0b 100644 (file)
@@ -3,7 +3,7 @@
 // <copyright file="XmlSerializerVersionAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 45fc96f741e480387876acf84bc94a1b95adedd4..0d793ef7b6feceb3d74a0bb509c9c6492ca491b4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlTextAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 59a472331b8d283e84902e062e1bac2b1a27e9f8..6361946877338abbdae7213e56d85b0de3968b4e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlTypeAttribute.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index c8240f3a0b2e21f3b444b460b192842d72624437..4466a51600dd4f97c451e9b3ecf030f55d8c1469 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlTypeMapping.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 6708ebeee9dd75df4494ac7960a4e332592054a5..d186daa2aa52a0656ad5fb8b057411c9b4fcf9df 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlCustomFormatter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 namespace System.Xml.Serialization {
 
index ec9b3e7820736b7122f5404f5695cf6ce85f20f7..491828807d064f1e1466ab7353cfdb4fccebf438 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="_Events.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index 5c6867eafbe9bcf40e5c273471eb0d6c24b9dbc3..22dac15fddab9bfb55aef143097071ba1c05ee03 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="IndentedWriter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>                                                                
+// <owner current="true" primary="true">[....]</owner>                                                                
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Serialization {
index bf034e162b4c9ec66a4a9fba8b550b5bc5fd35c6..34bc73279526f0a354a86383bd7d409f64833771 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ValidateNames.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 1dc479fe5049227a00fdf26767928ab0b1283f09..7c126900c12bc81c8a8c97c00bcfdce2d450e741 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="AbsoluteQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 052dfbc453ebb08408cdc52e36097d18040e30ac..93be0280437c6d1c547587c808ae187761ddc34f 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="AttributeQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index c64fb4307cfc2b5a8b72697771a360f4c49936f7..658c08c7b1ef9146f551f78352ea8d1f4eaf30c4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Axis.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 91c37b719a80d6fd3545f9a3e3b6011ea3ef13a9..83170d035d35269d99a71dbd496c061e5754c787 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="baseaxisquery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index fb3b9f7be912e549cd3908999b176d4cec32992a..a8af11f65c3b2899a21fbd3054916a26fadf8dcd 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="BooleanExpr.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index b18ef609c9162da85c15854b27537200dc03dde8..4fa3553f2308efdae140dd3385f318e34513a337 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="BooleanFunctions.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 4a264f4e7061b15435ad6d8c94d7a2de7bc0108f..47dd13ee64524e4f239efda1cc9dc67d539a22dd 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CacheAxisQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 3ad2a6fb2b7a69e8ee491313835623ae0ad270bc..53954396cb832473aa67cee01cb0381803247ce4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CacheChildrenQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index e6331502c17707061ca8d7b4d7476e34e057d9ac..492358dbcefb51aa99b3d7140c0724ec13e51e04 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CacheOutputQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 7784a5ff4b2991edb7febb898dd2d8dd088b489d..a088816ba7a72058f94cc5e061c0a89fcc38889e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ChildrenQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 6181cd0d52cd103facf465ba749370a01b8ef2e3..b2bc1773586a43a8f04447f783409f85c94e0f56 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ClonableStack.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 0f87cd36796ccc6639032876ecfaede7c8ce5a1d..f5fd3854859aee8ea904c4e36ec7966b2ced07df 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="CompiledXpathExpr.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 56d4661d77a7908a1fe33f87d419c7aa1996b112..98ccd0e783aeec96da96268f55926955fe91c4e6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ContextQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 3fa58383c386724d90e663979b1325fa8e4f8d8d..b05f45174e77895d0f03645adb6bf1cdbbc05841 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DescendantQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 317e0da51a3df5cbe7ffb582c5e8e72f7d861b50..3092046976225257432b6237d26aab56307e0e20 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DescendantQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 4cc0776e0657fada9fae4488622dcc249494633a..140f6afe046f1c8cc66ab4a5ab0276867aa1f3ed 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DescendantOverDescendantQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 0093670b3ec69097905f77abfc12107d37b37b43..9f38f0c7f3592193dc303da69368d4394bc011dc 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="DocumentOrderQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 4469a732c33bfeb5acae76ff22cb99256e57d39c..141206b5a78095167622e6b984c5f67414df05ca 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="EmptyQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 219afd68e64c234ae710e33e9d0d0b08881f23c6..6069968f22a42a116fead5088cd71af6d2dfb813 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ExtensionQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index b30bce34c1e1f0e32966511d6318a3e40f4ea425..4dd89f4891f28589330f56a713d383e8b4ab1de6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Filter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 04b9e74274618e7d73dbcf3acf388f529dcc4140..257d441e259d78579891931ffedccac4764a0d38 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="FilterQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 38235ba79c032e28aba549aa19926ecf05cbadd8..f6e8379884b9c95ab719c3390e03051e4e19dc54 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="followingquery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index c26df84de059cabf4892aa70cc46169754134012..a50814efff8774bbb5bbb72322fa89b1efcd05ae 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="followingsibling.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 34f5664b654f00eb9f31a6e54c16434539d00806..eef25bcce754bb2fceea5e466034f8409457da48 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ForwardPositionQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 027bc49f2153b0f3372ad74c45160772ff7f1b07..1233c7235946c09587c758e6d9089e5f6a2ec126 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Function.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 0a94d6efe191b859796d630d653ddcceff7e8b83..26fc0f7e0204890330a8b214ed50e240ea74459a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="FunctionQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
@@ -62,7 +62,7 @@ namespace MS.Internal.Xml.XPath {
             object[] argVals = new object[args.Count];
             for (int i = 0; i < args.Count; i ++) {
                 argVals[i] = args[i].Evaluate(nodeIterator);
-                if (argVals[i] is XPathNodeIterator) {// ForBack Compat. To protect our queries from users. 
+                if (argVals[i] is XPathNodeIterator) {// ForBack Compat. To protect our queries from users. bug#372077 & 20006123 
                     argVals[i] = new XPathSelectionIterator(nodeIterator.Current, args[i]);
                 }
             }
index 578826b68e6820367c29d0f20bd9a91e5eaaf132..454ffb263f44f7e48202953814ddaefe83238060 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Group.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 087d3bafa45dc1b09d399ccb3f2e6944c69be7c4..597f939662f7ae4cbf33f9c15c6912dbe90111d6 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="GroupQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 9f4c1589d74560abcaaf31e1f741ae0b4f672e0d..5a6e292fd70c673375e828bd8830266398eebfe9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="IDQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 09279e2393322c39ff343d6a5c0731ce7310dabd..e0718275e44fd308b71bc1ab5185459352532296 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="IteratorFilter.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index a0438225c6e7b65faa96973f041fffdb3a8c2002..8a59b0566c31287df9dbe9b371033745b30ed5cb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="LogicalExpr.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 7412739210ecd94f42676cd86b6321af6b8fe660..0b354f536aa8edfe5ad8ace53afd91735c80de3c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="MergeFilterQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index f3ad00498733354ca6f6d08652b70cd8858cdbae..36fd3fc1e1dc3a82b5a0dd268461b71b837d331a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NamespaceQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index cf9566dfd5fe3ae4ef7ab00fe9d0aabec5153ed0..e7607376bc4588b2c3f0e7e701270a0aa52756d7 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NodeFunctions.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 72c11f9176d00f00023661ac0c21cf14464feb1b..b824bca297d72ebe4233a1713e3abae35bb074b4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NumberFunctions.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 4a2fd0da6d49a015d7120b3a27ca2bb2105bebc9..ee2878f774581ebbbee5085d85b0e67f0f769b4b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="NumericExpr.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index aebbd8ef7a2f662f25f2fda20a95a968010ee44c..6240de8ab7d745e90614392c5eb463a41aee7a21 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Operand.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index b88525410a040efe16713e3808c4bd45bf8248a0..6cf3e30d87af6a74fc3f319927821f7d7802fde7 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="OperandQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 9739fb127585ad7deeec95ae0f354fc055efbda3..c4d7481fc7414f930230687337f5dfc89e9d523d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Operator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index b755fa5352dc782c6aab15008187656d5986480c..8a0a6deba7ae9f525baa7af6b2a4430e08f28ca7 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ParentQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index bc925cc1c6b99ea5112fe765c12e9835d8224719..d56cac2bf022ccec9bca0d89866fc7c9ea98ebe8 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="precedingquery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index f690049c7dd4b15320f68a50449a2ba145328e3e..75399c76a7080f831281efbf2c73669673e81bf3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="precedingsibling.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index a70822ac732ae982b31197e2d3fa47147e8be519..73eae5c5c5d75d1c8ee5e9786c10a8101dc90a72 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Query.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 580491f0f49836003a73f9c831f66380dbea9368..19a56067a58fd997f7302af7fef9605ac132e9e5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="querybuilder.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index e48a28e36faaa78efd78c14f53be9b0d0a2d5492..9943abe24df124cebaecabb2e30093bf140ef099 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ResetableIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 35bd8eff288d1a79ce35cc63e7eee29f696a4223..406ed7e5b46be5e95e27b0ddf081a6070e92f772 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ReversePositionQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index ad0fa9c9186e62ca06cf6fa52e291bf18d514468..fbfee26466800b43c259c7312d1621fc96cb2521 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Root.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 4be9a067e2e727984d3a1faf8386cf3d19ca4bb8..47e28a29143a36ebe9bfa1fcb9d06f5f4ad0a58b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="SortQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 8b477ecf78f0fc366c4262d8269efc908878f513..1d545b5e5634dbd4c0a52c87816b0a713b72e00e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="StringFunctions.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index b14786fc6328c70b3331cc044f4453f1309dc54d..79e24be6b05df60b4883f2b7a7405e86907239f5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="UnionExpr.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index ee50b81b7ea39c1d8878497865d35c7eacc582fc..41aa2e0873192a5692846d2acee4f121723bb2c5 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="ValueQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 594b9c8aeadb8c8310fc0e022607d5dc33af8efc..1d6f50cf14156dcad1c906741d7c7bd157286609 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="Variable.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index c2b6ee2e3e4c40f6682c93195a5670b62d1e6e01..ce6b7132ccce776662c64bdc6b6fa72aea524a33 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="VariableQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index d0709058bad8c8e8f6cba7e58e28de7eaf66576a..5f839cdfe9b7fadb08ff9ce6fc2555ea6050d48d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathAncestorIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 1d2f04cc86c5b362f66b4f857552b6a6e5c20a55..503d1f600afdb7206cb90317b7ad49710e417810 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathAncestorQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 9f16db6db82fde2dd64ddd11503b112123718b16..724df0e32086850419c2da0ebccfe98eeb3fdceb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathArrayIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index c0aeb7005ba6f099af5bb87287a6d6cd7eac66a0..512e8618f23639cb871f4909a95782f74a9a835a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathAxisIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 2ea63b69459cbcc981bec2ab1c780f9a8e1a2ed2..f87c9c7619c64512fb264263195895ac31642bda 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathChildIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 5879555dfaf8be8fc8fe7e40eaa6345efa70d479..2cf77bef2776a4376eaae8d90facc5809eec2f7e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathDescendantIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 7970452a31e4f718920cdc01eb9bde0a495fa797..6fa40453c2611e1945dc5e0f6bc229ce621a3fbf 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathEmptyIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index ac2f1fbecbadee02d13f9b3a9f98ba2a53d4c979..ef8cb5858d5d6d0f19b978991664d2dde83388cf 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathMultyIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 0192d80a606d31faced7375c13b61c942e1bb9ed..c6a07aaa57195314d60d22178009f8744b5f8c6d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathParser.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 3b78f4fadb68da77f8ae48f5717f9058526aa4b7..76e15142ea477541919a682e66b3213d6b850129 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathScanner.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index deb898114557bd638df9a96731834c9688d3a727..f09f8acc0102c12e431152402dd1cf91bc1418a3 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathSelectionIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 33f932c26f7feb487b20edad332ff09bb1706a4c..e15cacaf7cfbc21e348f39661d8f0b2cd6ec754a 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathSelfQuery.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index 4528669ed86e0f91e01d435ce689d8c4ef31f7c6..6e32451a8699f6425c251f728edf9ff4aa38bba9 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathSingletonIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace MS.Internal.Xml.XPath {
index e1d9bbe8eb4cb1a450fb147442b0da40e1dfdc38..3bb8e8ad5a08b9d353b688bdd0a891ff9623c07e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathDocument.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
@@ -231,7 +231,7 @@ namespace System.Xml.XPath {
 
                         case XmlNodeType.Whitespace:
                             // We intentionally ignore the reader.XmlSpace property here and blindly trust
-                            //   the reported node type. If the reported information is not in sync
+                            //   the reported node type. If the reported information is not in [....]
                             //   (in this case if the reader.XmlSpace == Preserve) then we make the choice
                             //   to trust the reported node type. Since we have no control over the input reader
                             //   we can't even assert here.
index 8eb02788a5af1ff0d39eccc70d096808da160157..533518ac83e552b6001c89329681561baf3d15c1 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.XPath {
index 195bf20b98a0d9fa46747344306b759c86a89310..803907df7c18bea5c6b3db3e0958a3c2002829cf 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathExpr.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.XPath {
index 85653c0dcef360b802c598f01f261b53094dbdf9..ea954b05db5f9d589b10cb455fb46f2439ee2772 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathItem.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner> 
+// <owner current="true" primary="true">[....]</owner> 
 //------------------------------------------------------------------------------
 using System;
 using System.Collections;
index a1900faf08b5593de7da306422af31939d1043dd..ae5ecbc9bc7e51fcb970d4ca9ac3782d7141f253 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathNavigator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.ComponentModel;
index f6c83e1a493e7b6a1a7aa4809148194efb187b45..dc09acf20487cb31a7e58144752e62ace91c332c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNavigatorReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.IO;
index 12226d2052b6149c548c3422ffe49373b17721d2..beab98822b7b5848f4dca2c2b292cfb38d3961a4 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNavigatorReader.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.IO;
index 2d60c8544096ddd947e3381e59051c6b157bdfa0..3731627edaeb9d46db0cb13d5c5a3bb3509c8258 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XPathNodeIterator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index 17946153fc1346628f22af11752d605864fcc50d..46237198c2f2e6c4b052666303fe5477c600b453 100644 (file)
@@ -6,7 +6,7 @@
 // <copyright file="XmlCharType.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 //#define XMLCHARTYPE_USE_RESOURCE    // load the character properties from resources (XmlCharType.bin must be linked to System.Xml.dll)
index c30f7263e5279812d0c67a1db9a8137fb4bc9287..3c204926ddf6841b26f97c8e687bcf45c4e34598 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlComplianceUtil.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System;
index 6942060d9cfa6f335c02054da1bdfd820332c6c9..e8bdbe63988d5d7f1b569de57862eefe07d4a5df 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlConvert.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index e388818d1af5b89e6807c69ba316c81bdbda8a85..305dee8b7de5ba52208da46ea1d91a55bc6fea7e 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlDownloadManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 012e1523d3861165fc97c99654fcd4e78961e77b..c896a213686bf4016d76712acbe6f139f7dfac44 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlEncoding.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Text;
index 2873952c65fdb618d31bced54fbaa1122f17d2f6..40594f7477b04aafe2b50f20a1e17780abdf2ac7 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 7cab6b1036d4c76f9f14d682f19c3d778cb3b50e..7c825a1f38fffed2e35d9d3e5304e1ec1f48f76d 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNamespaceManager.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 620bdc1c70dd0e009366e670aec950158806112e..14dc8ded501148cb6e5967a198414c435befc850 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlNullResolver.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 #if !SILVERLIGHT
index 53fad1be61eca7adac34df762bc5e95d0107b399..cb58af776e5c0c41734bd9d907355b762d9d08eb 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlQualifiedName.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 2245d76d20a61ddd1a3a64fc61bca0afc169a2b5..0576f38a82872242af316234f1935b9a57c39724 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlResolver.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml
index 463bb7b68130c659e935ea5093bbdd84d8c94a4e..6cd15034393a5f9f8f1655afccb97114d312148b 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlSecureResolver.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml {
index 7dc2e20afa5bbfb1b1c9bd599b9d76b490e566bb..e762f5e358dc2db514373685bbcbb92220a5e08c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XmlUrlResolver.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Threading;
index 455e8912aaf566f51b0d94a7759a6a0db33cf0ad..dda069806880f9c1beb670b0e9ff5e339fc60113 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XslCompiledTransform.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <spec>http://webdata/xml/specs/XslCompiledTransform.xml</spec>
 //------------------------------------------------------------------------------
 
index b9ff06c66fe67236bf462e8db33038516b6a67b2..5a3acdfce2c2ee1a8b6b0449da740e6f3a6b8bdd 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XslTransform.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 namespace System.Xml.Xsl {
index bc33f89cb3765a51e6930ef9ea0f17600bc83e31..d8f0c98b28fb99120d1379f540964a38daaf634c 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltArgumentList.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index ec37ade341d8fc3f15bd309b074c04f010476fcd..64bf74fbd97f2dac97f6bf00b376dfc401cb21fe 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltContext.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Collections;
index d724bcb10d4e7d4a6bc83047834b726ae20aa795..1f4aaf2c678f5b58a167d0fca86ddc25c09742ca 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltException.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 //------------------------------------------------------------------------------
 
 using System.Globalization;
index d99fc067bab3e7fcf0f78f60b57f32cf46b613b7..94fcee6d2d90214d24c2e99fdf42ecaa68eced69 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="XsltSettings.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <owner current="true" primary="true">Microsoft</owner>
+// <owner current="true" primary="true">[....]</owner>
 // <spec>http://webdata/xml/specs/XslCompiledTransform.xml</spec>
 //------------------------------------------------------------------------------
 
index 124f9f45a4f77638dfef32a75c0f1ae622f5ef18..8a130a0f34285449d7dc69480eff98e832bf3edd 100644 (file)
@@ -25,7 +25,6 @@ namespace System
         /// We have this separate method for getting the parsed elements out of the TargetFrameworkName so we can
         /// more easily support this on other platforms.
         /// </summary>
-        [System.Security.SecuritySafeCritical]
         private static void ParseTargetFrameworkName(out string identifier, out string profile, out int version)
         {
             string targetFrameworkMoniker = AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName;
index 6301ddf46432e6b3bf794f8495db61b281094b47..437a870ba3569fb200699ee22055002ab97cfd16 100644 (file)
@@ -580,12 +580,12 @@ namespace Microsoft.VisualBasic {
 
             foreach (string s in options.ReferencedAssemblies) {
 
-                // Ignore any Microsoft.VisualBasic.dll, since Visual Basic implies it (
+                // Ignore any Microsoft.VisualBasic.dll, since Visual Basic implies it (bug 72785)
                 string fileName = Path.GetFileName(s);
                 if (string.Compare(fileName, "Microsoft.VisualBasic.dll", StringComparison.OrdinalIgnoreCase) == 0)
                     continue;
 
-                // Same deal for mscorlib (
+                // Same deal for mscorlib (bug ASURT 81568)
                 if (string.Compare(fileName, "mscorlib.dll", StringComparison.OrdinalIgnoreCase) == 0)
                     continue;
 
index 9fed6e3d6390cc1951c7f9b39449dc9170d583e6..a1911293b0db1bc618a3f1e3d217f596c0b4b460 100644 (file)
@@ -338,19 +338,19 @@ namespace Microsoft.Win32 {
         [DllImport(ExternDll.Advapi32, CharSet=System.Runtime.InteropServices.CharSet.Unicode, SetLastError=true)]
         [ResourceExposure(ResourceScope.None)]
         [return: MarshalAs(UnmanagedType.Bool)]
-        [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "Microsoft: EventLog is protected by EventLogPermission")]
+        [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "[....]: EventLog is protected by EventLogPermission")]
         public static extern bool GetOldestEventLogRecord(SafeHandle hEventLog, out int number);
         [DllImport(ExternDll.Advapi32, CharSet=System.Runtime.InteropServices.CharSet.Unicode, SetLastError=true)]
         [ResourceExposure(ResourceScope.Machine)]
         [return: MarshalAs(UnmanagedType.Bool)]
-        [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "Microsoft: EventLog is protected by EventLogPermission")]
+        [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "[....]: EventLog is protected by EventLogPermission")]
         public static extern bool ReadEventLog(SafeHandle hEventLog, int dwReadFlags,
                                                  int dwRecordOffset, byte[] buffer, int numberOfBytesToRead, out int bytesRead,
                                                  out int minNumOfBytesNeeded);
         [DllImport(ExternDll.Advapi32, CharSet=System.Runtime.InteropServices.CharSet.Unicode, SetLastError=true)]
         [ResourceExposure(ResourceScope.None)]
         [return: MarshalAs(UnmanagedType.Bool)]
-        [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "Microsoft: EventLog is protected by EventLogPermission")]
+        [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "[....]: EventLog is protected by EventLogPermission")]
         public static extern bool NotifyChangeEventLog(SafeHandle hEventLog, SafeWaitHandle hEvent);
 
         [DllImport(ExternDll.Kernel32, EntryPoint="ReadDirectoryChangesW", CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError=true)]
index 9aa3130964be49a09eb54cc1fae3cfa200a88353..56dad7b9e8f1a3e62b8bf24d53d49e398f05394c 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  SafeEventLogReadHandle 
 **
-** <EMAIL>Author: David Gutierrez (Microsoft) </EMAIL>
+** <EMAIL>Author: David Gutierrez ([....]) </EMAIL>
 **
 ** A wrapper for event log handles
 **
index 060594b0c8b83e46bc01aae9132240efc21e07e2..55d5f8ed7cd9046a8425360b76eff033d01b5154 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  SafeEventLogWriteHandle 
 **
-** <EMAIL>Author: David Gutierrez (Microsoft) </EMAIL>
+** <EMAIL>Author: David Gutierrez ([....]) </EMAIL>
 **
 ** A wrapper for event log handles
 **
index 72e064091ee434416146f4aafb1886130204b358..ba6ca911f835f5d1614f006ba9a35a7d5158a946 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  SafeFileMapViewHandle
 **
-** <EMAIL>Author: Brian Grunkemeyer (Microsoft) </EMAIL>
+** <EMAIL>Author: Brian Grunkemeyer ([....]) </EMAIL>
 **
 ** A wrapper for handles returned from MapViewOfFile, used
 ** for shared memory.
index 6a7db6b157617a434277b7a46624eacc445188a8..35568910b429b740bf7a5c976e43e73e3598d6cc 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  SafeFileMappingHandle
 **
-** <EMAIL>Author: David Gutierrez (Microsoft) </EMAIL>
+** <EMAIL>Author: David Gutierrez ([....]) </EMAIL>
 **
 ** A wrapper for handle to file mappings, returned by 
 ** CreateFileMapping and OpenFileMapping.  Used for shared 
index 55dc02ab90f5aa8891278cd6d5ac0a5bd4f2f7d6..ef4a1bb60e1e973f8436d267958543ff216d0031 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  SafeLibraryHandle 
 **
-** <EMAIL>Author: David Gutierrez (Microsoft) </EMAIL>
+** <EMAIL>Author: David Gutierrez ([....]) </EMAIL>
 **
 ** A wrapper for a library handles
 **
index 8f2c8f513fcf456c342f8e89aaf286f0a664901f..86df5599a7ae781986c44b2f2cb48b7910e1c077 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  SafeLocalMemHandle
 **
-** <EMAIL>Author: David Gutierrez (Microsoft) </EMAIL>
+** <EMAIL>Author: David Gutierrez ([....]) </EMAIL>
 **
 ** A wrapper for handle to local memory
 **
index 68abca846ae8f3c29a222b4a2068a0ed00e1fe63..65b3a0a10b58222c0a50aab858312f1c79ff9cf8 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  SafeTimerHandle
 **
-** <EMAIL>Author: David Gutierrez (Microsoft) </EMAIL>
+** <EMAIL>Author: David Gutierrez ([....]) </EMAIL>
 **
 ** A wrapper for a timer handle
 **
index f21aea760ec057f1bcc4313cc47267de562e1bf5..25fb6d62d009a04253c0678b68852d7a6f7aaf46 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  SafeUserTokenHandle 
 **
-** <EMAIL>Author: David Gutierrez (Microsoft) </EMAIL>
+** <EMAIL>Author: David Gutierrez ([....]) </EMAIL>
 **
 ** A wrapper for a user token handle
 **
index 7b074e0280c43b7f44e9380f6495559758fc7574..66eb9d755dc9ad6d1a8da084f1b02e21a14dafa5 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeArgumentReferenceExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 63e9b54e17da3a67cbab2028ac696331f9f1efb9..e4517f1bed39e56ff67db360ca261dc6d83d4a79 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeArrayCreateExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 85e97974683313ec131d07bfc74d18d788d379a4..efacd8e4ea43322c1478007c61c3925cda9d2543 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeArrayIndexerExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 2a5ccbe4c9516bffc0ebac6acb60530a2ae26627..1337fc7195e459d69176fd0d34229c490b8563da 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeAssignStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index f3098a1a6a4f2b798c686e8ac40273bf6df6eae3..78003316f58d58321d597c0e187d3ce098be1340 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeAttachEventStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 218ff75b4982caa4933b0f51986d6a469d1a66e4..278ba1db5305a8b1e9f737578da74ae8cfa4cd87 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeAttributeArgument.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 242803b581c31fe702a48899384bbaf31e1314d9..a7426cdfdcd1cb43f1c05545d2416129b28cbb15 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeAttributeArgumentCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index b10284664fddd038da618846c1de5f026656794e..4216987dc83871e1babf04ba1ea17541e4134f3d 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeAttributeDeclaration.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index e7a6baed54367539cac5bc3dc716335e6e468cc9..2c14d78934e761a2c5f0667e3bb1ce5174f60e02 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeAttributeDeclarationCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index e0c524343987c09e6569720133b9a73f55a5ea2e..ee21644fb74e5ecf0012736b35f9d121cee6b8ee 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeBinaryOperatorExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index f136ff61794fb8322f94443ea0f28a61de2aa2fa..c001c5806b439d3825f3e220cfe30937d09e3a95 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeCastExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 6f8034806b8c9aab7a640bab9ccfac0ed066ddc4..15ab8de228aa5adecd795bb63cfc84ccfaf3a1e0 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeCatchClause.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 4d8b0b35c56507cc5228f62fc2b49f9e018a3ae6..ceb3e70ea592c082022466529ff41b91adf9ac47 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeCatchClauseCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index b18cb50f6c5c414131b15c1e4edcbbf5f4177f63..a272b59d0c41b0968f5331158f406312507f8aca 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeChecksumPragma.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 2b04dec5959053ddc8ab25500b974fe2d5fb9ea9..e639c377603421be12046db90e912e6f6db57d91 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeComment.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 7872eaf031650e0903956a0920ffaf63d43fb711..bd7598eb8fe4149045a1e56519eb43dcfc9d7701 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeCommentStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index f2360b5646431732b0fad3057a68c679a55a1da0..9d0936dbf3537f38d877aca67fe7db964de42b1c 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeCommentStatementCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index 24c0823e6cebe986205c4a4cc0e36a4c229bdd86..7a4102e623a6b25fc87af9c529b20898f64e44cf 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeCompileUnit.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 65cf684d8944d4efb9d44b7fb510c4b047ca9ee8..f71df71452d3b5eb214013602ff72eebeed6dea7 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeConditionStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 0a29e595957a7ced01416893283aa0df652d8217..79a4e9906464c275711007a212b55ed5c64fd271 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeConstructor.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index d41abec56b53012f5b6edeb7441458199f0068ed..7ab33e6ba42e834453ce04a69b076d58f90efc26 100644 (file)
@@ -1,4 +1,4 @@
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.CodeDom {
 
     using System.Diagnostics;
index ada4bf15b81ef1b61efa58a0ab7ccdd97d42c62a..d5f19dc783803945c6dbfde90e680f8e54d94b1b 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeDelegateCreateExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index c46bdf91e559e940e5ba8dcbc62ef8aed927ced2..ccc099fbacda4c8f4d4889e3453e5131ec0a92d5 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeDelegateInvokeExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index b6dcdc64def17918b7a0039a4b4e0ba94a7c629d..12288ac596d81b54b782b8bad9799e6c86bd99ea 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeDirectionExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index c7f7b5a7a40ea6fbf34c9fc31e3aaccf3567b96a..4a1decc69aea80bd3a375f81caca4160af274631 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeDirectiveCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index aa65416192bf0ac5304addaa1cf1bac9811ff389..74575ca3e4d61b5d1444a5f44bb4684a95c5b61f 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeEntryPointMethod.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 3eadd89bff68a649d4e6f36a0b3381ce72ded727..1a34b90cad0a79fed23a3342d369f2117ee39b36 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeEventReferenceExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 6c0b04414d5b995bb11cf49033db6f441d8838e5..1af19ae87ae91e601e6bb7f733a85e5f665b97b6 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeExpressionCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index 7fa7f8bae5c7ef64da95533ddd43006ef4ead9d3..676ed98701c4aa1a92f997f64ae6995ebcb0c9cc 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeExpressionStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 279a2b27b347842d84087a5150fec3f9542b852d..52ad0e1018dfc981a283171fa60b6b4b698c1377 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeFieldReferenceExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index fa1e7c963c5124714d15d32baee53a3bb6aa2f23..a8b06a1ad84318d48c2e82bdb0bd68401a5ae56b 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeGotoStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index bd71984b75986c094385aff950257565b11cde09..cb41ce7287a09694a5f94876074040222b2807a4 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeIndexerExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index bcabe1bee86ff88987ada93b3d5dd5e6837a87bf..65d988ada2fd97af91915b5eab680e18f340d9eb 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeIterationStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index d378c4041bf898f68539237783ebb1c39eadfcf1..e9d0a4d675609b97b706f98dc2c836db36353cb9 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeLabeledStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 96064829f8480642af8959797eac9d271857b8c7..e83322d76019b50d054da476f947c02103609523 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeLinePragma.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index e7a05f69b4040d4771a89101c7a2fbb2ebd67917..d8ed1cc15d64513a20c44e8bd621dc00e6d0b4d2 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeMemberEvent.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 0a6d89bcfbcfbf931bf2a09094ff7f28a78c5b0a..a2d2877fc78b5cde1493ec88490916e93ecd0808 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeMemberField.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 1be2221441700153cb84809fac077bd7fdf5acc9..e7632f7ff98da832c578f737a044afafcfa84377 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeMemberMethod.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 8eded2271a70a9ac2aeed35c415b184b925d8ad8..c07ce9643e301f4614b73b5bf37c8993c2a27872 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeMemberProperty.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index b941059ead38e8a7c94569caa6fc2f373dd15fa5..d1d5fe7eb36fc5f4b09bec472099ac83773318d3 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeMethodInvokeExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 3769a3a70e4d71692525d390941ce07b6ac66b0a..6bcb6a1abf4c49e1b876c2e2694bae9d8bf74404 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeMethodReturnStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 6bef7fdfc10489aeec5cd7864ed08c6c1c003229..9feea179f30dba470524c8f8a4c5e69ea385fac5 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeNamespace.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 654eb1f8dee3c9a18440afb4793839180942e147..81b5d119997570f34d78ffbfd54779c16ebbfd40 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeNamespaceCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index 21fb016d080a048f0764dd4f7dbcbd4334cb42cf..aed07620ba6d522a2c36827670199313c0d583ab 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeNamespaceImport.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index e4b8c72dfa320c0f19d7129ce21541b4b953533f..9015a63bc1d97282e486f784f0de455666ebd572 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeNamespaceImportCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 97813e052e3a08c6f28a772148c5ec750b311576..f8f0993c578fba2405161b3e28c74a13ddfa107f 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeObject.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 6a09707e5f8577b410cd061f86f85158d732ce3f..9604e90baf8e4cd763d4b1685255f1ffbc7950ec 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeObjectCreateExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 5c3c1d58d566b9958a9074f8cb30e626b5962a1e..9e9703409625b50d01d1cbc19c945592cda592f9 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeParameterDeclarationExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index dad8668f12285e7f3748dd7a87269b609de737f6..2bc781bae3e9fc6d53fd03506bfb4efba259c972 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeParameterDeclarationExpressionCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index e8cb3b0f52b8b511129ea2a2776abeec730a6dff..b64496141f136b22fcefaacfc4c35adb3ef459ca 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodePrimitiveExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 97b3f36b823f6eff2c825f6cb4c0d357eb273e2e..28d511744cc529a7ce58dcd005affdd709863c8f 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodePropertyReferenceExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 058c64b2348eedf45c85d54c603e408930199236..1ecfe2e9b33471999c23b78d2e26401d73da34dc 100644 (file)
@@ -1,5 +1,5 @@
 //------------------------------------------------------------------------------
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 // <copyright file="CodeChecksumPragma.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
index 0f0c0f671aea7dab8f7a3e141a8448481271afa6..c767800aef46401edbf17a01e59cd1694c8bbbf5 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeRemoveEventStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index df0b7eb0a0f45720c883face75b3405b60c3b14e..bdf6f35b052bbbf709bdb181f4795d2f51c92d77 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeSnippetCompileUnit.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 18e87f7c61d0f7f168f06f75fc2b8a086625ff7b..2e759abc82633a828dcfd960d8bb663cbbcd3bc6 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeSnippetExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 8c0387fe46cf7b1c9f719ba0944218aa1d2c50ac..4190a887680821c8ea9b1aa512298d0b4c6cd430 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeSnippetStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index a07dfa68ac3d2e7745ac51e9fb933af764dcf36d..a2ae40489ac7aefb76dde7d1e2bf5f763b31ea74 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeSnippetTypeMember.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 3cdbebdc80d02479238286fae264b2e71464fcaf..cb56cfc083de96db9db6aebde3e349d0b8d1c968 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index d475921f4d7ddac775f60e4112de5a991bf3350e..b9ee3df1167e0c1684136145643a9ffe478b0a3c 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeStatementCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index f763c517c7ac92c5572bcd6974ac83727944f258..59a9b44aa304438c4e22472c2b3f059d52cb575c 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeThrowExceptionStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index d79ff52b33f316750e9b7998ef1f19261973a4ba..13269122766ba707ba383a01b70903b8a8038c59 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeTryCatchFinallyStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index c9dd7346b7fe0a87d5c43f31e31026d3887bb976..d2f737e9bf6bb15f6e05dc56cfb8561664b032e4 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeTypeConstructor.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index c9c0c37697e240c96a800d268fceadecd8d8dc46..a4c498834328fa36e62966ea97600fc24c97817e 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeTypeDeclaration.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 638ba5ff67317831714a2969743918c3853e6fcd..4d47a5afe7b70c0589fb0a03aca8871681122fd3 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeTypeDeclarationCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index f0ad8368f8bfa94b8bbed203d01b0b3b3da152f8..a96b3b2246cc5d9a4b5786a54da656e8828c1339 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeTypeDelegate.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 38f0c0d1c01c329feae4d3239716615932723f2c..060d76d8c0e0f1fb63a6602ef1777f7259cbc17e 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeTypeMember.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index b4fe0211f619059dc6f6c611b88331e3582d2fe0..58acc0bb192848017f0a79cbd15b441a11655cb5 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeTypeMemberCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index dbd3498f76a14025637b5d7f3cd8ac2dffaaec4b..a2ba738e4c01fa10e58d167fb8b84b55a8339e5a 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeTypeOfExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index fd5e1164b06398d0f3e38893f0653139b8d9cb19..d3acfd8c781fedec71de280d2a5a130cd8398d95 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeTypeParameter.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 9c03b81ab198a897e806dfbdd8b0fe62c98c524e..42290c07bd4138e08c36713825b4355738c3d337 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeTypeParameterCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index 3ba435d53a6a9e53c9416c560877e0941e60fc64..ad8389d7eea6f24e71b45357c88e5862599ece7f 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeTypeReference.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 0324aff528a085b83370a64e7c87e818af4f2398..4787c56acd65b3b5d11c760bc2f652348358fa03 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CodeTypeReferenceCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index 3fdc0ebfc4f621fb70291dee68f5c626032af029..267323a8d47fab6ba9c5901087784dc64542ade2 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeTypeReferenceExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 958a3386a2e5e0051830de3ac2b669eacaf80b77..2569c3895a22eca7b18e78514b841e686b41a558 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeVariableDeclarationStatement.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 83bd33d4bcd5bf6240dcbd95bf383dde3ecf4754..8ce7164697d3becabd14e77adc5372f3add6b8a1 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeVariableReferenceExpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 1b8c54a77a3ad2404b46bbe76fef445eec9f1728..96adf47cb09f6d9517c1ea3562d875d19a1fa44f 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="codemethodreferenceexpression.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 45fb83a1ea79b5b511cea2bc55ff7f2e6fa914df..7eaaa9aab344dfcb9a750ff232ef5511493ad3a0 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeCompiler.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index ff20041308314cdd4ed133491203320dee1570da..7fb7adce009c84b9189a4bd5fae1bab7fb0eae7d 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeDOMProvider.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index e1633cc9241150ca046f88887ae28831ff9f1ae8..b72b1a989f2e0920ca2be1ba3ff24df8b25b0c6e 100644 (file)
@@ -1,5 +1,5 @@
 //------------------------------------------------------------------------------
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 // <copyright file="CodeDomCompilationConfiguration.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
index 0e7062b0b12516411e9eeac98fc1702e4ffec631..60cde1f27424577755152c0670f53eb566fc9c16 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeGenerator.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 80f6a3ba5feb5bbec3f0ab837a30fd429696179f..d3a8dfb850e5c9542c1b8c0c4014364aff5f7589 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CodeGeneratorOptions.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 5164c804f6857f7b7ef5ee6b877f076dbdd2dc0b..6abf4c89d93c13834e8abe4736daf6ee0990dfea 100644 (file)
@@ -1,5 +1,5 @@
 //------------------------------------------------------------------------------
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 // <copyright file="CodeGenerator.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
index c5c2661e3776d0fc64f72bc3a9b6c8df71f70769..0e4f0a3bb783b07579b3de843b690c7032a571a7 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CompilerError.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index f35d185fc606b20b90f40433c307029069fda189..7b191fd9e62cc72bf2f3a02a80f8e813dc780530 100644 (file)
@@ -1,7 +1,7 @@
 // ------------------------------------------------------------------------------
 // <copyright file="CompilerErrorCollection.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright> 
 // ------------------------------------------------------------------------------
index 0cd93987b52cc149058d1392879ddc6c17378054..5e695adac39fde7d205d3c1c27559cc6f412660e 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CompilerInfo.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 647fcc163a4dcc3528bc41c3a6f2a89a2f03cc7a..c7d247c8de1dc54046da62f941f7d328e82ea047 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CompilerParameters.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index d2b7c231bfa1fa62b4f416599d40d2e57e2f54e4..5168410e59d13990963a0e62e7cb5af0ec555d13 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="CompilerResults.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 5fac36c6a025816a437f6051a0ffd00fea903728..e9a97dad1e159f040fd2a33968a6ba7e22d53f4c 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="Executor.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index fd30ac50c3a1bab4314196a4c31d47497c934d2d..0066e7363a387bb03073bd17879363ad18aaa966 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="GeneratedCodeAttribute.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index be86a9c176bd40fcf4beff7c9b9ba698f4c2dc00..0d6d57942d388e23266d3c1cb5ebaab39dcd5c5f 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="IndentTextWriter.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index c3c0e970c9a0108d9d63bde7e56e89b33eb82158..bf8e4bf87a36a105257e866a558a7f9432b784ed 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="RedistVersionInfo.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index f966f26840e20eac97106f231cac421352f1c0d1..da6925a113e4f0ca1fe4c5d0a3fd29ebd06653f6 100644 (file)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <copyright file="TempFiles.cs" company="Microsoft">
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>                                                                
 //------------------------------------------------------------------------------
index 086926ce9b7ecbb72f6afbb5152699855337ae03..eb8d46d665f2ecc7389528bf84f1f2e211424909 100644 (file)
@@ -32,7 +32,7 @@ namespace System.Collections.Generic {
         IReadOnlyCollection<T> {
         private T[] _array;     // Storage for stack elements
         private int _size;           // Number of items in the stack.
-        private int _version;        // Used to keep enumerator in sync w/ collection.
+        private int _version;        // Used to keep enumerator in [....] w/ collection.
 #if !SILVERLIGHT
         [NonSerialized]
 #endif
index 02e10f2d1baf27a077cc72212f8ecde0b52b50f4..69f8a5c195eeff566084b1521e9fac1f229198d6 100644 (file)
@@ -11,7 +11,7 @@
 // See spec at http://avalon/connecteddata/Specs/Collection%20Interfaces.mht
 //
 // History:
-//  11/22/2004 : Microsoft - created
+//  11/22/2004 : [....] - created
 //
 //---------------------------------------------------------------------------
 
@@ -60,11 +60,11 @@ namespace System.Collections.ObjectModel
         public ObservableCollection(List<T> list)
             : base((list != null) ? new List<T>(list.Count) : list)
         {
-            // Workaround for VSWhidbey 
-
-
-
-
+            // Workaround for VSWhidbey bug 562681 (tracked by Windows bug 1369339).
+            // We should be able to simply call the base(list) ctor.  But Collection<T>
+            // doesn't copy the list (contrary to the documentation) - it uses the
+            // list directly as its storage.  So we do the copying here.
+            // 
             CopyFrom(list);
         }
 
index ed712071802a3c7639edd1a23cd03efb7afeccea..3bfa0b8374e849636a2bed1287e9036f3f56f67e 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System.Security;
 using System.Collections;
index 44067722d00341420211a6d254e3be9812fb75e7..88f41bd59e21b35f170e3376a8c9f77211a7227c 100644 (file)
@@ -192,7 +192,7 @@ namespace System.Collections.Specialized {
 #region GenericAdapter
         //
     // This class is used to make StringDictionary implement IDictionary<string,string> indirectly. 
-    // This is done to prevent StringDictionary be serialized as IDictionary<string,string> and break its serialization by DataContractSerializer due to a 
+    // This is done to prevent StringDictionary be serialized as IDictionary<string,string> and break its serialization by DataContractSerializer due to a bug in the serialization code.
     private class GenericAdapter : IDictionary<string, string>
     {
 
index 7d596a07f6a15f1dc4ded8f4f241aee0f1903af8..d3679b06ac7c9d65e9253168d8a9845b30657e4f 100644 (file)
@@ -29,7 +29,7 @@ namespace System.ComponentModel
         }
 
         /// <summary>
-        ///     Destructor. Guarantees that sync context will always get notified of completion.
+        ///     Destructor. Guarantees that [....] context will always get notified of completion.
         /// </summary>
         ~AsyncOperation()
         {
index 882760b5db21404010671812d9ab96b06edab0c9..4218171514d1d3f12070ccca2104fcf70bde13cc 100644 (file)
@@ -7,7 +7,7 @@
 /*
  */
 
-// SECREVIEW: Remove this attribute once 
+// SECREVIEW: Remove this attribute once bug#411889 is fixed.
 [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2113:SecureLateBindingMethods", Scope="member", Target="System.ComponentModel.InstallerTypeAttribute.get_InstallerType():System.Type")]
 
 namespace System.ComponentModel {
index 788ca33a9236ed465d9d6ad4e46d61556d2deb3a..c65c71b4e6ed17746ab5b99582dc4323506f11dd 100644 (file)
@@ -57,7 +57,7 @@ namespace System.ComponentModel {
         ///    <para>Gets the license provider to use with the associated class.</para>
         /// </devdoc>
         public Type LicenseProvider {
-            // SECREVIEW: Remove this attribute once 
+            // SECREVIEW: Remove this attribute once bug#411910 is fixed.
             [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2113:SecureLateBindingMethods")]
             get {
                 if (licenseProviderType == null && licenseProviderName != null) {
index 5ab73da20f3eec2da7e7971cfc0988c5b10920c5..c16486800a9248e135348c383cee4b20655cc1b4 100644 (file)
@@ -434,7 +434,7 @@ namespace System.ComponentModel {
         }
 
         /// <devdoc>
-        ///     Try to keep this reasonable in sync with Equals(). Specifically, 
+        ///     Try to keep this reasonable in [....] with Equals(). Specifically, 
         ///     if A.Equals(B) returns true, A & B should have the same hash code.
         /// </devdoc>
         public override int GetHashCode() {
index 9915bcf85ba8485059f1887465ce3636388ab068..ecfb46bc0c5c7514c68009bdb3533a30e2b48b70 100644 (file)
@@ -347,7 +347,7 @@ namespace System.ComponentModel {
         }
 
         /// <devdoc>
-        ///     Try to keep this reasonable in sync with Equals(). Specifically, 
+        ///     Try to keep this reasonable in [....] with Equals(). Specifically, 
         ///     if A.Equals(B) returns true, A & B should have the same hash code.
         /// </devdoc>
         public override int GetHashCode() {
index b10a8255aa66ae6fcb6dc7073b7ab7ff4ffc07c7..d9840075c34d1a20837e0c9baa40d0b1501e5b65 100644 (file)
@@ -30,7 +30,7 @@ namespace System.ComponentModel.Design {
         /// </devdoc>
         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
         public DesignerVerb(string text, EventHandler handler)  : base(handler, StandardCommands.VerbFirst) {
-            // NOTICE!!! When you changed the regex here, please change it in Designer\Microsoft\System\Microsoft\Design\TableLayoutPanelDesigner.cs
+            // NOTICE!!! When you changed the regex here, please change it in Designer\[....]\System\[....]\Design\TableLayoutPanelDesigner.cs
             //           method "TrimText", too.
             Properties["Text"] = text == null ? null : Regex.Replace(text, @"\(\&.\)", ""); // VSWHIDBEY 485835
         }
index f497bba738ff101022b25a4009a70965fc1fcc1e..c4454a5660ccb6c38ca846eb8a488c693251eb9f 100644 (file)
@@ -44,7 +44,7 @@ namespace System.ComponentModel.Design {
             formatter.Serialize(o, new object[] {cryptoKey, context.savedLicenseKeys});
         }
         
-        [SuppressMessage("Microsoft.Security", "CA2107:ReviewDenyAndPermitOnlyUsage")] // Use of PermitOnly here is appropriate. This was a previous war-approved security 
+        [SuppressMessage("Microsoft.Security", "CA2107:ReviewDenyAndPermitOnlyUsage")] // Use of PermitOnly here is appropriate. This was a previous war-approved security bug fix.
         internal static void Deserialize(Stream o, string cryptoKey, RuntimeLicenseContext context) {
             IFormatter formatter = new BinaryFormatter();
 
index 4a605852267a297223a5e16f0946e324849ffce2..2f1562d7dbe9862533904cb339df48d2d96737c6 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>                                                                
 //------------------------------------------------------------------------------
 
-// SECREVIEW: Remove this attribute once 
+// SECREVIEW: Remove this attribute once bug#411903 is fixed.
 [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2113:SecureLateBindingMethods", Scope="member", Target="System.ComponentModel.PropertyTabAttribute.get_TabClasses():System.Type[]")]
 
 namespace System.ComponentModel {
index ab2ae3a4c840a8c5f7d2d1c727443633eb9f72fc..0cbf2f24f23721a286ee97cbefaef7659e1f730d 100644 (file)
@@ -4,7 +4,7 @@
 // </copyright>                                                                
 //------------------------------------------------------------------------------
 
-// SECREVIEW: remove this attribute once 
+// SECREVIEW: remove this attribute once bug#411883 is fixed.
 [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2113:SecureLateBindingMethods", Scope="member", Target="System.ComponentModel.ToolboxItemAttribute.get_ToolboxItemType():System.Type")]
 
 namespace System.ComponentModel {
index e6a2afec4055a520344e6ceb092c7fbdf96884e2..535d839ea2ccde9873a153f803897b3b4bb9c088 100644 (file)
@@ -23,9 +23,9 @@ namespace System.Diagnostics {
         private StringBuilder strBldr = null;
         private XmlTextWriter xmlBlobWriter = null;
         
-        // Previously we had a 
-
-
+        // Previously we had a bug where TraceTransfer did not respect the filter set on this listener.  We're fixing this
+        // bug, but only for cases where the filter was set via config.  In the next side by side release, we'll remove
+        // this and always respect the filter for TraceTransfer events.
         internal bool shouldRespectFilterOnTraceTransfer;
 
         public XmlWriterTraceListener(Stream stream) : base(stream){    }
index e6938156e8fda9c799fab7fa87041abf488560ca..c6f6385671d93a2402049101189d5279c6f0169e 100644 (file)
@@ -61,9 +61,9 @@ namespace System.Diagnostics {
 
         [DllImport(ExternDll.Fxassert, CharSet=System.Runtime.InteropServices.CharSet.Ansi, BestFitMapping=true)]
         [ResourceExposure(ResourceScope.None)]
-        [SuppressMessage("Microsoft.Globalization","CA2101:SpecifyMarshalingForPInvokeStringArguments", MessageId="0", Justification="Microsoft: VsAssert isn't making a security decision here and they don't provide Unicode versions, also it is internal to MS")]
-        [SuppressMessage("Microsoft.Globalization","CA2101:SpecifyMarshalingForPInvokeStringArguments", MessageId="1", Justification="Microsoft: VsAssert isn't making a security decision here and they don't provide Unicode versions, also it is internal to MS")]
-        [SuppressMessage("Microsoft.Globalization","CA2101:SpecifyMarshalingForPInvokeStringArguments", MessageId="2", Justification="Microsoft: VsAssert isn't making a security decision here and they don't provide Unicode versions, also it is internal to MS")]
+        [SuppressMessage("Microsoft.Globalization","CA2101:SpecifyMarshalingForPInvokeStringArguments", MessageId="0", Justification="[....]: VsAssert isn't making a security decision here and they don't provide Unicode versions, also it is internal to MS")]
+        [SuppressMessage("Microsoft.Globalization","CA2101:SpecifyMarshalingForPInvokeStringArguments", MessageId="1", Justification="[....]: VsAssert isn't making a security decision here and they don't provide Unicode versions, also it is internal to MS")]
+        [SuppressMessage("Microsoft.Globalization","CA2101:SpecifyMarshalingForPInvokeStringArguments", MessageId="2", Justification="[....]: VsAssert isn't making a security decision here and they don't provide Unicode versions, also it is internal to MS")]
         public static extern int VsAssert(string message, string assert, string file, int line, [In, Out]int[] pfDisable);
 
         [ResourceExposure(ResourceScope.None)]
@@ -203,7 +203,7 @@ namespace System.Diagnostics {
         [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
 #endif
         [SecuritySafeCritical]
-        [SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "Microsoft.Win32.UnsafeNativeMethods.ReleaseDC(System.IntPtr,System.IntPtr)", Justification = "Microsoft: If the DC is not released there's not much we can do.")]
+        [SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "Microsoft.Win32.UnsafeNativeMethods.ReleaseDC(System.IntPtr,System.IntPtr)", Justification = "[....]: If the DC is not released there's not much we can do.")]
         private static string TruncateMessageToFitScreen(string message) {            
             const int MaxCharsPerLine = 80;
 
index d42c1cdf673aa481e899edf4d9e5f507c2e4c64e..d350b64b6534f9e5535fee06e9a5ff6ae4cdd903 100644 (file)
@@ -6,11 +6,11 @@
 
 /*
  */
-#if Microsoft_NAMESPACE 
+#if WINFORMS_NAMESPACE 
     namespace System.Windows.Forms
 #elif DRAWING_NAMESPACE
     namespace System.Drawing
-#elif Microsoft_PUBLIC_GRAPHICS_LIBRARY 
+#elif WINFORMS_PUBLIC_GRAPHICS_LIBRARY 
     namespace System.Internal
 #elif SYSTEM_NAMESPACE
     namespace System
         ///   -----------------------------------------------------------------
         ///
         /// </devdoc>        
-#if Microsoft_NAMESPACE || Microsoft_PUBLIC_GRAPHICS_LIBRARY || DRAWING_NAMESPACE
+#if WINFORMS_NAMESPACE || WINFORMS_PUBLIC_GRAPHICS_LIBRARY || DRAWING_NAMESPACE
         internal class WeakRefCollection : IList {
             private int refCheckThreshold = Int32.MaxValue; // this means this is disabled by default.
             private ArrayList _innerList;
index 91c2c9849d115d530ec9e478c5d85f8e7a3e204b..d4d39cae5dd8b959fca20698c2b8d2f9f58b33f4 100644 (file)
@@ -8,11 +8,11 @@
  */
 
 
-#if Microsoft_NAMESPACE
+#if WINFORMS_NAMESPACE
     namespace System.Windows.Forms
 #elif DRAWING_NAMESPACE
     namespace System.Drawing
-#elif Microsoft_PUBLIC_GRAPHICS_LIBRARY
+#elif WINFORMS_PUBLIC_GRAPHICS_LIBRARY
     namespace System.Internal
 #elif SYSTEM_NAMESPACE
     namespace System
@@ -131,7 +131,7 @@ namespace System.Windows.Forms
             return Activator.CreateInstance(type, flags, null, args, null);
         }
 
-#if (!Microsoft_NAMESPACE)
+#if (!WINFORMS_NAMESPACE)
 
         /// <devdoc>
         ///     This helper method provides safe access to Activator.CreateInstance.
index 973e6b6214fb62e72381ce8bc2bbad58a8a6b798..92dafc1f53872070de2d0bd8b61aa11279bf3d33 100644 (file)
@@ -902,7 +902,7 @@ namespace System.Net.Cache {
 
                         // These if-else are two logically identical blocks that differ only in the way of how text search is done.
                         // The text search is done differently for 32 and X-bits platforms.
-                        // ATTN: You are responsible for keeping the rest of the logic in sync.
+                        // ATTN: You are responsible for keeping the rest of the logic in [....].
                         if (IntPtr.Size == 4) {
                             // We are on 32-bits platform
 
index d7421af8e032d3c8aaeea5793c1fb85d7fa2d424..fb4467486e06e88aa4bc75f2e591959b5928614e 100644 (file)
@@ -51,7 +51,7 @@ namespace Microsoft.Win32 {
             ***********/
 
             // Per VsWhidbey#88276 it was decided to not enforce any cache metadata limits for WinInet cache provider.
-            //  (Microsoft 7/17 made this a const to avoid threading issues)
+            //  ([....] 7/17 made this a const to avoid threading issues)
             //_MaximumResponseHeadersLength = Int32.MaxValue;
             this.async = async;
 
index 704589af7bc11ec71447b26f7d1429d5814f86ed..f668069047ee99a512a7d253b84cdf6bad36110c 100644 (file)
@@ -32,7 +32,7 @@ namespace System.Net.Cache {
         BypassCache         = 1,
         // Only serve requests from cache, an exception is thrown if not found
         CacheOnly           = 2,
-        // Serve from the cache, but will sync up with the server if not found
+        // Serve from the cache, but will [....] up with the server if not found
         CacheIfAvailable    = 3,
         // Attempt to revalidate cache with the server, reload if unable to
         Revalidate          = 4,
@@ -105,7 +105,7 @@ namespace System.Net.Cache {
         BypassCache         = 1,
         // Only serve requests from cache, an exception is thrown if not found
         CacheOnly           = 2,
-        // Serve from the cache, but will sync up with the server if not found
+        // Serve from the cache, but will [....] up with the server if not found
         CacheIfAvailable    = 3,
         // Validate cached data with the server even if it looks fresh
         Revalidate          = 4,
index 6618a1f004ce1c00ba4f08105843492955658dd4..513c848eec3072ece287d7a352137303aab5bfc5 100644 (file)
@@ -546,8 +546,8 @@ using System.Globalization;
 
             int bufferCharLength = bufferPtr->HeaderInfoChars + ((int)(bufferPtr->_OffsetHeaderInfo))/c_CharSz;
             if (bufferCharLength*c_CharSz > entry.MaxBufferBytes) {
-                // WinInet 
-
+                // WinInet bug? They may report offset+HeaderInfoChars as a greater value than MaxBufferBytes as total buffer size.
+                // Actually, the last one seems to be accurate based on the data we have provided for Commit.
                 bufferCharLength = entry.MaxBufferBytes/c_CharSz;
             }
             //WinInet may put terminating nulls at the end of the buffer, remove them.
@@ -579,46 +579,46 @@ using System.Globalization;
             }
             int bufferCharLength = bufferPtr->HeaderInfoChars + ((int)(bufferPtr->_OffsetHeaderInfo))/c_CharSz;
             if (bufferCharLength*c_CharSz > entry.MaxBufferBytes) {
-                // WinInet 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+                // WinInet bug? They may report offset+HeaderInfoChars as a greater value than total buffer size.
+                // Actually, the last one seems to be accurate based on the data we have provided for Commit.
+                bufferCharLength = entry.MaxBufferBytes/c_CharSz;
+            }
 
+            while (true) {
+                int totalLength = 0;
+                DataParseStatus status = WebHeaderCollection.ParseHeaders(collection, false, buffer, bufferCharLength,
+                                        ref offset,
+                                        ref totalLength,
+                                        entry.MaxBufferBytes/c_CharSz);
+
+                if (status != DataParseStatus.Done) {
+                    if (status == DataParseStatus.NeedMoreData) {
+                        //WinInet puts terminating null at the end of the buffer, accept that as a "normal" case.
+                        if ((offset+1 == bufferCharLength) && charPtr[offset] == 0) {
+                             // accept as the last metainfo block
+                             if (collection.Count != 0) {
+                                 result.Add(collection);
+                             }
+                             break;
+                        }
+                    }
+                    entry.Error = Status.CorruptedHeaders;
+                    //throw new InvalidOperationException("Cannot convert Cache Entry metadata into a NameValueCollection instance");
+                    break;
+                }
 
-*/
+                result.Add(collection);
+                // do we have more meta data?
+                if (offset >= bufferCharLength) {
+                    break;
+                }
+                // continue parsing next collection
+                collection = new NameValueCollection();
+            }
+            entry.MetaInfo = (result.Count == 0? null: (NameValueCollection[])result.ToArray(typeof(NameValueCollection)));
+            return entry.Error;
+        }
+*********************/
 #if DEBUG
 
         /*
index deb439b59bc57c89b35d670b86df3f988401026b..13b735ef54e69e2dd038e17d30d4b352a4943e9b 100644 (file)
@@ -118,7 +118,7 @@ namespace System.Net.Configuration
 
         // This allows us to prevent parent settings (machine.config) from propegating to higher config (app.config), unless
         // the higher config doesn't contain the section at all.  That is, overriding defaultProxy is all-or-nothing.
-        // Template from Microsoft.
+        // Template from [....].
         protected override void Reset(ConfigurationElement parentElement)
         {
             // Ignore the parentElement parameter by changing it to the default settings
index 0bc729b6a7739024c49bf9ac8fda9c6a5d225746..472273d81b978d2b8e3ddac01fa4dfa93ca60d4e 100644 (file)
@@ -3,7 +3,7 @@ namespace System.Net {
     using System.Configuration;
     using System.ComponentModel;
     
-    // NOTE [Microsoft]: The old validation attribute was removed from System.ll and is     
+    // NOTE [[....]]: The old validation attribute was removed from System.ll and is     
     // replaced by more flexible and robust validation/conversion design.
     // The change bellow is a simple fix to make things work with the least possible change ( it is an integration break )
     // However, we already have a built-in support for configuration properties that store     
@@ -32,7 +32,7 @@ namespace System.Net {
                 return;
             
             if (timeout <= 0 && timeout != System.Threading.Timeout.Infinite) {
-                // Note [Microsoft] : This is a lab integration fix. Old code did not have any error message at this point
+                // Note [[....]] : This is a lab integration fix. Old code did not have any error message at this point
                 // This code change accomplishes the same result. However its highly reccomended that a specific error message is givven
                 // to the user so they know what exaclty is the problem ( i.e. the value must be a positive integer or be Infinite )
                 // To accomplish this - an exception with the specific error message could be thrown ( ArgumentException is prefferred )            
index 5ccb1aca1c0607bc96131258c1fd9558be501aed..8d6ae247f18c93f6f0356936d69faa189ec7a8aa 100644 (file)
@@ -618,7 +618,7 @@ namespace System.Net {
                         statusCode = GetStatusCode(webException);
                         throw webException;
                     }
-                    // Catch added to address 
+                    // Catch added to address Bug # 545645
                     catch (InvalidOperationException invalidOpException)
                     {
                         SetException(invalidOpException);
@@ -1320,7 +1320,7 @@ namespace System.Net {
             }
         }
 
-        // Return null only on Sync (if we're on the Sync thread).  Otherwise throw if no context is available.
+        // Return null only on [....] (if we're on the [....] thread).  Otherwise throw if no context is available.
         //
         // 
 
@@ -1331,7 +1331,7 @@ namespace System.Net {
             else if (m_WriteAsyncResult != null)
                 return m_WriteAsyncResult;
 
-            // Sync.
+            // [....].
             GlobalLog.ThreadContract(ThreadKinds.User | ThreadKinds.Sync, "FtpWebRequest#" + ValidationHelper.HashString(this) + "::GetWritingContext");
             return null;
         }
@@ -1339,7 +1339,7 @@ namespace System.Net {
         //
         //    Provides an abstract way of having Async code callback into the request (saves a delegate)
         //
-        //    ATTN this method is also called on sync path when either command or data stream gets closed
+        //    ATTN this method is also called on [....] path when either command or data stream gets closed
         //    Consider: Revisit the design of ftp streams
         //
         internal override void RequestCallback(object obj)
@@ -1350,7 +1350,7 @@ namespace System.Net {
                 SyncRequestCallback(obj);
         }
         //
-        // Only executed for Sync requests when the pipline is completed
+        // Only executed for [....] requests when the pipline is completed
         //
         private void SyncRequestCallback(object obj)
         {
@@ -1389,7 +1389,7 @@ namespace System.Net {
                         isRevalidatedOrRetried =!m_CacheDone &&
                                                 (CacheProtocol.ProtocolStatus == CacheValidationStatus.Continue || CacheProtocol.ProtocolStatus == CacheValidationStatus.RetryResponseFromServer);
 
-                        // This is for sync Upload commands that do not get chance hit GetResponse loop
+                        // This is for [....] Upload commands that do not get chance hit GetResponse loop
                         if (m_MethodInfo.IsUpload)
                         {
                             CheckCacheRetrieveOnResponse();
index 829540fabad0e66ff8b65841844503998027d2ee..c7d9b1d7aa0f22a06748f7ba7f3f5b790ee232e1 100644 (file)
@@ -285,14 +285,14 @@ namespace System.Net {
         private static readonly int RequestChannelBindStatusSize =
             Marshal.SizeOf(typeof(UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_CHANNEL_BIND_STATUS));
 
-        // Win8# 559317 fixed a 
-
-
-
-
-
-
-
+        // Win8# 559317 fixed a bug in Http.sys's HttpReceiveClientCertificate method.
+        // Without this fix IOCP callbacks were not being called although ERROR_IO_PENDING was
+        // returned from HttpReceiveClientCertificate when using the 
+        // FileCompletionNotificationModes.SkipCompletionPortOnSuccess flag.
+        // This bug was only hit when the buffer passed into HttpReceiveClientCertificate
+        // (1500 bytes initially) is tool small for the certificate.
+        // Due to this bug in downlevel operating systems the FileCompletionNotificationModes.SkipCompletionPortOnSuccess
+        // flag is only used on Win8 and later.
         internal static readonly bool SkipIOCPCallbackOnSuccess = ComNetOS.IsWin8orLater;
 
         // Mitigate potential DOS attacks by limiting the number of unknown headers we accept.  Numerous header names 
@@ -1564,8 +1564,8 @@ namespace System.Net {
                             outBlob = context.GetOutgoingDigestBlob(inBlob, verb, null, Realm, false, false, out statusCodeNew);
                             GlobalLog.Print("HttpListener#" + ValidationHelper.HashString(this) + "::HandleAuthentication() GetOutgoingDigestBlob() returned IsCompleted:" + context.IsCompleted + " statusCodeNew:" + statusCodeNew + " outBlob:[" + outBlob + "]");
 
-                            // WDigest 
-
+                            // WDigest bug: sometimes when AcceptSecurityContext returns success, it provides a bogus, empty 4k buffer.
+                            // Ignore it.  (Should find out what's going on here from WDigest people.)
                             if (statusCodeNew == SecurityStatus.OK)
                             {
                                 outBlob = null;
@@ -1654,9 +1654,9 @@ namespace System.Net {
                                 error = !context.IsValidContext;
                                 if (error)
                                 {
-                                    // 
-
-
+                                    // Bug #474228: SSPI Workaround
+                                    // If a client sends up a blob on the initial request, Negotiate returns SEC_E_INVALID_HANDLE
+                                    // when it should return SEC_E_INVALID_TOKEN.
                                     if (statusCodeNew == SecurityStatus.InvalidHandle && oldContext == null && bytes != null && bytes.Length > 0)
                                     {
                                         statusCodeNew = SecurityStatus.InvalidToken;
index 2600cfdab2b8abfbf41c6be3fbd807a5ac054a42..320e1d69ff4308f8f34d1d71128d78b0226531ea 100644 (file)
@@ -7,6 +7,7 @@
 namespace System.Net {
     using System;
     using System.Collections;
+    using System.Collections.Generic;
     using System.Collections.Specialized;
     using System.IO;
     using System.Net.Sockets;
@@ -98,9 +99,9 @@ namespace System.Net {
             try {
                 if (errorCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_MORE_DATA)
                {
-                    //There is a 
-
-
+                    //There is a bug that has existed in http.sys since w2k3.  Bytesreceived will only
+                    //return the size of the inital cert structure.  To get the full size,
+                    //we need to add the certificate encoding size as well.
 
                     UnsafeNclNativeMethods.HttpApi.HTTP_SSL_CLIENT_CERT_INFO* pClientCertInfo = asyncResult.RequestBlob;
                     asyncResult.Reset(numBytes + pClientCertInfo->CertEncodedSize);
@@ -235,6 +236,9 @@ namespace System.Net {
         private bool m_IsDisposed = false;
         internal const uint CertBoblSize = 1500;
         private string m_ServiceName;
+        private object m_Lock = new object();
+        private List<TokenBinding> m_TokenBindings = null;
+        private int m_TokenBindingVerifyMessageStatus = 0;
 
         private enum SslStatus : byte
         {
@@ -1009,6 +1013,126 @@ namespace System.Net {
             return HttpListenerContext.Listener.GetChannelBindingFromTls(m_ConnectionId);
         }
 
+        internal IEnumerable<TokenBinding> GetTlsTokenBindings() {
+
+            // Try to get the token binding if not created.
+            if (Volatile.Read(ref m_TokenBindings) == null)
+            {
+                lock (m_Lock)
+                {
+                    if (Volatile.Read(ref m_TokenBindings) == null)
+                    {
+                        // If token binding is supported on the machine get it else create empty list.
+                        if (UnsafeNclNativeMethods.TokenBindingOSHelper.SupportsTokenBinding)
+                        {
+                            ProcessTlsTokenBindings();
+                        }
+                        else
+                        {
+                            m_TokenBindings = new List<TokenBinding>();
+                        }
+                    }
+                }
+            }
+
+            // If the cached status is not success throw exception, else return the token binding
+            if (0 != m_TokenBindingVerifyMessageStatus)
+            {
+                throw new HttpListenerException(m_TokenBindingVerifyMessageStatus);
+            }
+            else
+            {
+                return m_TokenBindings.AsReadOnly();
+            }
+        }
+
+        /// <summary>
+        /// Process the token binding information in the request and populate m_TokenBindings 
+        /// This method should be called once only as token binding information is cached in m_TokenBindings for further use.
+        /// </summary>
+        private void ProcessTlsTokenBindings() {
+
+            Debug.Assert(m_TokenBindings == null);
+
+            if (m_TokenBindings != null)
+            {
+                return;
+            }
+
+            m_TokenBindings = new List<TokenBinding>();
+
+            UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_TOKEN_BINDING_INFO* pTokenBindingInfo = GetTlsTokenBindingRequestInfo();
+
+            if (pTokenBindingInfo == null)
+            {
+                // The current request isn't over TLS or the client or server doesn't support the token binding
+                // protocol. This isn't an error; just return "nothing here".
+                return;
+            }
+
+            UnsafeNclNativeMethods.HttpApi.HeapAllocHandle handle = null;
+            m_TokenBindingVerifyMessageStatus = -1;
+            m_TokenBindingVerifyMessageStatus = UnsafeNclNativeMethods.HttpApi.TokenBindingVerifyMessage(
+                pTokenBindingInfo->TokenBinding,
+                pTokenBindingInfo->TokenBindingSize,
+                pTokenBindingInfo->KeyType,
+                pTokenBindingInfo->TlsUnique,
+                pTokenBindingInfo->TlsUniqueSize,
+                out handle);
+
+            if (m_TokenBindingVerifyMessageStatus != 0)
+            {
+                throw new HttpListenerException(m_TokenBindingVerifyMessageStatus);
+            }
+            
+            Debug.Assert(handle != null);
+            Debug.Assert(!handle.IsInvalid);
+
+            using (handle)
+            {
+                UnsafeNclNativeMethods.HttpApi.TOKENBINDING_RESULT_LIST* pResultList = (UnsafeNclNativeMethods.HttpApi.TOKENBINDING_RESULT_LIST*)handle.DangerousGetHandle();
+                for (int i = 0; i < pResultList->resultCount; i++)
+                {
+                    UnsafeNclNativeMethods.HttpApi.TOKENBINDING_RESULT_DATA* pThisResultData = &pResultList->resultData[i];
+
+                    if (pThisResultData != null)
+                    {
+                        // Per http://tools.ietf.org/html/draft-ietf-tokbind-protocol-00, Sec. 4,
+                        // We'll strip off the token binding type and return the remainder as an opaque blob.
+                        Debug.Assert((long)(&pThisResultData->identifierData->hashAlgorithm) == (long)(pThisResultData->identifierData) + 1);
+                        byte[] retVal = new byte[pThisResultData->identifierSize - 1];
+                        Marshal.Copy((IntPtr)(&pThisResultData->identifierData->hashAlgorithm), retVal, 0, retVal.Length);
+
+                        if (pThisResultData->identifierData->bindingType == UnsafeNclNativeMethods.HttpApi.TOKENBINDING_TYPE.TOKENBINDING_TYPE_PROVIDED)
+                        {
+                            m_TokenBindings.Add(new TokenBinding(TokenBindingType.Provided, retVal));
+                        }
+                        else if (pThisResultData->identifierData->bindingType == UnsafeNclNativeMethods.HttpApi.TOKENBINDING_TYPE.TOKENBINDING_TYPE_REFERRED)
+                        {
+                            m_TokenBindings.Add(new TokenBinding(TokenBindingType.Referred, retVal));
+                        }
+                    }
+                }
+            }
+        }
+
+        private UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_TOKEN_BINDING_INFO* GetTlsTokenBindingRequestInfo() {
+            fixed (byte* pMemoryBlob = RequestBuffer)
+            {
+                UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_V2* request = (UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_V2*)pMemoryBlob;
+
+                for (int i = 0; i < request->RequestInfoCount; i++)
+                {
+                    UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_INFO* pThisInfo = &request->pRequestInfo[i];
+                    if (pThisInfo != null && pThisInfo->InfoType == UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_INFO_TYPE.HttpRequestInfoTypeSslTokenBinding)
+                    {
+                        return (UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_TOKEN_BINDING_INFO*)pThisInfo->pInfo;
+                    }
+                }
+            }
+            return null;
+        }
+
         internal void CheckDisposed() {
             if (m_IsDisposed) {
                 throw new ObjectDisposedException(this.GetType().FullName);
index 76e37ecea7280b26773068f73834b6033eb1d5d9..7fe34ea4335b86d1210c62e32cc066f38862cc62 100644 (file)
@@ -153,7 +153,7 @@ namespace System.Net {
         // Used by our Connection to block on being able to Read from our Connection
         private LazyAsyncResult         _ConnectionReaderAResult;
 
-        // Once set, the Request either works Async or Sync internally
+        // Once set, the Request either works Async or [....] internally
         private TriState                _RequestIsAsync;
 
         // Delegate that can be called on Continue Response
@@ -406,7 +406,7 @@ namespace System.Net {
             }
         }
 
-        // Sync code path only.
+        // [....] code path only.
         // True if ProcessWriteCallDone Should read for an additional response.
         // False if the 100Continue code will do the read in WriteHeaders.
         internal bool NeedsToReadForResponse {
@@ -792,7 +792,7 @@ namespace System.Net {
         }
 
         // True, if the EndGetRequestStream or GetRequestStream call returned
-        // codereview: Used ONLY by Sync code
+        // codereview: Used ONLY by [....] code
         internal bool UserRetrievedWriteStream {
             get {
                 return _WriteAResult != null && _WriteAResult.InternalPeekCompleted;
@@ -1555,7 +1555,7 @@ namespace System.Net {
                         CurrentMethod = _OriginVerb;
 
                         // Submit the Request, causes us to queue ourselves to a Connection and may block
-                        // It has happened that Sync path uses this loop the Retry memeber for handling resubmissions.
+                        // It has happened that [....] path uses this loop the Retry memeber for handling resubmissions.
                         while (m_Retry && !_WriteAResult.InternalPeekCompleted) {
                             _OldSubmitWriteStream = null;
                             _SubmitWriteStream = null;
@@ -1825,7 +1825,7 @@ namespace System.Net {
                 {
                     GlobalLog.Print("HttpWebRequest#" + ValidationHelper.HashString(this) + "::DoSubmitRequestProcessing() resubmiting this request.");
 
-                    // Here is a little hack for sync looping through BeginSubmitRequest.
+                    // Here is a little hack for [....] looping through BeginSubmitRequest.
                     // We want to unlock cache protocol only if this is NOT a retry.
                     if (CacheProtocol != null && _HttpResponse != null)
                         CacheProtocol.Reset();
@@ -1856,7 +1856,7 @@ namespace System.Net {
                         SubmitRequest(servicePoint);
                     }
                     else {
-                        // under sync conditions, we let GetResponse() loop calling BeginSubmitRequest() until we're done
+                        // under [....] conditions, we let GetResponse() loop calling BeginSubmitRequest() until we're done
                         m_Retry = true;
                     }
                     result = HttpProcessingResult.WriteWait;
@@ -2181,7 +2181,7 @@ namespace System.Net {
 
                             Async = false;
 
-                            // Since we don't really allow switching between sync and async, if the request is already async, this needs to
+                            // Since we don't really allow switching between [....] and async, if the request is already async, this needs to
                             // capture context for use in the ongoing async operations as if it were BeginGetResponse().
                             if (Async)
                             {
@@ -2206,7 +2206,7 @@ namespace System.Net {
 
                     if (!gotResponse)
                     {
-                        //The previous call may have been async.  If we are now doing a sync call, we should
+                        //The previous call may have been async.  If we are now doing a [....] call, we should
                         //use the timeout
                         if (_Timer == null) {
                             _Timer = TimerQueue.CreateTimer(s_TimeoutCallback, this);
@@ -3369,7 +3369,7 @@ namespace System.Net {
             //
             // This line is needed ONLY if we got a connect failure (Abort can still happen at random time)
             // CallDone will check for the write side response processing and this is what we want.
-            // Note that Sync case already has a separate path to check for the response
+            // Note that [....] case already has a separate path to check for the response
             //
             if (Async && _CoreResponse != null && (object)_CoreResponse != (object)DBNull.Value)
             {
@@ -3489,7 +3489,7 @@ namespace System.Net {
         //
         internal void CheckWriteSideResponseProcessing()
         {
-            // In Sync case never close the write side window
+            // In [....] case never close the write side window
 
             // Definitions of _CoreResponse:
             // - DBNull.Value - Uploading headers/body is in progress, but we haven't yet received a response.
@@ -3595,7 +3595,7 @@ namespace System.Net {
             {
                 GlobalLog.Print("HttpWebRequest#" + ValidationHelper.HashString(this) + "::SetAndOrProcessResponse() - Write Thread will procees the response.");
                 //
-                // Note for a sync request a write side window is always open
+                // Note for a [....] request a write side window is always open
                 //
                 if (!Async)
                 {
@@ -3991,7 +3991,7 @@ namespace System.Net {
             }
         }
 
-        // Return null only on Sync (if we're on the Sync thread).  Otherwise throw if no context is available.
+        // Return null only on [....] (if we're on the [....] thread).  Otherwise throw if no context is available.
         internal override ContextAwareResult GetConnectingContext()
         {
             if (!Async)
@@ -4014,7 +4014,7 @@ namespace System.Net {
             return context;
         }
 
-        // Return null only on Sync (if we're on the Sync thread).  Otherwise throw if no context is available.
+        // Return null only on [....] (if we're on the [....] thread).  Otherwise throw if no context is available.
         internal override ContextAwareResult GetWritingContext()
         {
             if (!Async)
@@ -4039,7 +4039,7 @@ namespace System.Net {
             return context;
         }
 
-        // Return null only on Sync (if we're on the Sync thread).  Otherwise throw if no context is available.
+        // Return null only on [....] (if we're on the [....] thread).  Otherwise throw if no context is available.
         internal override ContextAwareResult GetReadingContext()
         {
             if (!Async)
@@ -6025,12 +6025,12 @@ namespace System.Net {
 
                         // The second NTLM request is required to use the same connection, don't close it
                         if (ntlmFollowupRequest) {
-                            // We only want CallDone to do a sync read now if 100Continue won't later
+                            // We only want CallDone to do a [....] read now if 100Continue won't later
                             NeedsToReadForResponse = !ShouldWaitFor100Continue();
                             _SubmitWriteStream.CallDone();
                         }
                         else if (!AllowWriteStreamBuffering) {
-                            // We only want CloseInternal to do a sync read now if 100Continue won't later
+                            // We only want CloseInternal to do a [....] read now if 100Continue won't later
                             NeedsToReadForResponse = !ShouldWaitFor100Continue();
                             _SubmitWriteStream.CloseInternal(true);
                         }
@@ -6094,7 +6094,7 @@ namespace System.Net {
         // Never throws
         //
         private Stream MakeMemoryStream(Stream stream) {
-           // GlobalLog.ThreadContract(ThreadKinds.Sync, "HttpWebRequest#" + ValidationHelper.HashString(this) + "::MakeMemoryStream");
+           // GlobalLog.ThreadContract(ThreadKinds.[....], "HttpWebRequest#" + ValidationHelper.HashString(this) + "::MakeMemoryStream");
 
             if (stream == null || stream is SyncMemoryStream)
                 return stream;
index ed107f8d481d0cb8682629d3e03619f3a2a5b7d2..b0690e8634836448ed600994164ebf899c778652 100644 (file)
@@ -335,19 +335,19 @@ namespace System.Net {
         internal bool KeepAlive {
             get {
                 //
-                // QFE  - DevDiv 
-
-
-
-
-
-
-
-
-
-
-
-
+                // QFE  - DevDiv bug: 37757
+                // If there is proxy involved, independen of the Http Version, we should honor the
+                // proxy indicated Proxy-Connection header value.
+                // This header value is not RFC mandated, but is a legacy from Netscape documentations.
+                // It indicates that the proxy wants to keep the connection.
+                // Functionally it is equivalent of a Keep-Alive AND/OR Connection header.
+                //
+                // The absence of this check will result in HTTP/1.0 responsen be considered to be not
+                // Keeping the connection alive.
+                //
+                // This will result in a state mismatch between the connection pool and HttpWebRequest object
+                // when the decision to drain the connection and putting it back to the idle pool is made.
+                //
                 if (m_UsesProxySemantics)
                 {
                     string proxyConnectionHeader = Headers[HttpKnownHeaderNames.ProxyConnection];
index 5f6be11a61715d8da7357dbc6c32f1d80fff2b8c..19948efa34ef8728e2e23ed5445d988eec9f5dad 100644 (file)
@@ -426,7 +426,7 @@ namespace System.Net {
     }
     
     //
-    // A simple sync point, useful for deferring work.  Just an int value with helper methods.
+    // A simple [....] point, useful for deferring work.  Just an int value with helper methods.
     // This is used by HttpWebRequest to syncronize Reads/Writes while waiting for a 100-Continue response.
     //
     internal struct InterlockedGate
index 511cae21a8043c560e2d23564c0b13b192c85300..4cd3b383374e464c02a26f2eef4bb082ec9ebb9e 100644 (file)
@@ -93,7 +93,7 @@ using System.Security.Principal;
                                                  TokenImpersonationLevel    allowedImpersonationLevel)
         {
 #if DEBUG
-            using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.Sync)) {
+            using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.[....])) {
 #endif
             _NegoState.ValidateCreateContext(_Package, false, credential, targetName, binding, requiredProtectionLevel, allowedImpersonationLevel);
             _NegoState.ProcessAuthentication(null);
@@ -199,7 +199,7 @@ using System.Security.Principal;
                                                  TokenImpersonationLevel    requiredImpersonationLevel)
         {
 #if DEBUG
-            using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.Sync)) {
+            using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.[....])) {
 #endif
             _NegoState.ValidateCreateContext(_Package, credential, string.Empty, policy, requiredProtectionLevel, requiredImpersonationLevel);
 
@@ -503,7 +503,7 @@ using System.Security.Principal;
         // Should this not block?
         public override void Flush() {
 #if DEBUG
-            using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.Sync)) {
+            using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.[....])) {
 #endif
             InnerStream.Flush();
 #if DEBUG
@@ -531,7 +531,7 @@ using System.Security.Principal;
         public override int Read(byte[] buffer, int offset, int count)
         {
 #if DEBUG
-            using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.Sync)) {
+            using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.[....])) {
 #endif
             _NegoState.CheckThrow(true);
 
@@ -548,7 +548,7 @@ using System.Security.Principal;
         public override void Write(byte[] buffer, int offset, int count)
         {
 #if DEBUG
-            using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.Sync)) {
+            using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.[....])) {
 #endif
             _NegoState.CheckThrow(true);
 
index 2d676f9fa120c929d69d9b6203334d1cdbd12345..db9d6aff13d1dc5e4fe556c2b346aa8ba5fb960d 100644 (file)
@@ -8,7 +8,7 @@ Module Name:
 Abstract:
     The class is a simple wrapper on top of a read stream.
     It will read the exact number of bytes requested.
-    It operates either sync or async.
+    It operates either [....] or async.
 
 Author:
 
@@ -76,7 +76,7 @@ namespace System.Net {
             StartReading();
         }
         //
-        // Loops while subsequest completions are sync
+        // Loops while subsequest completions are [....]
         //
         private void StartReading()
         {
index 91311238e9ed669e4c4c0986c0cfb6e05fc62b3e..b8e698f07ed209c09f6ebddb87b5adbf7630e506 100644 (file)
@@ -117,7 +117,7 @@ namespace System.Net.Security {
                 throw new ArgumentOutOfRangeException("count", SR.GetString(SR.net_offset_plus_count));
         }
         //
-        // Combined sync/async write method. For sync requet asyncRequest==null
+        // Combined [....]/async write method. For [....] requet asyncRequest==null
         //
         private void ProcessWrite(byte[] buffer, int offset, int count, AsyncProtocolRequest asyncRequest)
         {
@@ -198,9 +198,9 @@ namespace System.Net.Security {
             }
         }
         //
-        // Combined sync/async read method. For sync requet asyncRequest==null
-        // There is a little overheader because we need to pass buffer/offset/count used only in sync.
-        // Still the benefit is that we have a common sync/async code path.
+        // Combined [....]/async read method. For [....] requet asyncRequest==null
+        // There is a little overheader because we need to pass buffer/offset/count used only in [....].
+        // Still the benefit is that we have a common [....]/async code path.
         //
         private int ProcessRead(byte[] buffer, int offset, int count, AsyncProtocolRequest asyncRequest)
         {
@@ -240,7 +240,7 @@ namespace System.Net.Security {
             }
             finally
             {
-                // if sync request or exception
+                // if [....] request or exception
                 if (asyncRequest == null || failed)
                 {
                     _NestedRead = 0;
@@ -330,7 +330,7 @@ namespace System.Net.Security {
                 }
                 readBytes = asyncRequest.Result;
             }
-            else //Sync
+            else //[....]
             {
                 readBytes = _FrameReader.ReadPacket(InternalBuffer, 0, readBytes);
             }
index d0ea55a6f1b56528bc67f7f50dc96e0ab820f39e..61c65dbfbfdba2bf3b43037d0a9da70006d63ac3 100644 (file)
@@ -149,7 +149,7 @@ namespace System.Net.Security {
 
             //
             // We don;t support SSL alerts right now, hence any exception is fatal and cannot be retried
-            // Consider: make use if SSL alerts to re-sync SslStream on both sides for retrying.
+            // Consider: make use if SSL alerts to re-[....] SslStream on both sides for retrying.
             //
             if (_Exception != null && !_CanRetryAuthentication) {
                 throw _Exception;
@@ -644,7 +644,7 @@ namespace System.Net.Security {
                 // Async handshake is enqueued and will resume later
                 return;
             }
-            // Either Sync handshake is ready to go or async handshake won the ---- over write.
+            // Either [....] handshake is ready to go or async handshake won the ---- over write.
 
             // This will tell that we don't know the framing yet (what SSL version is)
             _Framing = Framing.None;
@@ -1311,7 +1311,7 @@ namespace System.Net.Security {
                 _QueuedWriteStateRequest = null;
                 if (obj is LazyAsyncResult)
                 {
-                    // sync handshake is waiting on other thread.
+                    // [....] handshake is waiting on other thread.
                     ((LazyAsyncResult)obj).InvokeCallback();
                 }
                 else
@@ -1387,7 +1387,7 @@ namespace System.Net.Security {
 
                     if (obj is LazyAsyncResult)
                     {
-                        // sync write is waiting on other thread.
+                        // [....] write is waiting on other thread.
                         ((LazyAsyncResult)obj).InvokeCallback();
                     }
                     else
index 3fd8a2dd1805725401ac094d0fbc807dd68cbc0b..4ac07c5d5c0d207e83bfde9a863416e523004721 100644 (file)
@@ -315,7 +315,7 @@ namespace System.Net.Security {
                 throw new ArgumentOutOfRangeException("count", SR.GetString(SR.net_offset_plus_count));
         }
         //
-        // Combined sync/async write method. For sync case asyncRequest==null
+        // Combined [....]/async write method. For [....] case asyncRequest==null
         //
         private void ProcessWrite(BufferOffsetSize[] buffers, SplitWriteAsyncProtocolRequest asyncRequest)
         {
@@ -357,7 +357,7 @@ namespace System.Net.Security {
             }
         }
         //
-        // Combined sync/async write method. For sync case asyncRequest==null
+        // Combined [....]/async write method. For [....] case asyncRequest==null
         //
         private void ProcessWrite(byte[] buffer, int offset, int count, AsyncProtocolRequest asyncRequest)
         {
@@ -634,9 +634,9 @@ namespace System.Net.Security {
         }
 
         //
-        // Combined sync/async read method. For sync requet asyncRequest==null
-        // There is a little overheader because we need to pass buffer/offset/count used only in sync.
-        // Still the benefit is that we have a common sync/async code path.
+        // Combined [....]/async read method. For [....] requet asyncRequest==null
+        // There is a little overheader because we need to pass buffer/offset/count used only in [....].
+        // Still the benefit is that we have a common [....]/async code path.
         //
         private int ProcessRead(byte[] buffer, int offset, int count, AsyncProtocolRequest asyncRequest)
         {
@@ -678,7 +678,7 @@ namespace System.Net.Security {
             }
             finally
             {
-                // if sync request or exception
+                // if [....] request or exception
                 if (asyncRequest == null || failed)
                 {
                     _NestedRead = 0;
@@ -793,7 +793,7 @@ namespace System.Net.Security {
                 }
                 readBytes = asyncRequest.Result;
             }
-            else //Sync
+            else //[....]
             {
                 readBytes = _Reader.ReadPacket(InternalBuffer, SecureChannel.ReadHeaderSize, readBytes);
             }
index 89f94e57088c37b5862e70e56aa1ef5cabdcb6f2..7f71c4ba8a9ced6e7eb6529f75ba36d20569829f 100644 (file)
@@ -251,7 +251,7 @@ namespace System.Net {
             abortSocket6 = socket6;
 
             //
-            // Setup socket timeouts for sync requests
+            // Setup socket timeouts for [....] requests
             //
             // 
 
index cf21e9bfbf4e685cefa558124b26dfcfba81caf4..7f46157be8cb26b4dc4aaf954ffe7ef17523ef94 100644 (file)
@@ -483,7 +483,7 @@ namespace System.Net.Sockets {
 #if DEBUG
             using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.Sync)) {
 #endif
-            bool canRead = CanRead;  // Prevent ---- with Dispose.
+            bool canRead = CanRead;  // Prevent race with Dispose.
             if (m_CleanedUp){
                 throw new ObjectDisposedException(this.GetType().FullName);
             }
@@ -557,7 +557,7 @@ namespace System.Net.Sockets {
 #if DEBUG
             using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.Sync)) {
 #endif
-            bool canWrite = CanWrite; // Prevent ---- with Dispose.
+            bool canWrite = CanWrite; // Prevent race with Dispose.
             if (m_CleanedUp){
                 throw new ObjectDisposedException(this.GetType().FullName);
             }
@@ -717,7 +717,7 @@ namespace System.Net.Sockets {
 #if DEBUG
             using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.Async)) {
 #endif
-            bool canRead = CanRead; // Prevent ---- with Dispose.
+            bool canRead = CanRead; // Prevent race with Dispose.
             if (m_CleanedUp){
                 throw new ObjectDisposedException(this.GetType().FullName);
             }
@@ -772,7 +772,7 @@ namespace System.Net.Sockets {
 
         internal virtual IAsyncResult UnsafeBeginRead(byte[] buffer, int offset, int size, AsyncCallback callback, Object state)
         {
-            bool canRead = CanRead; // Prevent ---- with Dispose.
+            bool canRead = CanRead; // Prevent race with Dispose.
             if (m_CleanedUp)
             {
                 throw new ObjectDisposedException(GetType().FullName);
@@ -902,7 +902,7 @@ namespace System.Net.Sockets {
 #if DEBUG
             using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.Async)) {
 #endif
-            bool canWrite = CanWrite; // Prevent ---- with Dispose.
+            bool canWrite = CanWrite; // Prevent race with Dispose.
             if (m_CleanedUp){
                 throw new ObjectDisposedException(this.GetType().FullName);
             }
@@ -964,7 +964,7 @@ namespace System.Net.Sockets {
 #if DEBUG
             using (GlobalLog.SetThreadKind(ThreadKinds.User | ThreadKinds.Async)) {
 #endif
-                bool canWrite = CanWrite; // Prevent ---- with Dispose.
+                bool canWrite = CanWrite; // Prevent race with Dispose.
                 if (m_CleanedUp){
                     throw new ObjectDisposedException(this.GetType().FullName);
                 }
@@ -1061,7 +1061,7 @@ namespace System.Net.Sockets {
 
         /// <devdoc>
         ///    <para>
-        ///       Performs a sync Write of an array of buffers.
+        ///       Performs a [....] Write of an array of buffers.
         ///    </para>
         /// </devdoc>
         internal virtual void MultipleWrite(BufferOffsetSize[] buffers)
index 141f8f198be03abbf084ddb4d2166fc6e60834b0..1d92faa541f6a2d6c5a5700a11dc0113895d3e89 100644 (file)
@@ -64,7 +64,7 @@ namespace System.Net.Sockets {
         private SocketType      socketType;
         private ProtocolType    protocolType;
 
-        // These caches are one degree off of Socket since they're not used in the sync case/when disabled in config.
+        // These caches are one degree off of Socket since they're not used in the [....] case/when disabled in config.
         private CacheSet m_Caches;
 
         private class CacheSet
@@ -2621,8 +2621,8 @@ namespace System.Net.Sockets {
             // 
             // Negative microsecond values that weren't exactly (-1) were originally successfully 
             // converted to a timeval struct containing unsigned non-zero integers.  This code 
-            // retains that behavior so that any app working around the original 
-
+            // retains that behavior so that any app working around the original bug with, 
+            // for example, (-2) specified for microseconds, will continue to get the same behavior.
 
             int socketCount;
 
@@ -6408,7 +6408,7 @@ namespace System.Net.Sockets {
                 throw;
             }
 
-            // Keep the internal state in sync if the user manually resets this
+            // Keep the internal state in [....] if the user manually resets this
             if (optionName == SocketOptionName.PacketInformation && optionValue == 0 && 
                 errorCode == SocketError.Success)
             {
@@ -6851,9 +6851,9 @@ namespace System.Net.Sockets {
             catch
             {
                 //
-                // 
-
-
+                // Bug 152350: If ConnectEx throws we need to unpin the socketAddress buffer.
+                // m_RightEndPoint will always equal oldEndPoint anyways...
+                //
                 asyncResult.InternalCleanup();
                 m_RightEndPoint = oldEndPoint;
                 throw;
@@ -7634,7 +7634,7 @@ namespace System.Net.Sockets {
             e.StartOperationAccept();
             BindToCompletionPort();
 
-            // Local variables for sync completion.
+            // Local variables for [....] completion.
             int bytesTransferred;
             SocketError socketError = SocketError.Success;
 
@@ -7899,7 +7899,7 @@ namespace System.Net.Sockets {
             e.StartOperationReceive();
             BindToCompletionPort();
 
-            // Local vars for sync completion of native call.
+            // Local vars for [....] completion of native call.
             SocketFlags flags = e.m_SocketFlags;
             int bytesTransferred;
             SocketError socketError;
@@ -8142,7 +8142,7 @@ namespace System.Net.Sockets {
             BindToCompletionPort();
 
             
-            // Local vars for sync completion of native call.
+            // Local vars for [....] completion of native call.
             int bytesTransferred;
             SocketError socketError;
 
@@ -8826,7 +8826,7 @@ namespace System.Net.Sockets {
             
 
 
-        // Method to update internal state after sync or async completion.
+        // Method to update internal state after [....] or async completion.
         internal void SetResults(SocketError socketError, int bytesTransferred, SocketFlags flags) {
             m_SocketError = socketError;
             m_ConnectByNameError = null;
index 51a82e895490014ff6ade9d606dbe895d1e5642a..f46c793184ba193f0386ce99a4e9ec3be38e71bb 100644 (file)
@@ -616,7 +616,7 @@ namespace System.Net.Sockets {
                 throw new ArgumentNullException("datagram");
             }
 
-            if (bytes > datagram.Length) {
+            if (bytes > datagram.Length || bytes < 0) {
                 throw new ArgumentOutOfRangeException("bytes");
             }
 
index 424a0ab074d2b821a262025f3d44601b7ae8910c..efbdbff4262d0cb85446130b15df6b18b1ff5cdc 100644 (file)
@@ -4,6 +4,7 @@
 // </copyright>
 //------------------------------------------------------------------------------
 
+using System.Collections.Generic;
 using System.Net.Security;
 using System.Security.Authentication.ExtendedProtection;
 
@@ -12,6 +13,10 @@ namespace System.Net
     public abstract class TransportContext
     {
         public abstract ChannelBinding GetChannelBinding(ChannelBindingKind kind);
+        public virtual IEnumerable<TokenBinding> GetTlsTokenBindings()
+        {
+            throw new NotSupportedException();
+        }
     }
 
 #if MONO_FEATURE_WEB_STACK
@@ -69,6 +74,11 @@ namespace System.Net
             return request.GetChannelBinding();
         }
 
+        public override IEnumerable<TokenBinding> GetTlsTokenBindings()
+        {
+            return request.GetTlsTokenBindings();
+        }
+
         private HttpListenerRequest request;
     }
 #endif
index a5f20f2782972b5700fff2e9f08a6bb6d9f6d821..7cf970ed013f48125de2c07a4a866a49c4cbd648 100644 (file)
@@ -20,6 +20,7 @@ namespace System.Net {
     using System.Diagnostics.CodeAnalysis;
     using System.Security.Cryptography;
     using System.Security.Cryptography.X509Certificates;
+    using System.IO;
 
     [System.Security.SuppressUnmanagedCodeSecurityAttribute()]
     internal static class UnsafeNclNativeMethods {
@@ -67,6 +68,7 @@ namespace System.Net {
         private const string WINHTTP = "winhttp.dll";
         private const string BCRYPT = "bcrypt.dll";
         private const string USER32 = "user32.dll";
+        private const string TOKENBINDING = "tokenbinding.dll";
 
 #if !FEATURE_PAL
         private const string OLE32 = "ole32.dll";        
@@ -115,6 +117,16 @@ namespace System.Net {
         [DllImport(KERNEL32, ExactSpelling = true, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
         internal static unsafe extern bool SetFileCompletionNotificationModes(CriticalHandle handle, FileCompletionNotificationModes modes);
 
+        [DllImport(KERNEL32, CallingConvention = CallingConvention.Winapi, SetLastError = true)]
+        internal static extern IntPtr GetProcessHeap();
+
+        [DllImport(KERNEL32, CallingConvention = CallingConvention.Winapi, SetLastError = true)]
+        internal static extern bool HeapFree([In] IntPtr hHeap, [In] uint dwFlags, [In] IntPtr lpMem);
+
+        [System.Security.SecurityCritical]
+        [DllImport(KERNEL32, CallingConvention = CallingConvention.Winapi, SetLastError = true)]
+        internal extern static IntPtr GetProcAddress(SafeLoadLibrary hModule, string entryPoint);
+
         [Flags]
         internal enum FileCompletionNotificationModes : byte
         {
@@ -2171,6 +2183,33 @@ namespace System.Net {
             [DllImport(HTTPAPI, ExactSpelling = true, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
             internal static extern uint HttpCloseUrlGroup(ulong urlGroupId);
 
+            [SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "Implementation requires unmanaged code usage")]
+            [DllImport(TOKENBINDING, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
+            public static extern int TokenBindingVerifyMessage(
+                [In] byte* tokenBindingMessage,
+                [In] uint tokenBindingMessageSize,
+                [In] IntPtr keyType,
+                [In] byte* tlsUnique,
+                [In] uint tlsUniqueSize,
+                [Out] out HeapAllocHandle resultList);
+
+            internal sealed class HeapAllocHandle : SafeHandleZeroOrMinusOneIsInvalid
+            {
+                private static readonly IntPtr ProcessHeap = GetProcessHeap();
+
+                // Called by P/Invoke when returning SafeHandles.
+                private HeapAllocHandle()
+                    : base(ownsHandle: true)
+                {
+                }
+
+                // Do not provide a finalizer - SafeHandle's critical finalizer will call ReleaseHandle for you.
+                protected override bool ReleaseHandle()
+                {
+                    return HeapFree(ProcessHeap, 0, handle);
+                }
+            }
+
             internal enum HTTP_API_VERSION {
                 Invalid,
                 Version10,
@@ -2192,12 +2231,12 @@ namespace System.Net {
                 HttpServerChannelBindProperty,
                 HttpServerProtectionLevelProperty,
             }
-
-            //
-            // Currently only one request info type is supported but the enum is for future extensibility.
-            //
+                       
             internal enum HTTP_REQUEST_INFO_TYPE {
                 HttpRequestInfoTypeAuth,
+                HttpRequestInfoTypeChannelBind,
+                HttpRequestInfoTypeSslProtocol,
+                HttpRequestInfoTypeSslTokenBinding
             }
 
             internal enum HTTP_RESPONSE_INFO_TYPE {
@@ -2519,6 +2558,12 @@ namespace System.Net {
                 internal HTTP_DATA_CHUNK* pEntityChunks;
                 internal ulong RawConnectionId;
                 internal HTTP_SSL_INFO* pSslInfo;
+            }
+
+            [StructLayout(LayoutKind.Sequential)]
+            internal struct HTTP_REQUEST_V2
+            {
+                internal HTTP_REQUEST RequestV1;
                 internal ushort RequestInfoCount;
                 internal HTTP_REQUEST_INFO* pRequestInfo;
             }
@@ -2540,6 +2585,63 @@ namespace System.Net {
                 internal IntPtr RequestQueueHandle;                
             }
 
+            [StructLayout(LayoutKind.Sequential)]
+            internal unsafe struct HTTP_REQUEST_TOKEN_BINDING_INFO
+            {
+                public byte* TokenBinding;
+                public uint TokenBindingSize;
+                public byte* TlsUnique;
+                public uint TlsUniqueSize;
+                public IntPtr KeyType;
+            }
+
+            internal enum TOKENBINDING_HASH_ALGORITHM : byte
+            {
+                TOKENBINDING_HASH_ALGORITHM_SHA256 = 4,
+            }
+
+            internal enum TOKENBINDING_SIGNATURE_ALGORITHM : byte
+            {
+                TOKENBINDING_SIGNATURE_ALGORITHM_RSA = 1,
+                TOKENBINDING_SIGNATURE_ALGORITHM_ECDSAP256 = 3,
+            }
+
+            internal enum TOKENBINDING_TYPE : byte
+            {
+                TOKENBINDING_TYPE_PROVIDED = 0,
+                TOKENBINDING_TYPE_REFERRED = 1,
+            }
+
+            internal enum TOKENBINDING_EXTENSION_FORMAT
+            {
+                TOKENBINDING_EXTENSION_FORMAT_UNDEFINED = 0,
+            }
+
+            [StructLayout(LayoutKind.Sequential)]
+            internal struct TOKENBINDING_IDENTIFIER
+            {
+                public TOKENBINDING_TYPE bindingType;
+                public TOKENBINDING_HASH_ALGORITHM hashAlgorithm;
+                public TOKENBINDING_SIGNATURE_ALGORITHM signatureAlgorithm;
+            }
+
+            [StructLayout(LayoutKind.Sequential)]
+            internal unsafe struct TOKENBINDING_RESULT_DATA
+            {
+                public uint identifierSize;
+                public TOKENBINDING_IDENTIFIER* identifierData;
+                public TOKENBINDING_EXTENSION_FORMAT extensionFormat;
+                public uint extensionSize;
+                public IntPtr extensionData;
+            }
+
+            [StructLayout(LayoutKind.Sequential)]
+            internal unsafe struct TOKENBINDING_RESULT_LIST
+            {
+                public uint resultCount;
+                public TOKENBINDING_RESULT_DATA* resultData;
+            }
+            
             // see http.w for definitions
             [Flags]
             internal enum HTTP_FLAGS : uint {
@@ -3245,5 +3347,66 @@ namespace System.Net {
                 public int bottom;
             }
         }
+
+        /// <remarks>
+        /// Determines whether Token binding is supported on the machine or not
+        /// This class is thread safe.
+        /// The static method EnsureTokenBindingOSHelperInitialized is used to get that information.
+        /// It calls the load library and caches the result under proper locks to make sure it is thread safe and only one call is made to load library.
+        /// </remarks>
+        internal static class TokenBindingOSHelper
+        {
+            private static bool s_supportsTokenBinding = false;
+            private static object s_Lock = new object();
+            private static volatile bool s_Initialized = false;
+
+            // <SecurityKernel Critical="True" Ring="0">
+            // <CallsSuppressUnmanagedCode Name="UnsafeNclNativeMethods.GetProcAddress(System.Net.SafeLoadLibrary,System.String):System.IntPtr" />
+            // <SatisfiesLinkDemand Name="SafeHandle.get_IsInvalid():System.Boolean" />
+            // <ReferencesCritical Name="Method: SafeLoadLibrary.LoadLibraryEx(System.String):System.Net.SafeLoadLibrary" Ring="1" />
+            // </SecurityKernel>
+            [System.Security.SecurityCritical]
+            private static void EnsureTokenBindingOSHelperInitialized()
+            {
+                if (s_Initialized)
+                {
+                    return;
+                }
+                lock (s_Lock)
+                {
+                    if (s_Initialized)
+                    {
+                        return;
+                    }
+                    try
+                    {
+                        // if tokenbinding.dll is not available, TOKENBINDING is not supported
+                        string dllFileName = Path.Combine(Environment.SystemDirectory, TOKENBINDING);
+                        SafeLoadLibrary s_TokenBindingLibrary = SafeLoadLibrary.LoadLibraryEx(dllFileName);
+                        if (!s_TokenBindingLibrary.IsInvalid)
+                        {
+                            s_supportsTokenBinding = s_TokenBindingLibrary.HasFunction("TokenBindingVerifyMessage");
+                        }
+                        s_Initialized = true;
+                    }
+                    catch (Exception e)
+                    {
+                        if (NclUtilities.IsFatal(e))
+                        { 
+                            throw;
+                        }
+                    }
+                }
+            }
+
+            internal static bool SupportsTokenBinding
+            {
+                get
+                {
+                    EnsureTokenBindingOSHelperInitialized();
+                    return s_supportsTokenBinding;
+                }
+            }
+        }
     }
 }
index da5d0ed5f4a1655ea120f7acf602bdb9e6b2fefc..1135be0891ca83a298461452d401ac4bb9d550f3 100644 (file)
@@ -981,7 +981,7 @@ namespace System.Net {
         // GetRequestStream() and the reading phase to GetResponse(), but if there's no request body, both phases
         // may happen inside GetResponse().
         //
-        // Return null only on Sync (if we're on the Sync thread).  Otherwise throw if no context is available.
+        // Return null only on [....] (if we're on the [....] thread).  Otherwise throw if no context is available.
         internal virtual ContextAwareResult GetConnectingContext()
         {
             throw ExceptionHelper.MethodNotImplementedException;
index 9fd21d9ce24c54e10690818ce0e73327e3451448..da0acfe793242634fe2dc1d2f9ebcc01a9d8506e 100644 (file)
@@ -203,8 +203,8 @@ namespace System.Net.WebSockets
             return bytesRead;
         }
 
-        // return value indicates sync vs async completion
-        // false: sync completion
+        // return value indicates [....] vs async completion
+        // false: [....] completion
         // true: async completion
         private unsafe bool ReadAsyncFast(HttpListenerAsyncEventArgs eventArgs)
         {
@@ -480,8 +480,8 @@ namespace System.Net.WebSockets
             }
         }
 
-        // return value indicates sync vs async completion
-        // false: sync completion
+        // return value indicates [....] vs async completion
+        // false: [....] completion
         // true: async completion
         private bool WriteAsyncFast(HttpListenerAsyncEventArgs eventArgs)
         {
@@ -649,7 +649,7 @@ namespace System.Net.WebSockets
                 }
 
                 // throw OperationCancelledException when canceled by the caller
-                // otherwise swallow the exception
+                // otherwise ---- the exception
                 cancellationToken.ThrowIfCancellationRequested();
             }
             finally
@@ -863,12 +863,22 @@ namespace System.Net.WebSockets
             private readonly WebSocketBase m_WebSocket;
             private readonly WebSocketHttpListenerDuplexStream m_CurrentStream;
 
+            // With this flag enabled, Overlapped objects are allocated/pinned before each operation and released/unpinned when the operation ends.
+            // This eliminates the need to keep an Overlapped object in-memory all the time for the generally short-lived write operation.
+            // It also allows the GC to better compact the heap due to the frequent unpinning of the (read and write) Overlapped objects.
+            private readonly bool m_AllocateOverlappedOnDemand;
+
             public HttpListenerAsyncEventArgs(WebSocketBase webSocket, WebSocketHttpListenerDuplexStream stream)
                 : base()
             {
                 m_WebSocket = webSocket;
                 m_CurrentStream = stream;
-                InitializeOverlapped();
+                m_AllocateOverlappedOnDemand = LocalAppContextSwitches.AllocateOverlappedOnDemand;
+
+                if (!m_AllocateOverlappedOnDemand)
+                {
+                    InitializeOverlapped();
+                }
             }
 
             public int BytesTransferred
@@ -890,11 +900,11 @@ namespace System.Net.WebSockets
                 set
                 {
                     Contract.Assert(!m_ShouldCloseOutput, "'m_ShouldCloseOutput' MUST be 'false' at this point.");
-                    Contract.Assert(value == null || m_Buffer == null, 
+                    Contract.Assert(value == null || m_Buffer == null,
                         "Either 'm_Buffer' or 'm_BufferList' MUST be NULL.");
-                    Contract.Assert(m_Operating == Free, 
+                    Contract.Assert(m_Operating == Free,
                         "This property can only be modified if no IO operation is outstanding.");
-                    Contract.Assert(value == null || value.Count == 2, 
+                    Contract.Assert(value == null || value.Count == 2,
                         "This list can only be 'NULL' or MUST have exactly '2' items.");
                     m_BufferList = value;
                 }
@@ -996,9 +1006,12 @@ namespace System.Net.WebSockets
                     return;
                 }
 
-                // OK to dispose now.
-                // Free native overlapped data.
-                FreeOverlapped(false);
+                if (!m_AllocateOverlappedOnDemand)
+                {
+                    // OK to dispose now.
+                    // Free native overlapped data.
+                    FreeOverlapped(false);
+                }
 
                 // Don't bother finalizing later.
                 GC.SuppressFinalize(this);
@@ -1007,7 +1020,10 @@ namespace System.Net.WebSockets
             // Finalizer
             ~HttpListenerAsyncEventArgs()
             {
-                FreeOverlapped(true);
+                if (!m_AllocateOverlappedOnDemand)
+                {
+                    FreeOverlapped(true);
+                }
             }
 
             private unsafe void InitializeOverlapped()
@@ -1030,6 +1046,10 @@ namespace System.Net.WebSockets
                     if (m_DataChunksGCHandle.IsAllocated)
                     {
                         m_DataChunksGCHandle.Free();
+                        if (m_AllocateOverlappedOnDemand)
+                        {
+                            m_DataChunks = null;
+                        }
                     }
                 }
             }
@@ -1039,7 +1059,7 @@ namespace System.Net.WebSockets
             internal void StartOperationCommon(WebSocketHttpListenerDuplexStream currentStream)
             {
                 // Change status to "in-use".
-                if(Interlocked.CompareExchange(ref m_Operating, InProgress, Free) != Free)
+                if (Interlocked.CompareExchange(ref m_Operating, InProgress, Free) != Free)
                 {
                     // If it was already "in-use" check if Dispose was called.
                     if (m_DisposeCalled)
@@ -1057,7 +1077,16 @@ namespace System.Net.WebSockets
                 // is not IntPtr.Zero, so we have to reset this field because we are reusing the Overlapped.
                 // When using the IAsyncResult based approach of HttpListenerResponseStream the Overlapped is reinitialized
                 // for each operation by the CLR when returned from the OverlappedDataCache.
-                NativeOverlapped.ReinitializeNativeOverlapped();
+
+                if (m_AllocateOverlappedOnDemand)
+                {
+                    InitializeOverlapped();
+                }
+                else
+                {
+                    NativeOverlapped.ReinitializeNativeOverlapped();
+                }
+
                 m_Exception = null;
                 m_BytesTransferred = 0;
             }
@@ -1099,7 +1128,7 @@ namespace System.Net.WebSockets
 
                 Contract.Assert(m_Buffer == null || m_BufferList == null, "Either 'm_Buffer' or 'm_BufferList' MUST be NULL.");
                 Contract.Assert(m_ShouldCloseOutput || m_Buffer != null || m_BufferList != null, "Either 'm_Buffer' or 'm_BufferList' MUST NOT be NULL.");
-                
+
                 // The underlying byte[] m_Buffer or each m_BufferList[].Array are pinned already 
                 if (m_Buffer != null)
                 {
@@ -1137,7 +1166,7 @@ namespace System.Net.WebSockets
                 }
                 else
                 {
-                    m_DataChunks[index].pBuffer = 
+                    m_DataChunks[index].pBuffer =
                         (byte*)m_WebSocket.InternalBuffer.ConvertPinnedSendPayloadToNative(buffer, offset, count);
                 }
 
@@ -1148,8 +1177,17 @@ namespace System.Net.WebSockets
             // Will also execute a Dispose deferred because I/O was in progress.  
             internal void Complete()
             {
-                // Mark as not in-use            
-                m_Operating = Free;
+                if (m_AllocateOverlappedOnDemand)
+                {
+                    FreeOverlapped(false);
+                    // Mark as not in-use
+                    Interlocked.Exchange(ref m_Operating, Free);
+                }
+                else
+                {
+                    // Mark as not in-use            
+                    m_Operating = Free;
+                }
 
                 // Check for deferred Dispose().
                 // The deferred Dispose is not guaranteed if Dispose is called while an operation is in progress. 
@@ -1160,7 +1198,7 @@ namespace System.Net.WebSockets
                 }
             }
 
-            // Method to update internal state after sync or async completion.
+            // Method to update internal state after [....] or async completion.
             private void SetResults(Exception exception, int bytesTransferred)
             {
                 m_Exception = exception;
@@ -1173,7 +1211,7 @@ namespace System.Net.WebSockets
 
                 if (WebSocketBase.LoggingEnabled)
                 {
-                    Logging.PrintError(Logging.WebSockets, m_CurrentStream, 
+                    Logging.PrintError(Logging.WebSockets, m_CurrentStream,
                         m_CompletedOperation == HttpListenerAsyncOperation.Receive ? Methods.ReadAsyncFast : Methods.WriteAsyncFast,
                         exception.ToString());
                 }
@@ -1216,7 +1254,7 @@ namespace System.Net.WebSockets
                 {
                     m_CurrentStream.m_OutputStream.SetClosedFlag();
                 }
-                
+
                 // Complete the operation and raise completion event.
                 Complete();
                 OnCompleted(this);
index 454ae4f3e72885876c02c43d2059f31f84277166..9686185790562efbe02709faa52840ef7f9562e0 100644 (file)
@@ -343,7 +343,7 @@ namespace System.Net {
                 catch {
                     // DevDiv: 642025
                     // ASP.NET uses own ConfigurationManager which can throw in more situations than config errors (i.e. BadRequest)
-                    // It's ok to swallow the exception here and continue using the default value
+                    // It's ok to ---- the exception here and continue using the default value
                     // Try to initialize again the next time
                     return defaultDecodeConformance;
                 }
@@ -382,7 +382,7 @@ namespace System.Net {
                 catch {
                     // DevDiv: 642025
                     // ASP.NET uses own ConfigurationManager which can throw in more situations than config errors (i.e. BadRequest)
-                    // It's ok to swallow the exception here and continue using the default value
+                    // It's ok to ---- the exception here and continue using the default value
                     // Try to initialize again the next time
                     return defaultEncodeConformance;
                 }
index f019dd0183ecbc55247db89a42371beae2d50f94..0c79291dac5336fca34db45dc536debef0dcf4c7 100644 (file)
@@ -325,7 +325,7 @@ namespace System.Net {
         internal void Update(HttpWebRequest httpWebRequest) {
             //
             // RAID#86753
-            // Microsoft: this is just a fix for redirection & kerberos.
+            // [....]: this is just a fix for redirection & kerberos.
             // we need to close the Context and call ISC() again with the final
             // blob returned from the server. to do this in general
             // we would probably need to change the IAuthenticationMdule interface and
index e2278a9eb3bcfc169cb46dae4b1c9e76b54f86a1..c37b50aa2a8d36e7a07adf825222c22d72118a76 100644 (file)
@@ -258,7 +258,7 @@ namespace System.Net
 
         internal WebProxyData GetWebProxyData()
         {
-            // PS DevDiv 
+            // PS DevDiv bug #217205 / TFS Dev10 #588370: use winhttp.WinhttpGetIEProxyConfigForCurrentUser
             WebProxyDataBuilder builder = null;
 
             if (ComNetOS.IsWin7orLater)
index af1cbad4c97086b04779332eaa7a5ebe3fa9715d..051e8fc935ce559636ef162f7be6e6fc41209cf0 100644 (file)
@@ -413,7 +413,7 @@ namespace System.Net
             return true;
         }
 
-        // See 
+        // See bug 87334 for details on the implementation.
         public bool shExpMatch(string host, string pattern) {
             GlobalLog.Print("WebProxyScriptHelper::shExpMatch() host:" + ValidationHelper.ToString(host) + " pattern:" + ValidationHelper.ToString(pattern));
             if (host==null) {
index eb2154db415df9930be17c2ed72c163cbd5c382e..a111964b7342076c7ee0e206322688c0530764d4 100644 (file)
@@ -671,15 +671,15 @@ namespace System.Net
             GC.SuppressFinalize(this);
         }
 
-        // 
-
-
-
-
-
-
-
-
+        // Bug 434828
+        //
+        // It's very hard to guarantee cleanup of an AppDomain.  They aren't garbage collected, and Unload() is synchronous and
+        // can't be called from the finalizer thread.  So we must have a finalizer that uses another thread, in this case the
+        // TimerThread, to unload the domain.
+        //
+        // A case this will come up is if the user replaces the DefaultWebProxy.  The old one will be GC'd - there's no chance to
+        // clean it up properly.  If the user wants to avoid the TimerThread being spun up for that purpose, they should save the
+        // existing DefaultWebProxy in a static before replacing it.
         ~AutoWebProxyScriptWrapper()
         {
             if (!NclUtilities.HasShutdownStarted && scriptDomain != null)
index 47b3d4604529f8fe49720db9bd119d6f4e86984d..8b48cb8cac078f4cba42d017198a19840760a56b 100644 (file)
@@ -12,7 +12,7 @@ using System.Threading;
 
 namespace System.Net
 {
-    // This class is a helper for parsing chunked HTTP responses. Usage is to either call Read() (sync) or ReadAsync()
+    // This class is a helper for parsing chunked HTTP responses. Usage is to either call Read() ([....]) or ReadAsync()
     // (async) methods to retrieve the response payload (without chunk metadata).
     // The buffer passed to the .ctor is owned by the ChunkParser until the whole response is read (i.e. Read/
     // ReadAsync return 0 bytes) or an error occurs.
index b98c090f2f927aa2417d79c793b2e7c17837d600..859f8764646709d935bc564dbef6b492e29f9805 100644 (file)
@@ -271,7 +271,7 @@ namespace System.Net {
             ** I don;t see how this code can be still relevant, remove it of no problems observed **
 
             //
-            // This is a general race condition in Sync mode, if the server returns an error
+            // This is a general race condition in [....] mode, if the server returns an error
             // after we open the data connection, we will be off reading the data connection,
             // and not the control connection. The best we can do is try to poll, and in the
             // the worst case, we will timeout on establishing the data connection.
@@ -300,7 +300,7 @@ namespace System.Net {
                 } catch {
                     // If we get an exception on the QUIT command (which is 
                     // always the last command), ignore the final exception
-                    // and continue with the pipeline regardlss of sync/async
+                    // and continue with the pipeline regardlss of [....]/async
                     if (index < 0 || index >= commands.Length ||
                         commands[index].Command != "QUIT\r\n")
                         throw;
@@ -423,7 +423,7 @@ namespace System.Net {
         //
 
         /// <summary>
-        ///    <para>Provides a wrapper for the async operations, so that the code can be shared with sync</para>
+        ///    <para>Provides a wrapper for the async operations, so that the code can be shared with [....]</para>
         /// </summary>
         private static void ReadCallback(IAsyncResult asyncResult) {
             ReceiveState state = (ReceiveState)asyncResult.AsyncState;
@@ -502,7 +502,7 @@ namespace System.Net {
         }
 
         /// <summary>
-        /// Kicks off an asynchronous or sync request to receive a response from the server.
+        /// Kicks off an asynchronous or [....] request to receive a response from the server.
         /// Uses the Encoding <code>encoding</code> to transform the bytes received into a string to be
         /// returned in the GeneralResponseDescription's StatusDescription field.
         /// </summary>
index 8ecd19cc46fdd647545bc6aa5bf68ca1b1d3666d..0b06f934322b56c6afc18f2cadb80591914f236f 100644 (file)
@@ -101,7 +101,7 @@ namespace System.Net {
         private const string responseDrainTimeoutAppSetting = "responseDrainTimeout";
 
         //
-        // Timeout - timeout in ms for sync reads & writes, passed in HttpWebRequest
+        // Timeout - timeout in ms for [....] reads & writes, passed in HttpWebRequest
         //
 
         public override bool CanTimeout {
@@ -430,7 +430,7 @@ namespace System.Net {
                 if (returnResult == null) {
                     m_Connection.WriteStartNextRequest(m_Request, ref returnResult);
 
-                    // If the request is Sync, then we do our Read here for data
+                    // If the request is [....], then we do our Read here for data
                     if (!m_Request.Async)
                     {
                         object syncReaderResult = m_Request.ConnectionReaderAsyncResult.InternalWaitForCompletion();
@@ -439,7 +439,7 @@ namespace System.Net {
                         //via poll when we handed back the request stream
                         if (syncReaderResult == null && m_Request.NeedsToReadForResponse)
 #if DEBUG
-                            // Remove once mixed sync/async requests are supported.
+                            // Remove once mixed [....]/async requests are supported.
                             using (GlobalLog.SetThreadKind(ThreadKinds.Sync))
 #endif
                         {
@@ -891,7 +891,7 @@ namespace System.Net {
         }
 
         //
-        // Handles either async or sync Writing for *public* stream API
+        // Handles either async or [....] Writing for *public* stream API
         //
         private IAsyncResult InternalWrite(bool async, byte[] buffer, int offset, int size, AsyncCallback callback, object state ) {
             //
@@ -952,7 +952,7 @@ namespace System.Net {
                         m_BytesLeftToWrite -= size;
                     }
 
-                    GlobalLog.Print("ConnectStream#" + ValidationHelper.HashString(this) + "::InternalWrite() ----ing: size==0 || BufferOnly || IgnoreSocketErrors= " + (size==0) + BufferOnly + IgnoreSocketErrors);
+                    GlobalLog.Print("ConnectStream#" + ValidationHelper.HashString(this) + "::InternalWrite() swallowing: size==0 || BufferOnly || IgnoreSocketErrors= " + (size==0) + BufferOnly + IgnoreSocketErrors);
                     if (async) {
                         asyncResult = new LazyAsyncResult(this, state, callback);
                         completeSync = true;
@@ -1006,7 +1006,7 @@ namespace System.Net {
                         // IgnoreSocketErrors can be set at any time - need to check it again.
                         if (IgnoreSocketErrors && !NclUtilities.IsFatal(exception))
                         {
-                            GlobalLog.Print("ConnectStream#" + ValidationHelper.HashString(this) + "::InternalWrite() ----ing: IgnoreSocketErrors set after throw.");
+                            GlobalLog.Print("ConnectStream#" + ValidationHelper.HashString(this) + "::InternalWrite() swallowing: IgnoreSocketErrors set after throw.");
                             if (async)
                             {
                                 completeSync = true;
@@ -1109,7 +1109,7 @@ namespace System.Net {
                         // IgnoreSocketErrors can be set at any time - need to check it again.
                         if (IgnoreSocketErrors && !NclUtilities.IsFatal(exception))
                         {
-                            GlobalLog.Print("ConnectStream#" + ValidationHelper.HashString(this) + "::InternalWrite() ----ing: IgnoreSocketErrors set after throw.");
+                            GlobalLog.Print("ConnectStream#" + ValidationHelper.HashString(this) + "::InternalWrite() swallowing: IgnoreSocketErrors set after throw.");
                             if (async)
                             {
                                 completeSync = true;
@@ -1577,7 +1577,7 @@ namespace System.Net {
                 GlobalLog.Print("m_ReadBytes = "+m_ReadBytes);
 
                 if (m_ReadBytes < 0)
-                    throw new InternalException(); // 
+                    throw new InternalException(); // TODO consider changing on Assert or a user exception when stress gets stable-stable
 
             }
 
@@ -2596,7 +2596,7 @@ namespace System.Net {
                                     SafeSetSocketTimeout(SocketShutdown.Send);
 
 #if DEBUG
-                                    // Until there is an async version of this, we have to assert Sync privileges here.
+                                    // Until there is an async version of this, we have to assert [....] privileges here.
                                     using (GlobalLog.SetThreadKind(ThreadKinds.Sync)) {
 #endif
                                     m_Connection.Write(NclConstants.ChunkTerminator, 0, NclConstants.ChunkTerminator.Length);
index 7b32af35d87226030b90492b09d5a2e77c9d202d..b3e49c94092d9ecacf44cd61ae26a6373f9ba32e 100644 (file)
@@ -702,7 +702,7 @@ namespace System.Net {
             if (startRequestResult != TriState.Unspecified) {
                 CompleteStartRequest(true, request, startRequestResult);
             }
-            // On Sync, we wait for the Connection to be come availble here,
+            // On [....], we wait for the Connection to be come availble here,
             if (!request.Async)
             {
                 object responseObject = request.ConnectionAsyncResult.InternalWaitForCompletion();
@@ -912,7 +912,7 @@ namespace System.Net {
 
             //
             // From now on the request.SetRequestSubmitDone must be called or it may hang
-            // For a sync request the write side reponse windowwas opened in HttpWebRequest.SubmitRequest
+            // For a [....] request the write side reponse windowwas opened in HttpWebRequest.SubmitRequest
             if (request.Async)
                 request.OpenWriteSideResponseWindow();
 
@@ -1078,7 +1078,7 @@ namespace System.Net {
             WebExceptionStatus ws = WebExceptionStatus.ConnectFailure;
             //
             // From now on the request.SetRequestSubmitDone must be called or it may hang
-            // For a sync request the write side reponse windowwas opened in HttpWebRequest.SubmitRequest
+            // For a [....] request the write side reponse windowwas opened in HttpWebRequest.SubmitRequest
             if (request.Async)
                 request.OpenWriteSideResponseWindow();
 
@@ -1372,7 +1372,7 @@ namespace System.Net {
                                     if (nextRequest != null )
                                     {
                                         // We cannot have HeadersCompleted on the request that was not placed yet on the write list
-                                        if(nextRequest.HeadersCompleted) // 
+                                        if(nextRequest.HeadersCompleted) // TODO: change to be Assert but only when stress got stable-stable
                                             throw new InternalException();
 
                                         // This codepath doesn't handle the case where the server has closed the
@@ -2124,7 +2124,7 @@ quit:
                 //    IIS6 does not close the connection on 403 so all subsequent requests will fail to be authorized on THAT connection.
                 //-----------------------------------------------------------------------------------------------
                 //5/15/2006
-                //Microsoft
+                //[....]
                 //The DTS Issue 595216 claims that we are unnecessarily closing the
                 //connection on 403 - even if it is a non SSL request. It seems
                 //that the original intention is to close the request for SSL requests
@@ -2153,7 +2153,7 @@ quit:
                 else
                 {
                     //QFE: 4599.
-                    //Author: Microsoft
+                    //Author: [....]
                     //in v2.0, in case of SSL Requests through proxy that require NTLM authentication,
                     //we are not honoring the Proxy-Connection: Keep-Alive header and
                     //closing the connection.
@@ -2928,7 +2928,7 @@ quit:
                         {
                             if (m_Error == WebExceptionStatus.Success)
                             {
-                                throw new InternalException();              // 
+                                throw new InternalException();              // TODO: replace it with a generic error for the product bits
                                 //m_Error = WebExceptionStatus.UnknownError;
                             }
 
@@ -3163,7 +3163,7 @@ quit:
             }
         }
         //
-        //    Peforms a Sync Read and calls the ReadComplete to process the result
+        //    Peforms a [....] Read and calls the ReadComplete to process the result
         //    The reads are done iteratively, until the Request has received enough
         //    data to contruct a response, or a 100-Continue is read, allowing the HttpWebRequest
         //    to return a write stream
@@ -3272,7 +3272,7 @@ quit:
 
             if (probeRead)
             {
-                // Sync 100-Continue wait only
+                // [....] 100-Continue wait only
                 request.FinishContinueWait();
                 if (pollSuccess)
                 {
@@ -3468,7 +3468,7 @@ quit:
             }
             //
             // Any exception is processed by HandleError() and ----ed to avoid throwing on a thread pool
-            // In the sync case the HandleError() will abort the request so the caller will pick up the result.
+            // In the [....] case the HandleError() will abort the request so the caller will pick up the result.
             //
             catch (Exception exception) {
                 if (NclUtilities.IsFatal(exception)) throw;
index b94e26e4312c1e014ca8fe56e9ebe674680d4783..c5c5dc428921ad89f7e45bcbcd18f4ec46b5c941 100644 (file)
@@ -359,7 +359,7 @@ namespace System.Net {
         // to avoid flowing context.  Even if the operation completes before this call, the callback won't have been
         // called.
         //
-        // Returns whether the operation completed sync or not.
+        // Returns whether the operation completed [....] or not.
         //
         private bool CaptureOrComplete(ref ExecutionContext cachedContext, bool returnContext)
         {
index ae4d780262f3ce946a786382545d18de47c8d61a..04cf4ffdfaed5c230be5f6a489672b8db8cdc0e2 100644 (file)
@@ -28,7 +28,7 @@ namespace System.Net {
         private static PrefixLookup challengeCache = new PrefixLookup();
         private static readonly char[] singleSpaceArray = new char[]{' '};
 
-        // Microsoft: make sure WDigest fixes these bugs before we
+        // [....]: make sure WDigest fixes these bugs before we
         // enable this code ("Windows OS" Product Studio database):
         //
         // 921024   1   Wdigest should support MD5, at least for explicit (non-default) credentials.
index 425f2422266c3afe98ee61a5e39b019dfec0d581..666ccf9a39ef3f3472099ce75c8686db1d58e161 100644 (file)
@@ -42,7 +42,7 @@ namespace System.Net {
 
         private const int DATE_TOKEN_JANUARY      = 1;
         private const int DATE_TOKEN_FEBRUARY     = 2;
-        private const int DATE_TOKEN_Microsoft        = 3;
+        private const int DATE_TOKEN_MARCH        = 3;
         private const int DATE_TOKEN_APRIL        = 4;
         private const int DATE_TOKEN_MAY          = 5;
         private const int DATE_TOKEN_JUNE         = 6;
@@ -148,7 +148,7 @@ namespace System.Net {
                         case 'A':
                             switch (MAKE_UPPER(lpszDay[index+2])) {
                                 case 'R':
-                                    return DATE_TOKEN_Microsoft;
+                                    return DATE_TOKEN_MARCH;
                                 case 'Y':
                                     return DATE_TOKEN_MAY;
                             }
index 17bd85e03d8946ed21deaccd6a15eabcd1d059e9..bbf9ab822023058f4ddec31f3609a939f3a566e9 100644 (file)
@@ -18,7 +18,7 @@ namespace System.Net
         private const int c_ForceAsyncCount = 50;
 
 #if !NET_PERF
-        // This is to avoid user mistakes when they queue another async op from a callback the completes sync.
+        // This is to avoid user mistakes when they queue another async op from a callback the completes [....].
         [ThreadStatic]
         private static ThreadContext t_ThreadContext;
 
index db4ba258c787d299ef947a1bda91ccd6d5073b5e..61c5adc6fdf6c99ccf54323e717c97296e4e9dd2 100644 (file)
@@ -463,7 +463,7 @@ namespace System.Net {
         }
 
         // The final Content-Length async write can only be cancelled by CancelIoEx.
-        // Sync can only be cancelled by CancelSynchronousIo, but we don't attempt this right now.
+        // [....] can only be cancelled by CancelSynchronousIo, but we don't attempt this right now.
         [SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", Justification =
             "It is safe to ignore the return value on a cancel operation because the connection is being closed")]
         internal void CancelLastWrite(CriticalHandle requestQueueHandle)
index 1b5dc02582e358550e71a141632b317e70f62734..2a7463906e8f5a8ec570515929a22de261a7fd8e 100644 (file)
@@ -781,6 +781,12 @@ namespace System.Net {
             return result;
         }
 
+        public unsafe bool HasFunction(string functionName)
+        {
+            IntPtr ret = UnsafeNclNativeMethods.GetProcAddress(this, functionName);
+            return (ret != IntPtr.Zero);
+        }
+
         protected override bool ReleaseHandle() {
             return UnsafeNclNativeMethods.SafeNetHandles.FreeLibrary(handle);
         }
index 4ab4c6b43012b89ebfec18ea3549395fbc145593..3c24c6945c13239f38c7f50ff6e7261b00c75114 100644 (file)
@@ -515,16 +515,17 @@ namespace System.Net.Security {
                             uint count = issuerList.cIssuers;
                             issuers = new string[issuerList.cIssuers];
                             _CERT_CHAIN_ELEMENT* pIL = (_CERT_CHAIN_ELEMENT*)issuerList.aIssuers.DangerousGetHandle();
-                            for (int i =0; i<count; ++i) {
+                            for (uint i =0; i<count; ++i) {
                                 _CERT_CHAIN_ELEMENT* pIL2 = pIL + i;
                                 uint size = pIL2->cbSize;
                                 byte* ptr = (byte*)(pIL2->pCertContext);
                                 byte[] x = new byte[size];
-                                for (int j=0; j<size; j++) {
+                                for (uint j=0; j<size; j++) {
                                     x[j] = *(ptr + j);
                                 }
                                 // Oid oid = new Oid();
                                 // oid.Value = "1.3.6.1.5.5.7.3.2";
+                                // Value of issuers[i] can be an empty string when size of x is 0.
                                 X500DistinguishedName x500DistinguishedName = new X500DistinguishedName(x);
                                 issuers[i] = x500DistinguishedName.Name;
                                 GlobalLog.Print("SecureChannel#" + ValidationHelper.HashString(this) + "::GetIssuers() IssuerListEx[" + i + "]:" + issuers[i]);
index 50f5265f53d2b8ccfb5aca07689caa43bc563fd2..3a418304fd67824a3d0d1ded6372a60efe1883a5 100644 (file)
@@ -106,7 +106,7 @@ namespace System.Net {
         }
 
         //
-        // Sync Read version
+        // [....] Read version
         //
         public override int Read(byte[] buffer, int offset, int size) {
             GlobalLog.Print("TlsStream#" + ValidationHelper.HashString(this) + "::Read() SecureWorker#" + ValidationHelper.HashString(m_Worker) + " offset:" + offset.ToString() + " size:" + size.ToString());
@@ -401,11 +401,11 @@ namespace System.Net {
 
         //
         // This methods ensures that IO is only issued when the handshake is completed in ether way
-        // The very first coming IO will initiate the handshake and define it's flavor (sync/async).
+        // The very first coming IO will initiate the handshake and define it's flavor ([....]/async).
         //
         // Returns false if the handshake was already done.
         // Returns true  if the user IO is queued and the handshake is started.
-        // Return value is not applicable in sync case.
+        // Return value is not applicable in [....] case.
         //
         private ArrayList m_PendingIO = new ArrayList();
         internal bool ProcessAuthentication(LazyAsyncResult result)
@@ -483,7 +483,7 @@ namespace System.Net {
                             {
                                 if(m_PendingIO.Count > 1)
                                 {
-                                    // It was a real sync handshake (now completed) and another IO came in.
+                                    // It was a real [....] handshake (now completed) and another IO came in.
                                     // It's now waiting on us so resume.
                                     ThreadPool.QueueUserWorkItem(new WaitCallback(StartWakeupPendingIO), null);
                                 }
@@ -496,7 +496,7 @@ namespace System.Net {
                 }
                 else if (isSyncCall)
                 {
-                    GlobalLog.Assert(result != null, "TlsStream::ProcessAuthentication() this is a Sync call and it did not started the handshake hence null result must be wrapped into LazyAsyncResult");
+                    GlobalLog.Assert(result != null, "TlsStream::ProcessAuthentication() this is a [....] call and it did not started the handshake hence null result must be wrapped into LazyAsyncResult");
                     Exception e = result.InternalWaitForCompletion() as Exception;
                     if (e != null)
                         throw e;
@@ -516,7 +516,7 @@ namespace System.Net {
             }
 
             // Here in the async case a user IO has been queued (and may be already completed)
-            // For sync case it does not matter since the caller will resume IO upon return
+            // For [....] case it does not matter since the caller will resume IO upon return
             return true;
         }
         //
@@ -581,7 +581,7 @@ namespace System.Net {
                     }
                     else
                     {
-                        //resume sync IO waiting on other thread or signal waiting async handshake result.
+                        //resume [....] IO waiting on other thread or signal waiting async handshake result.
                         try {
                             lazyResult.InvokeCallback(exception);
                         }
index 2d11591ebfcb580ebb242173845ca31b8c16b33e..059e88d5bcde16c8e502e603def82720c600ed11 100644 (file)
@@ -13,7 +13,7 @@ namespace System.Net {
     using System.Runtime.InteropServices;
 
     /// <summary>
-    /// <para>Acts as countdown timer, used to measure elapsed time over a sync operation.</para>
+    /// <para>Acts as countdown timer, used to measure elapsed time over a [....] operation.</para>
     /// </summary>
     internal static class TimerThread {
         /// <summary>
index eabb5954e5097a7508943cd23b7e3bee91b1a533..cde8b0b45d858fd88e777a2e6fcf698e8a21e798 100644 (file)
@@ -67,7 +67,7 @@ namespace System.Net.Mail {
 
 
         // Table of well-known mail headers.
-        // Keep the initializers in sync with the enum above.
+        // Keep the initializers in [....] with the enum above.
         private static readonly HeaderInfo[] m_HeaderInfo = {
             //             ID                                     NormalizedString             IsSingleton      IsUserSettable      AllowsUnicode
             new HeaderInfo(MailHeaderID.Bcc,                      "Bcc",                       true,            false,              true),
@@ -110,10 +110,10 @@ namespace System.Net.Mail {
         static MailHeaderInfo() {
 
 #if DEBUG
-            // Check that enum and header info array are in sync
+            // Check that enum and header info array are in [....]
             for(int i = 0; i < m_HeaderInfo.Length; i++) {
                 if((int)m_HeaderInfo[i].ID != i) {
-                    throw new Exception("Header info data structures are not in sync");
+                    throw new Exception("Header info data structures are not in [....]");
                 }
             }
 #endif
index d1632685a60b21f61dd08d4f74955e734354731b..38ccf0a7f3335a081ad239b78a5c96b966309ecc 100644 (file)
@@ -872,7 +872,7 @@ namespace System.Net.Mail
             try {
                 writer = transport.EndSendMail(result);
                 // If some recipients failed but not others, send the e-mail anyways, but then return the
-                // "Non-fatal" exception reporting the failures.  The sync code path does it this way.
+                // "Non-fatal" exception reporting the failures.  The [....] code path does it this way.
                 // Fatal exceptions would have thrown above at transport.EndSendMail(...)
                 SendMailAsyncResult sendResult = (SendMailAsyncResult)result;
                 // Save these and throw them later in SendMessageCallback, after the message has sent.
index a6333e70e1e6763792360123d4d47cc28d5cf071..99c36b866d0341bd9935b1302a0a68065af49344 100644 (file)
@@ -235,7 +235,7 @@ namespace System.Net.Mail
             catch(Exception innerException){
                 throw new SmtpException(SR.GetString(SR.MailHostNotFound), innerException);
             }
-            GlobalLog.Leave("SmtpTransport#" + ValidationHelper.HashString(this) + "::BeginConnect Sync Completion");
+            GlobalLog.Leave("SmtpTransport#" + ValidationHelper.HashString(this) + "::BeginConnect [....] Completion");
             return result;
         }
 
index ff9bddc77370bc5720b8d0a984153d266d907138..a553312e2475b2ccc448ecdb8c69d2848cd16fad 100644 (file)
@@ -417,7 +417,7 @@ namespace System.Net.Mail
                 for (int i = 0; i < authenticationModules.Length; i++) 
                 {
 
-                    //only authenticate if the auth protocol is supported  - Microsoft
+                    //only authenticate if the auth protocol is supported  - [....]
                     if (!AuthSupported(authenticationModules[i])) {
                         continue;
                     }
@@ -650,7 +650,7 @@ namespace System.Net.Mail
             internal void GetConnection(bool synchronous)
             {
 
-                GlobalLog.Enter("ConnectAndHandshakeAsyncResult#" + ValidationHelper.HashString(this) + "::Connect: sync=" + (synchronous ? "true" : "false"));
+                GlobalLog.Enter("ConnectAndHandshakeAsyncResult#" + ValidationHelper.HashString(this) + "::Connect: [....]=" + (synchronous ? "true" : "false"));
                 if (connection.isConnected)
                 {
                     throw new InvalidOperationException(SR.GetString(SR.SmtpAlreadyConnected));
index 76a5f3330b5a955b62cc47d73bff4e90c1253b90..4e565d3242c7dfc9f68c7b2ae4b617124d1debb3 100644 (file)
@@ -2057,7 +2057,7 @@ namespace System {
                     ++length;
                 }
 
-                // Microsoft codereview:
+                // [....] codereview:
                 // Old Uri parser tries to figure out on a DosPath in all cases.
                 // Hence http://c:/ is treated as as DosPath without the host while it should be a host "c", port 80
                 //
@@ -2376,7 +2376,7 @@ namespace System {
             // Note we already checked on general port syntax in ParseMinimal()
 
             // If iri parsing is on with unicode chars then the end of parsed host
-            // points to m_orig string and not m_String
+            // points to m_[....] string and not m_String
 
             bool UseOrigUnicodeStrOffset = ((cF& Flags.UseOrigUncdStrOffset) != 0);
             // This should happen only once. Reset it
@@ -2555,7 +2555,7 @@ namespace System {
                     break;
 
                 case Flags.IPv6HostType:
-                    //Microsoft codereview
+                    //[....] codereview
                     // The helper will return [...] string that is not suited for Dns.Resolve()
                     host = IPv6AddressHelper.ParseCanonicalName(str, idx, ref loopback, ref scopeId);
                     break;
@@ -2593,7 +2593,7 @@ namespace System {
                     host = string.Empty;
                     break;
 
-                default: //it's a 
+                default: //it's a bug
                     throw GetException(ParsingError.BadHostName);
             }
 
@@ -2698,7 +2698,7 @@ namespace System {
         //
         private string GetEscapedParts(UriComponents uriParts) {
             // Which Uri parts are not escaped canonically ?
-            // Notice that public UriPart and private Flags must me in Sync so below code can work
+            // Notice that public UriPart and private Flags must me in [....] so below code can work
             //
             ushort  nonCanonical = (ushort)(((ushort)m_Flags & ((ushort)Flags.CannotDisplayCanonical<<7)) >> 6);
             if (InFact(Flags.SchemeNotCanonical)) {
@@ -2728,7 +2728,7 @@ namespace System {
 
         private string GetUnescapedParts(UriComponents uriParts, UriFormat formatAs) {
             // Which Uri parts are not escaped canonically ?
-            // Notice that public UriComponents and private Uri.Flags must me in Sync so below code can work
+            // Notice that public UriComponents and private Uri.Flags must me in [....] so below code can work
             //
             ushort  nonCanonical = (ushort)((ushort)m_Flags & (ushort)Flags.CannotDisplayCanonical);
 
@@ -3269,7 +3269,7 @@ namespace System {
                             cF |= Flags.SchemeNotCanonical;
                     }
                     // For an authority Uri only // after the scheme would be canonical
-                    // (compatibility 
+                    // (compatibility bug http:\\host)
                     if (((m_Flags & Flags.AuthorityFound) != 0) && (idx + i + 3 >= length || str[idx + i + 1] != '/' || 
                         str[idx + i + 2] != '/')) 
                     {
@@ -3309,7 +3309,7 @@ namespace System {
             // Parsing the Path if any
             //
 
-            // For iri parsing if we found unicode the idx has offset into m_orig string..
+            // For iri parsing if we found unicode the idx has offset into m_[....] string..
             // so restart parsing from there and make m_Info.Offset.Path as m_string.length
 
             idx = m_Info.Offset.Path;
@@ -4145,8 +4145,8 @@ namespace System {
             {
                 //No user info for a Basic hostname
                 flags &= ~Flags.HasUserInfo;
-                // Some schemes do not allow HostType = Basic (plus V1 almost never understands this cause of a 
-
+                // Some schemes do not allow HostType = Basic (plus V1 almost never understands this cause of a bug)
+                //
                 if(syntax.InFact(UriSyntaxFlags.AllowAnyOtherHost))
                 {
                     flags |= Flags.BasicHostType;
@@ -4192,7 +4192,7 @@ namespace System {
                         if (iriParsing && hasUnicode
                             && StaticNotAny(flags, Flags.HostUnicodeNormalized)){
                             // Normalize any other host
-                            String user = new string(pString, startOtherHost, startOtherHost - end);
+                            String user = new string(pString, startOtherHost, end - startOtherHost);
                             try
                             {
                                 newHost += user.Normalize(NormalizationForm.FormC);
@@ -4546,8 +4546,8 @@ namespace System {
             int dosPathIdx = SecuredPathIndex;
 
             // Note that unescaping and then escapig back is not transitive hence not safe.
-            // We are vulnerable due to the way the UserEscaped flag is processed (see NDPWhidbey#10612 
-
+            // We are vulnerable due to the way the UserEscaped flag is processed (see NDPWhidbey#10612 bug).
+            // Try to unescape only needed chars.
             if (formatAs == UriFormat.UriEscaped)
             {
                 if (InFact(Flags.ShouldBeCompressed))
@@ -5287,7 +5287,7 @@ namespace System {
         [Obsolete("The method has been deprecated. It is not used by the system. http://go.microsoft.com/fwlink/?linkid=14202")]
         protected virtual void Parse()
         {
-            // Microsoft cr: In V1-Everett this method if suppressed by the derived class
+            // [....] cr: In V1-Everett this method if suppressed by the derived class
             // would lead to an unconstructed Uri instance.
             // It does not make any sense and violates Fxcop on calling a virtual method in the ctor.
             // Should be deprecated and removed asap.
@@ -5296,7 +5296,7 @@ namespace System {
         [Obsolete("The method has been deprecated. It is not used by the system. http://go.microsoft.com/fwlink/?linkid=14202")]
         protected virtual void Canonicalize()
         {
-            // Microsoft cr: In V1-Everett this method if suppressed by the derived class
+            // [....] cr: In V1-Everett this method if suppressed by the derived class
             // would lead to supressing of a path compression
             // It does not make much sense and violates Fxcop on calling a virtual method in the ctor.
             // Should be deprecated and removed asap.
@@ -5305,7 +5305,7 @@ namespace System {
         [Obsolete("The method has been deprecated. It is not used by the system. http://go.microsoft.com/fwlink/?linkid=14202")]
         protected virtual void Escape()
         {
-            // Microsoft cr: In V1-Everett this method if suppressed by the derived class
+            // [....] cr: In V1-Everett this method if suppressed by the derived class
             // would lead to the same effect as dontEscape=true.
             // It does not make much sense and violates Fxcop on calling a virtual method in the ctor.
             // Should be deprecated and removed asap.
@@ -5321,7 +5321,7 @@ namespace System {
         [Obsolete("The method has been deprecated. Please use GetComponents() or static UnescapeDataString() to unescape a Uri component or a string. http://go.microsoft.com/fwlink/?linkid=14202")]
         protected virtual string Unescape(string path) {
 
-            // Microsoft cr: This method is dangerous since it gives path unescaping control
+            // [....] cr: This method is dangerous since it gives path unescaping control
             // to the derived class without any permission demand.
             // Should be deprecated and removed asap.
 
@@ -5335,7 +5335,7 @@ namespace System {
         [Obsolete("The method has been deprecated. Please use GetComponents() or static EscapeUriString() to escape a Uri component or a string. http://go.microsoft.com/fwlink/?linkid=14202")]
         protected static string EscapeString(string str) {
 
-            // Microsoft cr: This method just does not make sense sa protected
+            // [....] cr: This method just does not make sense sa protected
             // It should go public static asap
 
             if ((object)str == null) {
@@ -5358,7 +5358,7 @@ namespace System {
         [Obsolete("The method has been deprecated. It is not used by the system. http://go.microsoft.com/fwlink/?linkid=14202")]
         protected virtual void CheckSecurity()  {
 
-            // Microsoft cr: This method just does not make sense
+            // [....] cr: This method just does not make sense
             // Should be deprecated and removed asap.
 
             if (Scheme == "telnet") {
@@ -5382,7 +5382,7 @@ namespace System {
         [Obsolete("The method has been deprecated. It is not used by the system. http://go.microsoft.com/fwlink/?linkid=14202")]
         protected virtual bool IsReservedCharacter(char character) {
 
-            // Microsoft cr: This method just does not make sense as virtual protected
+            // [....] cr: This method just does not make sense as virtual protected
             // It should go public static asap
 
             return (character == ';')
@@ -5410,7 +5410,7 @@ namespace System {
         [Obsolete("The method has been deprecated. It is not used by the system. http://go.microsoft.com/fwlink/?linkid=14202")]
         protected static bool IsExcludedCharacter(char character) {
 
-            // Microsoft cr: This method just does not make sense sa protected
+            // [....] cr: This method just does not make sense sa protected
             // It should go public static asap
 
             //
@@ -5453,7 +5453,7 @@ namespace System {
         [Obsolete("The method has been deprecated. It is not used by the system. http://go.microsoft.com/fwlink/?linkid=14202")]
         protected virtual bool IsBadFileSystemCharacter(char character) {
 
-            // Microsoft cr: This method just does not make sense sa protected virtual
+            // [....] cr: This method just does not make sense sa protected virtual
             // It should go public static asap
 
             return (character < 0x20)
index d0b35ecf613c8dc73daa5f3fecdd433d4ef26a03..fc878fbddd35810311d6ee151aa4b08056ee0e3f 100644 (file)
@@ -422,8 +422,8 @@ namespace System {
                                             UriSyntaxFlags.AllowEmptyHost |
                                             UriSyntaxFlags.AllowUncHost |       //
                                             UriSyntaxFlags.AllowAnInternetHost |
-                                            // UriSyntaxFlags.AllowAnyOtherHost | // V1.1 has a 
-
+                                            // UriSyntaxFlags.AllowAnyOtherHost | // V1.1 has a bug and so does not support this case
+                                            //
                                             UriSyntaxFlags.PathIsRooted |
                                             UriSyntaxFlags.AllowDOSPath |        //
                                             UriSyntaxFlags.ConvertPathSlashes |  // V1 compat, it will always convert backslashes
index dbe508857e28a4aa385b43e978decebd58bcb66d..8256cb7a4173c51eb316c17db828fbc612348ec8 100644 (file)
@@ -445,7 +445,7 @@ namespace System.Text.RegularExpressions {
         ///       Unescapes any escaped characters in the input string.
         ///    </para>
         /// </devdoc>
-        [SuppressMessage("Microsoft.Naming","CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="Unescape", Justification="Microsoft: already shipped since v1 - can't fix without causing a breaking change")]
+        [SuppressMessage("Microsoft.Naming","CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="Unescape", Justification="[....]: already shipped since v1 - can't fix without causing a breaking change")]
         public static String Unescape(String str) {
             if (str==null)
                 throw new ArgumentNullException("str");
@@ -1200,7 +1200,7 @@ namespace System.Text.RegularExpressions {
 #endif
         [ResourceExposure(ResourceScope.Machine)] // The AssemblyName is interesting.
         [ResourceConsumption(ResourceScope.Machine)]
-        [SuppressMessage("Microsoft.Naming","CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="assemblyname", Justification="Microsoft: already shipped since v1 - can't fix without causing a breaking change")]
+        [SuppressMessage("Microsoft.Naming","CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="assemblyname", Justification="[....]: already shipped since v1 - can't fix without causing a breaking change")]
         public static void CompileToAssembly(RegexCompilationInfo[] regexinfos, AssemblyName assemblyname) {
         
             CompileToAssemblyInternal(regexinfos, assemblyname, null, null);
@@ -1213,7 +1213,7 @@ namespace System.Text.RegularExpressions {
 #endif
         [ResourceExposure(ResourceScope.Machine)] // The AssemblyName is interesting.
         [ResourceConsumption(ResourceScope.Machine)]
-        [SuppressMessage("Microsoft.Naming","CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="assemblyname", Justification="Microsoft: already shipped since v1 - can't fix without causing a breaking change")]
+        [SuppressMessage("Microsoft.Naming","CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="assemblyname", Justification="[....]: already shipped since v1 - can't fix without causing a breaking change")]
         public static void CompileToAssembly(RegexCompilationInfo[] regexinfos, AssemblyName assemblyname, CustomAttributeBuilder[] attributes) {
             CompileToAssemblyInternal(regexinfos, assemblyname, attributes, null);
         }
@@ -1223,7 +1223,7 @@ namespace System.Text.RegularExpressions {
 #endif
         [ResourceExposure(ResourceScope.Machine)]
         [ResourceConsumption(ResourceScope.Machine)]
-        [SuppressMessage("Microsoft.Naming","CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="assemblyname", Justification="Microsoft: already shipped since v1 - can't fix without causing a breaking change")]
+        [SuppressMessage("Microsoft.Naming","CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId="assemblyname", Justification="[....]: already shipped since v1 - can't fix without causing a breaking change")]
         public static void CompileToAssembly(RegexCompilationInfo[] regexinfos, AssemblyName assemblyname, CustomAttributeBuilder[] attributes, String resourceFile) {
             CompileToAssemblyInternal(regexinfos, assemblyname, attributes, resourceFile);
         }
index 36b5e8e07d05783a3d9d37e0fb9a52159f50f398..69fcc04a1eafc1b79bb484f7ad806712e6adc5a2 100644 (file)
@@ -212,7 +212,7 @@ namespace System.Text.RegularExpressions {
          */
         [ResourceExposure(ResourceScope.Machine)]
         [ResourceConsumption(ResourceScope.Machine)]
-        [SuppressMessage("Microsoft.Security","CA2106:SecureAsserts", Justification="Microsoft: SECREVIEW : Regex only generates string manipulation, so this is OK")]
+        [SuppressMessage("Microsoft.Security","CA2106:SecureAsserts", Justification="[....]: SECREVIEW : Regex only generates string manipulation, so this is OK")]
         internal static void CompileToAssembly(RegexCompilationInfo[] regexes, AssemblyName an, CustomAttributeBuilder[] attribs, String resourceFile) {
             RegexTypeCompiler c = new RegexTypeCompiler(an, attribs, resourceFile);
         
@@ -3038,7 +3038,7 @@ namespace System.Text.RegularExpressions {
 
         [ResourceExposure(ResourceScope.Machine)]
         [ResourceConsumption(ResourceScope.Machine)]
-        [SuppressMessage("Microsoft.Security","CA2106:SecureAsserts", Justification="Microsoft: SECREVIEW : Regex only generates string manipulation, so this is OK")]
+        [SuppressMessage("Microsoft.Security","CA2106:SecureAsserts", Justification="[....]: SECREVIEW : Regex only generates string manipulation, so this is OK")]
         internal RegexTypeCompiler(AssemblyName an, CustomAttributeBuilder[] attribs, String resourceFile) {
             // SECREVIEW : Regex only generates string manipulation, so this is
             //           : ok.
diff --git a/mcs/class/referencesource/System/security/system/security/Authentication/ExtendedProtection/TokenBinding.cs b/mcs/class/referencesource/System/security/system/security/Authentication/ExtendedProtection/TokenBinding.cs
new file mode 100644 (file)
index 0000000..c58653b
--- /dev/null
@@ -0,0 +1,37 @@
+//------------------------------------------------------------------------------
+// <copyright file="TokenBinding.cs" company="Microsoft">
+//     Copyright (c) Microsoft Corporation.  All rights reserved.
+// </copyright>                                                                
+//------------------------------------------------------------------------------
+
+namespace System.Security.Authentication.ExtendedProtection
+{
+
+    public enum TokenBindingType
+    {
+        Provided = 0,
+        Referred = 1
+    };
+
+    public class TokenBinding
+    {
+        internal TokenBinding(TokenBindingType bindingType, byte[] rawData)
+        {
+            BindingType = bindingType;
+            _rawTokenBindingId = rawData;
+        }
+
+        private byte[] _rawTokenBindingId = null;
+
+        public byte[] GetRawTokenBindingId()
+        {
+            return (_rawTokenBindingId != null) ? (byte[])_rawTokenBindingId.Clone() : null;
+        }
+
+        public TokenBindingType BindingType
+        {
+            get;
+            private set;
+        }
+    }
+} 
index 82a6a95184ee44d52b9b219a1b9488273801b2e1..45e47aac1d7e4106cadcd0c6927908a3732846f3 100644 (file)
@@ -488,6 +488,9 @@ namespace System.Security.Cryptography {
 
         internal const uint CERT_TRUST_IS_OFFLINE_REVOCATION               = 0x01000000;
         internal const uint CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY            = 0x02000000;
+        internal const uint CERT_TRUST_IS_EXPLICIT_DISTRUST                = 0x04000000;
+        internal const uint CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT      = 0x08000000;
+        internal const uint CERT_TRUST_HAS_WEAK_SIGNATURE                  = 0x00100000;
 
         // These can be applied to chains only
         internal const uint CERT_TRUST_IS_PARTIAL_CHAIN                    = 0x00010000;
@@ -997,12 +1000,15 @@ namespace System.Security.Cryptography {
         internal const int CRYPT_E_REVOCATION_OFFLINE   = unchecked((int) 0x80092013); // The revocation function was unable to check revocation 
                                                                                        // because the revocation server was offline.        
         internal const int CRYPT_E_ASN1_BADTAG          = unchecked((int) 0x8009310B); // ASN1 bad tag value met.
+        internal const int CERTSRV_E_WEAK_SIGNATURE_OR_KEY = unchecked((int) 0x80094016); // A signature algorithm or public key length does not meet the system's
+                                                                                       // minimum required strength.
 
         internal const int TRUST_E_CERT_SIGNATURE       = unchecked((int) 0x80096004); // The signature of the certificate can not be verified.
         internal const int TRUST_E_BASIC_CONSTRAINTS    = unchecked((int) 0x80096019); // A certificate's basic constraint extension has not been observed.        
         internal const int CERT_E_EXPIRED               = unchecked((int) 0x800B0101); // A required certificate is not within its validity period when verifying against 
                                                                                        // the current system clock or the timestamp in the signed file.        
         internal const int CERT_E_VALIDITYPERIODNESTING = unchecked((int) 0x800B0102); // The validity periods of the certification chain do not nest correctly.        
+        internal const int CERT_E_CRITICAL              = unchecked((int) 0x800B0105); // A certificate contains an unknown extension that is marked 'critical'.
         internal const int CERT_E_UNTRUSTEDROOT         = unchecked((int) 0x800B0109); // A certificate chain processed, but terminated in a root 
                                                                                        // certificate which is not trusted by the trust provider.
         internal const int CERT_E_CHAINING              = unchecked((int) 0x800B010A); // An internal certificate chaining error has occurred.        
@@ -1012,6 +1018,7 @@ namespace System.Security.Cryptography {
                                                                                        // is not trusted with the current policy settings.        
         internal const int CERT_E_REVOCATION_FAILURE    = unchecked((int) 0x800B010E); // The revocation process could not continue - the certificate(s) could not be checked.        
         internal const int CERT_E_WRONG_USAGE           = unchecked((int) 0x800B0110); // The certificate is not valid for the requested usage.        
+        internal const int TRUST_E_EXPLICIT_DISTRUST    = unchecked((int) 0x800B0111); // The certificate was explicitly marked as untrusted by the user.
         internal const int CERT_E_INVALID_POLICY        = unchecked((int) 0x800B0113); // The certificate has invalid policy.        
         internal const int CERT_E_INVALID_NAME          = unchecked((int) 0x800B0114); // The certificate has an invalid name. The name is not included 
                                                                                        // in the permitted list or is explicitly excluded.
index e2c94390214aedd1a83e886567e03653675647c6..beb480dc946a01a5aa1fdccd1733516cc8970344 100644 (file)
@@ -45,7 +45,10 @@ namespace System.Security.Cryptography.X509Certificates {
         CtlNotSignatureValid            = 0x00040000,
         CtlNotValidForUsage             = 0x00080000,
         OfflineRevocation               = 0x01000000,
-        NoIssuanceChainPolicy           = 0x02000000
+        NoIssuanceChainPolicy           = 0x02000000,
+        ExplicitDistrust                = 0x04000000,
+        HasNotSupportedCriticalExtension = 0x08000000,
+        HasWeakSignature                = 0x00100000,
     }
 
     public struct X509ChainStatus {
@@ -298,151 +301,26 @@ namespace System.Security.Cryptography.X509Certificates {
             }
 
             X509ChainStatus[] chainStatus = new X509ChainStatus[count];
-
             int index = 0;
-            if ((dwStatus & CAPI.CERT_TRUST_IS_NOT_SIGNATURE_VALID) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.TRUST_E_CERT_SIGNATURE);
-                chainStatus[index].Status = X509ChainStatusFlags.NotSignatureValid;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_IS_NOT_SIGNATURE_VALID;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.TRUST_E_CERT_SIGNATURE);
-                chainStatus[index].Status = X509ChainStatusFlags.CtlNotSignatureValid;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_IS_UNTRUSTED_ROOT) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_UNTRUSTEDROOT);
-                chainStatus[index].Status = X509ChainStatusFlags.UntrustedRoot;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_IS_UNTRUSTED_ROOT;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_IS_PARTIAL_CHAIN) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_CHAINING);
-                chainStatus[index].Status = X509ChainStatusFlags.PartialChain;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_IS_PARTIAL_CHAIN;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_IS_REVOKED) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CRYPT_E_REVOKED);
-                chainStatus[index].Status = X509ChainStatusFlags.Revoked;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_IS_REVOKED;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_IS_NOT_VALID_FOR_USAGE) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_WRONG_USAGE);
-                chainStatus[index].Status = X509ChainStatusFlags.NotValidForUsage;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_IS_NOT_VALID_FOR_USAGE; 
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_WRONG_USAGE);
-                chainStatus[index].Status = X509ChainStatusFlags.CtlNotValidForUsage;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_IS_NOT_TIME_VALID) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_EXPIRED);
-                chainStatus[index].Status = X509ChainStatusFlags.NotTimeValid;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_IS_NOT_TIME_VALID;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_CTL_IS_NOT_TIME_VALID) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_EXPIRED);
-                chainStatus[index].Status = X509ChainStatusFlags.CtlNotTimeValid;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_CTL_IS_NOT_TIME_VALID;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_INVALID_NAME_CONSTRAINTS) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_INVALID_NAME);
-                chainStatus[index].Status = X509ChainStatusFlags.InvalidNameConstraints;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_INVALID_NAME_CONSTRAINTS;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_INVALID_NAME);
-                chainStatus[index].Status = X509ChainStatusFlags.HasNotSupportedNameConstraint;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_INVALID_NAME);
-                chainStatus[index].Status = X509ChainStatusFlags.HasNotDefinedNameConstraint;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_INVALID_NAME);
-                chainStatus[index].Status = X509ChainStatusFlags.HasNotPermittedNameConstraint;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_INVALID_NAME);
-                chainStatus[index].Status = X509ChainStatusFlags.HasExcludedNameConstraint;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_INVALID_POLICY_CONSTRAINTS) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_INVALID_POLICY);
-                chainStatus[index].Status = X509ChainStatusFlags.InvalidPolicyConstraints;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_INVALID_POLICY_CONSTRAINTS;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_INVALID_POLICY);
-                chainStatus[index].Status = X509ChainStatusFlags.NoIssuanceChainPolicy;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY;
-            }
 
-            if ((dwStatus & CAPI.CERT_TRUST_INVALID_BASIC_CONSTRAINTS) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.TRUST_E_BASIC_CONSTRAINTS);
-                chainStatus[index].Status = X509ChainStatusFlags.InvalidBasicConstraints;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_INVALID_BASIC_CONSTRAINTS;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_IS_NOT_TIME_NESTED) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CERT_E_VALIDITYPERIODNESTING);
-                chainStatus[index].Status = X509ChainStatusFlags.NotTimeNested;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_IS_NOT_TIME_NESTED;
-            }
-
-            if ((dwStatus & CAPI.CERT_TRUST_REVOCATION_STATUS_UNKNOWN) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CRYPT_E_NO_REVOCATION_CHECK);
-                chainStatus[index].Status = X509ChainStatusFlags.RevocationStatusUnknown;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_REVOCATION_STATUS_UNKNOWN;
-            }
+            foreach (X509ChainErrorMapping mapping in s_x509ChainErrorMappings)
+            {
+                if ((dwStatus & mapping.Win32Flag) != 0)
+                {
+                    Debug.Assert(index < chainStatus.Length);
 
-            if ((dwStatus & CAPI.CERT_TRUST_IS_OFFLINE_REVOCATION) != 0) {
-                chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(CAPI.CRYPT_E_REVOCATION_OFFLINE);
-                chainStatus[index].Status = X509ChainStatusFlags.OfflineRevocation;
-                index++;
-                dwStatus &= ~CAPI.CERT_TRUST_IS_OFFLINE_REVOCATION;
+                    chainStatus[index].StatusInformation = X509Utils.GetSystemErrorString(mapping.Win32ErrorCode);
+                    chainStatus[index].Status = mapping.ChainStatusFlag;
+                    index++;
+                    dwStatus &= ~mapping.Win32Flag;
+                }
             }
 
             int shiftCount = 0;
             for (uint bits = dwStatus; bits != 0; bits = bits >> 1) {
                 if ((bits & 0x1) != 0) {
+                    Debug.Assert(index < chainStatus.Length);
+
                     chainStatus[index].Status = (X509ChainStatusFlags) (1 << shiftCount);
                     chainStatus[index].StatusInformation = SR.GetString(SR.Unknown_Error);
                     index++;
@@ -450,6 +328,8 @@ namespace System.Security.Cryptography.X509Certificates {
                 shiftCount++;
             }
 
+            Debug.Assert(index == chainStatus.Length);
+
             return chainStatus;
         }
 
@@ -525,5 +405,46 @@ namespace System.Security.Cryptography.X509Certificates {
 
             return CAPI.S_OK;
         }
+
+        private struct X509ChainErrorMapping
+        {
+            public readonly uint Win32Flag;
+            public readonly int Win32ErrorCode;
+            public readonly X509ChainStatusFlags ChainStatusFlag;
+
+            public X509ChainErrorMapping(uint win32Flag, int win32ErrorCode, X509ChainStatusFlags chainStatusFlag)
+            {
+                Win32Flag = win32Flag;
+                Win32ErrorCode = win32ErrorCode;
+                ChainStatusFlag = chainStatusFlag;
+            }
+        }
+
+        private static readonly X509ChainErrorMapping[] s_x509ChainErrorMappings = new[]
+        {
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_IS_NOT_SIGNATURE_VALID, CAPI.TRUST_E_CERT_SIGNATURE, X509ChainStatusFlags.NotSignatureValid),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID, CAPI.TRUST_E_CERT_SIGNATURE, X509ChainStatusFlags.CtlNotSignatureValid),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_IS_UNTRUSTED_ROOT, CAPI.CERT_E_UNTRUSTEDROOT, X509ChainStatusFlags.UntrustedRoot),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_IS_PARTIAL_CHAIN, CAPI.CERT_E_CHAINING, X509ChainStatusFlags.PartialChain),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_IS_REVOKED, CAPI.CRYPT_E_REVOKED, X509ChainStatusFlags.Revoked),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_IS_NOT_VALID_FOR_USAGE, CAPI.CERT_E_WRONG_USAGE, X509ChainStatusFlags.NotValidForUsage),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE, CAPI.CERT_E_WRONG_USAGE, X509ChainStatusFlags.CtlNotValidForUsage),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_IS_NOT_TIME_VALID, CAPI.CERT_E_EXPIRED, X509ChainStatusFlags.NotTimeValid),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_CTL_IS_NOT_TIME_VALID, CAPI.CERT_E_EXPIRED, X509ChainStatusFlags.CtlNotTimeValid),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_INVALID_NAME_CONSTRAINTS, CAPI.CERT_E_INVALID_NAME, X509ChainStatusFlags.InvalidNameConstraints),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT, CAPI.CERT_E_INVALID_NAME, X509ChainStatusFlags.HasNotSupportedNameConstraint),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT, CAPI.CERT_E_INVALID_NAME, X509ChainStatusFlags.HasNotDefinedNameConstraint),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT, CAPI.CERT_E_INVALID_NAME, X509ChainStatusFlags.HasNotPermittedNameConstraint),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT, CAPI.CERT_E_INVALID_NAME, X509ChainStatusFlags.HasExcludedNameConstraint),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_INVALID_POLICY_CONSTRAINTS, CAPI.CERT_E_INVALID_POLICY, X509ChainStatusFlags.InvalidPolicyConstraints),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY, CAPI.CERT_E_INVALID_POLICY, X509ChainStatusFlags.NoIssuanceChainPolicy),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_INVALID_BASIC_CONSTRAINTS, CAPI.TRUST_E_BASIC_CONSTRAINTS, X509ChainStatusFlags.InvalidBasicConstraints),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_IS_NOT_TIME_NESTED, CAPI.CERT_E_VALIDITYPERIODNESTING, X509ChainStatusFlags.NotTimeNested),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_REVOCATION_STATUS_UNKNOWN, CAPI.CRYPT_E_NO_REVOCATION_CHECK, X509ChainStatusFlags.RevocationStatusUnknown),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_IS_OFFLINE_REVOCATION, CAPI.CRYPT_E_REVOCATION_OFFLINE, X509ChainStatusFlags.OfflineRevocation),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_IS_EXPLICIT_DISTRUST, CAPI.TRUST_E_EXPLICIT_DISTRUST, X509ChainStatusFlags.ExplicitDistrust),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT, CAPI.CERT_E_CRITICAL, X509ChainStatusFlags.HasNotSupportedCriticalExtension),
+            new X509ChainErrorMapping(CAPI.CERT_TRUST_HAS_WEAK_SIGNATURE, CAPI.CERTSRV_E_WEAK_SIGNATURE_OR_KEY, X509ChainStatusFlags.HasWeakSignature),
+        };
     }
 }
index 1c8e71440db50159d988da901715385cb53d0809..faa25dd5ebe87f3a3d51b3afc1c092717df10c4a 100644 (file)
@@ -150,8 +150,8 @@ namespace System.Diagnostics {
         [MonitoringDescription(SR.LogLog)]
         [DefaultValue("")]
         [SettingsBindable(true)]
-        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "Microsoft: Safe, oldLog.machineName doesn't change")]
-        [SuppressMessage("Microsoft.Security", "CA2106:SecureAsserts", Justification = "Microsoft: By design, see justification above assert")]
+        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "[....]: Safe, oldLog.machineName doesn't change")]
+        [SuppressMessage("Microsoft.Security", "CA2106:SecureAsserts", Justification = "[....]: By design, see justification above assert")]
         public string Log {
             get {
                 return m_underlyingEventLog.Log;
@@ -181,7 +181,7 @@ namespace System.Diagnostics {
         [MonitoringDescription(SR.LogMachineName)]
         [DefaultValue(".")]
         [SettingsBindable(true)]
-        [SuppressMessage("Microsoft.Security", "CA2106:SecureAsserts", Justification = "Microsoft: By design, see justification above assert")]
+        [SuppressMessage("Microsoft.Security", "CA2106:SecureAsserts", Justification = "[....]: By design, see justification above assert")]
         public string MachineName {
             get {
                 return m_underlyingEventLog.MachineName;
@@ -292,8 +292,8 @@ namespace System.Diagnostics {
         [MonitoringDescription(SR.LogSource)]
         [DefaultValue("")]
         [SettingsBindable(true)]
-        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "Microsoft: Safe, oldLog.machineName doesn't change")]
-        [SuppressMessage("Microsoft.Security", "CA2106:SecureAsserts", Justification = "Microsoft: By design, see justification above assert")]
+        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "[....]: Safe, oldLog.machineName doesn't change")]
+        [SuppressMessage("Microsoft.Security", "CA2106:SecureAsserts", Justification = "[....]: By design, see justification above assert")]
         public string Source {
             get {
                 return m_underlyingEventLog.Source;
@@ -1069,7 +1069,7 @@ namespace System.Diagnostics {
         /// </devdoc>
         [ResourceExposure(ResourceScope.None)]
         [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
-        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "Microsoft: Safe, machineName doesn't change")]
+        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "[....]: Safe, machineName doesn't change")]
         internal static bool SourceExists(string source, string machineName, bool wantToCreate) {
             if (!SyntaxCheck.CheckMachineName(machineName)) {
                 throw new ArgumentException(SR.GetString(SR.InvalidParameter, "machineName", machineName));
index cd19c7cc6b72ff2fc7f1053f705c10f146f59795..931faaa6aff089013d31cd0254388debb4192e1f 100644 (file)
@@ -426,7 +426,7 @@ namespace System.Diagnostics {
             if ( percentIdx < 0 )
                 return msg;     // no '%' at all
 
-            int startCopyIdx     = 0;        // start idx of last orig msg chars to copy
+            int startCopyIdx     = 0;        // start idx of last [....] msg chars to copy
             int msgLength   = msg.Length;
             StringBuilder buf = new StringBuilder();
             string paramDLLNames = GetMessageLibraryNames("ParameterMessageFile");
index c095b36003aa2c166801442023a2844e273aca7f..589a1d493f0855cf14ed4c08177eed72a82cef78 100644 (file)
@@ -9,7 +9,7 @@ namespace System.Diagnostics {
     using System;
     using System.Collections;
    
-    //Consider, V2, Microsoft: Is there a way to implement Contains
+    //Consider, V2, [....]: Is there a way to implement Contains
     //and IndexOf, can we live withouth this part of the ReadOnly
     //collection pattern?
     /// <devdoc>
index d43d0a8dfc32ba02c127c4b27438e2a725c73dda..754ae4cb098ca97d1974e578bbbb5edfc78d4ea1 100644 (file)
@@ -160,7 +160,7 @@ namespace System.Diagnostics {
         /// <devdoc>
         ///    <para>[To be supplied.]</para>
         /// </devdoc>
-        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "Microsoft: Safe, oldLog.machineName doesn't change")]
+        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "[....]: Safe, oldLog.machineName doesn't change")]
         public EventLogInternal(string logName, string machineName, string source, EventLog parent) {
             //look out for invalid log names
             if (logName == null)
@@ -316,7 +316,7 @@ namespace System.Diagnostics {
             }
         }
 
-        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "Microsoft: Safe, machineName doesn't change")]
+        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "[....]: Safe, machineName doesn't change")]
         private string GetLogName(string currentMachineName)
         {
             if ((logName == null || logName.Length == 0) && sourceName != null && sourceName.Length!=0) {
@@ -347,7 +347,7 @@ namespace System.Diagnostics {
         }
 
         [ComVisible(false)]
-        [SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Justification = "Microsoft: MaximumKilobytes is the name of this property.")]
+        [SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly", Justification = "[....]: MaximumKilobytes is the name of this property.")]
         public long MaximumKilobytes {
             get {
                 string currentMachineName = this.machineName;
@@ -653,7 +653,7 @@ namespace System.Diagnostics {
             Close(this.machineName);
         }
 
-        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "Microsoft: Safe, currentMachineName doesn't change")]
+        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "[....]: Safe, currentMachineName doesn't change")]
         private void Close(string currentMachineName) {
             EventLogPermission permission = new EventLogPermission(EventLogPermissionAccess.Write, currentMachineName);
             permission.Demand();
@@ -730,7 +730,7 @@ namespace System.Diagnostics {
                     i = lastSeenCount;
                 }
 
-                // NOTE, Microsoft: We have a double loop here so that we access the
+                // NOTE, [....]: We have a double loop here so that we access the
                 // EntryCount property as infrequently as possible. (It may be expensive
                 // to get the property.) Even though there are two loops, they will together
                 // only execute as many times as (final value of EntryCount) - lastSeenCount.
@@ -897,7 +897,7 @@ namespace System.Diagnostics {
                                                       oldestEntry+idx, buf, buf.Length, out bytesRead, out minBytesNeeded);
                 if (!success) {
                     error = Marshal.GetLastWin32Error();
-                    // NOTE, Microsoft: ERROR_PROC_NOT_FOUND used to get returned, but I think that
+                    // NOTE, [....]: ERROR_PROC_NOT_FOUND used to get returned, but I think that
                     // was because I was calling GetLastError directly instead of GetLastWin32Error.
                     // Making the buffer bigger and trying again seemed to work. I've removed the check
                     // for ERROR_PROC_NOT_FOUND because I don't think it's necessary any more, but
@@ -1090,7 +1090,7 @@ namespace System.Diagnostics {
                                                   cache, cache.Length, out bytesRead, out minBytesNeeded);
             if (!success) {
                 int error = Marshal.GetLastWin32Error();
-                // NOTE, Microsoft: ERROR_PROC_NOT_FOUND used to get returned, but I think that
+                // NOTE, [....]: ERROR_PROC_NOT_FOUND used to get returned, but I think that
                 // was because I was calling GetLastError directly instead of GetLastWin32Error.
                 // Making the buffer bigger and trying again seemed to work. I've removed the check
                 // for ERROR_PROC_NOT_FOUND because I don't think it's necessary any more, but
@@ -1270,7 +1270,7 @@ namespace System.Diagnostics {
         /// </devdoc>
         [ResourceExposure(ResourceScope.None)]
         [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
-        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "Microsoft: Safe, machineName doesn't change")]
+        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "[....]: Safe, machineName doesn't change")]
         private void OpenForRead(string currentMachineName) {
             Debug.WriteLineIf(CompModSwitches.EventLog.TraceVerbose, "EventLog::OpenForRead");
 
@@ -1286,13 +1286,13 @@ namespace System.Diagnostics {
             if (logname == null || logname.Length==0)
                 throw new ArgumentException(SR.GetString(SR.MissingLogProperty));
 
-            if (!EventLog.Exists(logname, currentMachineName) )        // do not open non-existing Log [Microsoft]
+            if (!EventLog.Exists(logname, currentMachineName) )        // do not open non-existing Log [[....]]
                 throw new InvalidOperationException( SR.GetString(SR.LogDoesNotExists, logname, currentMachineName) );
             //Check environment before calling api
             SharedUtils.CheckEnvironment();
 
             // Clean up cache variables.
-            // [Microsoft] The initilizing code is put here to guarantee, that first read of events
+            // [[....]] The initilizing code is put here to guarantee, that first read of events
             //           from log file will start by filling up the cache buffer.
             lastSeenEntry = 0;
             lastSeenPos = 0;
@@ -1506,7 +1506,7 @@ namespace System.Diagnostics {
 
         [ResourceExposure(ResourceScope.None)]
         [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
-        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "Microsoft: Safe, machineName doesn't change")]
+        [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity", Justification = "[....]: Safe, machineName doesn't change")]
         private void VerifyAndCreateSource(string sourceName, string currentMachineName) {
             if (boolFlags[Flag_sourceVerified]) 
                 return;
index 43272662e97ea12213fc7599c2c8b415cf01e63d..6f59b8c232030619dbb08ae0e03164b6854b7a0a 100644 (file)
@@ -2062,6 +2062,9 @@ namespace System.Diagnostics {
 
 #if !FEATURE_PAL                    
                 if (startInfo.UserName.Length != 0) {                              
+                    if (startInfo.Password != null && startInfo.PasswordInClearText != null)
+                            throw new ArgumentException(SR.GetString(SR.CantSetDuplicatePassword));
+
                     NativeMethods.LogonFlags logonFlags = (NativeMethods.LogonFlags)0;                    
                     if( startInfo.LoadUserProfile) {
                         logonFlags = NativeMethods.LogonFlags.LOGON_WITH_PROFILE;
@@ -2069,10 +2072,12 @@ namespace System.Diagnostics {
 
                     IntPtr password = IntPtr.Zero;
                     try {
-                        if( startInfo.Password == null) {
+                        if( startInfo.Password != null) {
+                            password = Marshal.SecureStringToCoTaskMemUnicode(startInfo.Password);
+                        } else if( startInfo.PasswordInClearText != null) {
+                            password = Marshal.StringToCoTaskMemUni(startInfo.PasswordInClearText);
+                        } else {
                             password = Marshal.StringToCoTaskMemUni(String.Empty);
-                            } else {
-                            password = Marshal.SecureStringToCoTaskMemUnicode(startInfo.Password);                        
                         }
 
                         RuntimeHelpers.PrepareConstrainedRegions();
index 9c9d5e9e41e9e8c12b76bead27329801973e2b16..711debb3acb14484f7ea0470f526d26e7447a024 100644 (file)
@@ -49,7 +49,7 @@ namespace System.Diagnostics {
             if (NativeMethods.GetWindow(new HandleRef(this, handle), NativeMethods.GW_OWNER) != (IntPtr)0 || !NativeMethods.IsWindowVisible(new HandleRef(this, handle)))
                 return false;
             
-            // Microsoft: should we use no window title to mean not a main window? (task man does)
+            // [....]: should we use no window title to mean not a main window? (task man does)
             
             /*
             int length = NativeMethods.GetWindowTextLength(handle) * 2;
index b57851de6584646858cc2384bc2d3fd72c7a4c29..36cd9ec91133be07c03ef5015d8611255d1fb4af 100644 (file)
@@ -49,6 +49,7 @@ namespace System.Diagnostics {
         string userName;
         string domain;
         SecureString password;
+        string passwordInClearText;
         bool loadUserProfile;
 #endif //FEATURE_PAL
         bool redirectStandardInput = false;
@@ -336,6 +337,12 @@ namespace System.Diagnostics {
             get { return password; } 
             set { password = value; }
         }
+
+        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+        public string PasswordInClearText {
+            get { return passwordInClearText; }
+            set { passwordInClearText = value; }
+        }
         
         [NotifyParentProperty(true)]
         public string Domain {
index 5b664f60ca1730600c6e3ceb1b09eb7e82660205..b1c4a8601956bf45bcc31657a5b8ca51ec4e7735 100644 (file)
@@ -112,7 +112,7 @@ namespace System.Diagnostics {
         [ResourceExposure(ResourceScope.Machine)]
         [ResourceConsumption(ResourceScope.Machine)]
         [SecurityPermission(SecurityAction.Assert, ControlPrincipal = true)]
-        [SuppressMessage("Microsoft.Security", "CA2106:SecureAsserts", Justification = "Microsoft: We pass fixed data into sec.AddAccessRule")]
+        [SuppressMessage("Microsoft.Security", "CA2106:SecureAsserts", Justification = "[....]: We pass fixed data into sec.AddAccessRule")]
         internal static void EnterMutexWithoutGlobal(string mutexName, ref Mutex mutex) {
             bool createdNew;
             MutexSecurity sec = new MutexSecurity();
index 290f10ab21b5e71d8c1816bcbd59e0230e37593a..122d79c94b22a0fe9dc12a867d20b3951dce4538 100644 (file)
@@ -93,7 +93,7 @@ namespace System.Timers {
         /// is able
         /// to raise events at a defined interval.</para>
         /// </devdoc>
-        //Microsoft - The default value by design is false, don't change it.
+        //[....] - The default value by design is false, don't change it.
         [Category("Behavior"), TimersDescription(SR.TimerEnabled), DefaultValue(false)]
         public bool Enabled {
             get {
index 1d776627f7791dcd43fe281bb644c3f5ce6573fe..50f2bac56df83f542b4d276a85de675f7c5346f5 100644 (file)
@@ -25,5 +25,19 @@ namespace System
         }
 #endregion
 
+#region System.Net.WebSockets.HttpListenerAsyncEventArgs
+        private static int _allocateOverlappedOnDemand;
+        internal const string AllocateOverlappedOnDemandName = @"Switch.System.Net.WebSockets.HttpListenerAsyncEventArgs.AllocateOverlappedOnDemand";
+
+        public static bool AllocateOverlappedOnDemand
+        {
+            [MethodImpl(MethodImplOptions.AggressiveInlining)]
+            get
+            {
+                return LocalAppContext.GetCachedSwitchValue(AllocateOverlappedOnDemandName, ref _allocateOverlappedOnDemand);
+            }
+        }
+#endregion
+
     }
 }
index 2fd3054cda6b4a00bacbee8af4a34fd15328b8ba..6b95ed1f66ec24d57305b18754017190eb4e9c46 100644 (file)
@@ -109,9 +109,9 @@ namespace System.IO.Compression {
             }
 
 #if DEBUG
-            // For debugging, wipe the window clean, so that if there is a 
-
-
+            // For debugging, wipe the window clean, so that if there is a bug in our hashing,
+            // the hash pointers will now point to locations which are not valid for the hash value
+            // (and will be caught by our ASSERTs).
             Array.Clear(window, FastEncoderWindowSize, window.Length - FastEncoderWindowSize);  
 #endif
 
index 358baee38d2217898e76949de397de3133ec416f..02e2d444528ad33b1b50070868c4ff10589e0881 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: SerialStream
 **
-** Purpose: Class for enabling low-level sync and async control over a serial
+** Purpose: Class for enabling low-level [....] and async control over a serial
 **        : communications resource.
 **
 ** Date: August, 2002
index 3463d51e88a084675ec8dad34c1f0df004e9837d..57e621ef4dc236a6f6494162b1503992d4089fa2 100644 (file)
@@ -227,7 +227,7 @@ namespace System.Media {
         /// <include file='doc\SoundPlayer.uex' path='docs/doc[@for="SoundPlayer.Load"]/*' />
         public void Load() {
             // if we have a file there is nothing to load - we just pass the file to the PlaySound function
-            // if we have a stream, then we start loading the stream sync
+            // if we have a stream, then we start loading the stream [....]
             //
             if (uri != null && uri.IsFile){
                 Debug.Assert(stream == null, "we can't have a stream and a path at the same time");
@@ -245,7 +245,7 @@ namespace System.Media {
 
         [SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity")] // FileIOPermission based on URI path, but path isn't gonna change during scope of Demand
         private void LoadAndPlay(int flags) {
-            // 
+            // bug 16794: when the user does not specify a sound location nor a stream, play Beep
             if (String.IsNullOrEmpty(soundLocation) && stream == null) {
                 SystemSounds.Beep.Play();
                 return;
index 53f2bf210e2c5b400e4dddc2e9dfe919941a3a70..ba8dac3666946905648e8661c4cd6399e5c8f415 100644 (file)
@@ -7,7 +7,7 @@
 //
 // BlockingCollection.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A class that implements the bounding and blocking functionality while abstracting away
 // the underlying storage mechanism. This file also contains BlockingCollection's 
@@ -499,7 +499,7 @@ namespace System.Collections.Concurrent
                     try
                     {
                         //The token may have been canceled before the collection had space available, so we need a check after the wait has completed.
-                        //This fixes 
+                        //This fixes bug #702328, case 2 of 2.
                         cancellationToken.ThrowIfCancellationRequested();
                         addingSucceeded = m_collection.TryAdd(item);
                     }
@@ -736,7 +736,7 @@ namespace System.Collections.Concurrent
                 try
                 {
                     //The token may have been canceled before an item arrived, so we need a check after the wait has completed.
-                    //This fixes 
+                    //This fixes bug #702328, case 1 of 2.
                     cancellationToken.ThrowIfCancellationRequested();
 
                     //If an item was successfully removed from the underlying collection.
index 7e0903cc2d59a94d145f11b71bd14154eee2036d..bc6669c501f4028c78efc6602b62b86c5dc5d182 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ConcurrentBag.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // 
 //An unordered collection that allows duplicates and that provides add and get operations.
index 25c0ed599a65d6726dd7c81d57547cdbae00b369..35db6d1f9c7f728dfbb0fdfe79f4c0af35dbf03a 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Barrier.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A barrier allows multiple tasks to cooperatively work on some algorithm in parallel.
 // A group of tasks cooperate by moving through a series of phases, where each in the group signals it has arrived at
index 083ec90e753670e02b60faf01110337351abc34f..2a0102e8c57e11c654e1996120fd29cb04c76fdb 100644 (file)
@@ -10,7 +10,7 @@
 //             an attached property by setting it on the static accessor
 //             for the attachable property).
 //
-//  Created:   04/28/2005 Microsoft
+//  Created:   04/28/2005 [....]
 //
 //------------------------------------------------------------------------
 
index 423b3f8e05068664b416005ad1050fef5c63f662..f66e29706a89e0ba0a91148a1b06582494b4489e 100644 (file)
@@ -487,11 +487,11 @@ namespace Microsoft.Build.Tasks.Xaml
                     XamlXmlWriterSettings xamlSettings = new XamlXmlWriterSettings() { CloseOutput = true };
                     
                     // Process EmbeddedResourceXaml to remove xml:space="preserve"
-                    // due to a 
-
-
-
-
+                    // due to a bug in XamlXmlWriter. XamlXmlWriter throws
+                    // if there are duplicate xml:space attributes.
+                    // It is ok to remove the xml:space attribute
+                    // as the XamlXmlWriter would add it in the next step
+                    // if needed.
                     RemoveXamlSpaceAttribute(classData);
 
                     using (XamlReader reader = classData.EmbeddedResourceXaml.GetReader())
index e498bca02150fc02ba5c84b582036deb316d7144..891e2e8cdbe07929c2ae30143ec8d71509280637 100644 (file)
@@ -44,9 +44,9 @@ namespace Microsoft.Build.Tasks.Xaml
         public Assembly ResolveLocalProjectReferences(object sender, ResolveEventArgs args)
         {
             // Currently we are return the assembly just by matching the short name
-            // of the assembly. Filed 
-
-
+            // of the assembly. Filed bug 172138 to figure out whether we need
+            // to load the exact matching(version, culture, public key matches)
+            // assembly.
 
             AssemblyName targetAssemblyName = new AssemblyName(args.Name);
             string targetName = targetAssemblyName.Name;
index eca2861417dc52dcdb77270aa50f5573a5492528..262070c90bea1e0329932bc626701131e8992d05 100644 (file)
@@ -20,7 +20,7 @@ namespace Microsoft.Runtime.Hosting {
         [ThreadStatic]
         private static IClrStrongName s_StrongName;
 
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         private static IClrStrongName StrongName {
             [System.Security.SecurityCritical]
             get {
@@ -33,7 +33,7 @@ namespace Microsoft.Runtime.Hosting {
             }
         }
 
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         private static IClrStrongNameUsingIntPtr StrongNameUsingIntPtr {
             [System.Security.SecurityCritical]
             get {
@@ -42,20 +42,20 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static int StrongNameErrorInfo() {
             return ts_LastStrongNameHR;
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         [SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "Microsoft.Runtime.Hosting.IClrStrongNameUsingIntPtr.StrongNameFreeBuffer(System.IntPtr)", Justification = "StrongNameFreeBuffer returns void but the new runtime wrappers return an HRESULT.")]
         public static void StrongNameFreeBuffer(IntPtr pbMemory) {
             StrongNameUsingIntPtr.StrongNameFreeBuffer(pbMemory);
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameGetPublicKey(string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob, out IntPtr ppbPublicKeyBlob, out int pcbPublicKeyBlob) {
             int hr = StrongNameUsingIntPtr.StrongNameGetPublicKey(pwzKeyContainer, pbKeyBlob, cbKeyBlob, out ppbPublicKeyBlob, out pcbPublicKeyBlob);
             if( hr < 0 )
@@ -70,7 +70,7 @@ namespace Microsoft.Runtime.Hosting {
 
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameKeyDelete(string pwzKeyContainer) {
             int hr = StrongName.StrongNameKeyDelete(pwzKeyContainer);
             if( hr < 0 )
@@ -82,7 +82,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameKeyGen(string pwzKeyContainer, int dwFlags, out IntPtr ppbKeyBlob, out int pcbKeyBlob) {
             int hr = StrongName.StrongNameKeyGen(pwzKeyContainer, dwFlags, out ppbKeyBlob, out pcbKeyBlob);
             if( hr < 0 )
@@ -96,7 +96,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameKeyInstall(string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob) {
             int hr = StrongNameUsingIntPtr.StrongNameKeyInstall(pwzKeyContainer, pbKeyBlob, cbKeyBlob);
             if( hr < 0 )
@@ -108,7 +108,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob) {
             IntPtr ppbSignatureBlob = IntPtr.Zero;
             int cbSignatureBlob = 0;
@@ -117,7 +117,7 @@ namespace Microsoft.Runtime.Hosting {
 
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob, ref IntPtr ppbSignatureBlob, out int pcbSignatureBlob) {
             int hr = StrongNameUsingIntPtr.StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ppbSignatureBlob, out pcbSignatureBlob);
             if( hr < 0 )
@@ -130,7 +130,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureSize(IntPtr pbPublicKeyBlob, int cbPublicKeyBlob, out int pcbSize) {
             int hr = StrongNameUsingIntPtr.StrongNameSignatureSize(pbPublicKeyBlob, cbPublicKeyBlob, out pcbSize);
             if( hr < 0 )
@@ -143,7 +143,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureVerification(string pwzFilePath, int dwInFlags, out int pdwOutFlags) {
             int hr = StrongName.StrongNameSignatureVerification(pwzFilePath, dwInFlags, out pdwOutFlags);
             if( hr < 0 )
@@ -156,7 +156,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureVerificationEx(string pwzFilePath, bool fForceVerification, out bool pfWasVerified) {
             int hr = StrongName.StrongNameSignatureVerificationEx(pwzFilePath, fForceVerification, out pfWasVerified);
             if( hr < 0 )
@@ -169,7 +169,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameTokenFromPublicKey(IntPtr pbPublicKeyBlob, int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, out int pcbStrongNameToken) {
             int hr = StrongNameUsingIntPtr.StrongNameTokenFromPublicKey(pbPublicKeyBlob, cbPublicKeyBlob, out ppbStrongNameToken, out pcbStrongNameToken);
             if( hr < 0 )
@@ -183,7 +183,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureSize(byte[] bPublicKeyBlob, int cbPublicKeyBlob, out int pcbSize) {
             int hr = StrongName.StrongNameSignatureSize(bPublicKeyBlob, cbPublicKeyBlob, out pcbSize);
             if( hr < 0 )
@@ -195,7 +195,7 @@ namespace Microsoft.Runtime.Hosting {
             return true;
         }
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameTokenFromPublicKey(byte[] bPublicKeyBlob, int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, out int pcbStrongNameToken) {
             int hr = StrongName.StrongNameTokenFromPublicKey(bPublicKeyBlob, cbPublicKeyBlob, out ppbStrongNameToken, out pcbStrongNameToken);
             if( hr < 0 )
@@ -209,7 +209,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameGetPublicKey(string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob, out IntPtr ppbPublicKeyBlob, out int pcbPublicKeyBlob) {
             int hr = StrongName.StrongNameGetPublicKey(pwzKeyContainer, bKeyBlob, cbKeyBlob, out ppbPublicKeyBlob, out pcbPublicKeyBlob);
             if( hr < 0 )
@@ -223,7 +223,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameKeyInstall(string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob) {
             int hr = StrongName.StrongNameKeyInstall(pwzKeyContainer, bKeyBlob, cbKeyBlob);
             if( hr < 0 )
@@ -235,7 +235,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob) {
             IntPtr ppbSignatureBlob = IntPtr.Zero;
             int cbSignatureBlob = 0;
@@ -243,7 +243,7 @@ namespace Microsoft.Runtime.Hosting {
         }
 
         [System.Security.SecurityCritical]
-        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Microsoft: This file is included in a lot of projects some of which only use a subset of the functions.")]
+        [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")]
         public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob, ref IntPtr ppbSignatureBlob, out int pcbSignatureBlob) {
             int hr = StrongName.StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, bKeyBlob, cbKeyBlob, ppbSignatureBlob, out pcbSignatureBlob);
             if( hr < 0 )
index 96525f5cdab62b2548a138630a429960363c1aa0..8b8d0b1cbe558771a15a215959135dfebce3b4ea 100644 (file)
@@ -60,7 +60,7 @@ namespace Microsoft.Win32 {
             typeof(DBNull),
         };
 
-       // Keep these numbers in sync w/ the above array.
+       // Keep these numbers in [....] w/ the above array.
         private const int CV_OBJECT=0x12;
         
         #endregion
index 4036eeb91b8c6ebe61be870974a259837d6b867a..e8473a436b75bce8be2678a197dd516e7d57562a 100644 (file)
@@ -6,7 +6,7 @@
 //
 // File: SafeRegistryHandle.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Implements Microsoft.Win32.SafeHandles.SafeRegistryHandle
 //
index 5b442f2549e112a53251f8c90d7ce8edd98f8796..2a2561b05e80aa5274b0cf0f50c16fc31fed3c5f 100644 (file)
@@ -7,7 +7,7 @@
 //
 // AggregateException.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Public type to communicate multiple failures to an end-user.
 //
index b24498b4258f85e4a78e285840f4098f32ef70f5..f6f74fa468c756670e015b848803d7a6eba7b190 100644 (file)
@@ -28,7 +28,9 @@ namespace System
 #endif
             get
             {
-                return AppDomain.CurrentDomain.BaseDirectory;
+                // The value of APP_CONTEXT_BASE_DIRECTORY key has to be a string and it is not allowed to be any other type. 
+                // Otherwise the caller will get invalid cast exception
+                return (string) AppDomain.CurrentDomain.GetData("APP_CONTEXT_BASE_DIRECTORY") ?? AppDomain.CurrentDomain.BaseDirectory;
             }
         }
 
index 124f9f45a4f77638dfef32a75c0f1ae622f5ef18..8a130a0f34285449d7dc69480eff98e832bf3edd 100644 (file)
@@ -25,7 +25,6 @@ namespace System
         /// We have this separate method for getting the parsed elements out of the TargetFrameworkName so we can
         /// more easily support this on other platforms.
         /// </summary>
-        [System.Security.SecuritySafeCritical]
         private static void ParseTargetFrameworkName(out string identifier, out string profile, out int version)
         {
             string targetFrameworkMoniker = AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName;
index edb3f9e9368136ebf9cc28c894c8f87705197f99..41de248149aca737ed394495240cb81e11056750 100644 (file)
@@ -8,7 +8,7 @@
 //
 // Lazy.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // --------------------------------------------------------------------------------------
 //
@@ -431,7 +431,7 @@ namespace System
                     }
                     else if (factory == ALREADY_INVOKED_SENTINEL)
                     {
-                        // Another thread raced with us and beat us to successfully invoke the factory.
+                        // Another thread ----d with us and beat us to successfully invoke the factory.
                         return null;
                     }
                     boxed = new Boxed(factory());
index 897696699cdae03dc30f6de4722cb285a9822797..0d7719d224a5cc564d4059a538c91201946c6082 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: AppDomain
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Domains represent an application within the runtime. Objects can 
@@ -3740,7 +3740,7 @@ namespace System {
                 for (int i=0; i<propertyNames.Length; i++)
                 {
                     
-                    if(propertyNames[i]=="APPBASE") // make sure in sync with Fusion
+                    if(propertyNames[i]=="APPBASE") // make sure in [....] with Fusion
                     {
                         if(propertyValues[i]==null)
                             throw new ArgumentNullException("APPBASE");
@@ -4155,7 +4155,7 @@ namespace System {
                                 // in via the default domain properties.  That restriction could be lifted
                                 // in a future release, at which point this assert should be removed.
                                 // 
-                                // This should be kept in sync with the real externally facing filter code
+                                // This should be kept in [....] with the real externally facing filter code
                                 // in CorHost2::SetPropertiesForDefaultAppDomain
                                 BCLDebug.Assert(false, "Unexpected default domain property");
                             }
index ec913e797032bbbf0f42765b182ef11c88ac6ff3..52abb4ce80c63f0c955f531015a993dd958fb386 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** File: AppDomainAttributes
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: For AppDomain-related custom attributes.
index b0518f6edfc8b526e831d903241bc57b3d635e06..6c21cf0bad07d35c385cd33df1e7bf9cf446e350 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: AppDomainUnloadedException
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception class for attempt to access an unloaded AppDomain
index 56b67d05cb7d39f8328193c0cd6fbd74ff8183ca..9edb731f19e4ac03de69edda899314f13af14b74 100644 (file)
@@ -13,7 +13,7 @@ namespace System {
 
     // This class will not be marked serializable
     // Note: This type must have the same layout as the CLR's VARARGS type in CLRVarArgs.h.
-    // It also contains an inline SigPointer data structure - must keep those fields in sync.
+    // It also contains an inline SigPointer data structure - must keep those fields in [....].
     [StructLayout(LayoutKind.Sequential)]
     public struct ArgIterator
     {
index 3c678360dfc5ead76993bd3253a40779452a4054..7c767692fef9860facfa00e85ad8d5930fb954df 100644 (file)
@@ -618,7 +618,7 @@ namespace System {
 
         // We impose limits on maximum array lenght in each dimension to allow efficient 
         // implementation of advanced range check elimination in future.
-        // Keep in sync with vm\gcscan.cpp and HashHelpers.MaxPrimeArrayLength.
+        // Keep in [....] with vm\gcscan.cpp and HashHelpers.MaxPrimeArrayLength.
         // The constants are defined in this method: inline SIZE_T MaxArrayLength(SIZE_T componentSize) from gcscan
         // We have different max sizes for arrays with elements of size 1 for backwards compatibility
         internal const int MaxArrayLength = 0X7FEFFFFF;
index 19783eb44a9e2c217ef152cb32809b83c54e0920..442639c09b475f27fb60ed83e56f15d5df83a896 100644 (file)
@@ -12,7 +12,7 @@
 **
 ** 
 ===========================================================*/
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 namespace System {
     
index 6c9df903f78da1f6b2dd4ed9b070695c52b5efa4..1f3b6ff37580c623929cdcdb36fe93c470dccdfd 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: CannotUnloadAppDomainException
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception class for failed attempt to unload an AppDomain.
index 793a0d9f1c451cb5ade413603c591b07da730493..318794b7fb80544a989b38daa3a009965392baf2 100644 (file)
@@ -7,7 +7,7 @@
 //
 // CDSCollectionETWBCLProvider.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A helper class for firing ETW events related to the Coordination Data Structure 
 // collection types. This provider is used by CDS collections in both mscorlib.dll 
index 997f2871b936867f22fe0e2de0a8080e602956b4..df32ff729b0d3c54af1c348d34743bf6da093f57 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*============================================================
 **
 ** Class:   ConcurrentDictionary
index 9a17c443642d45bf777a3e3867dea625bc1d889e..eb7aeb2d7816aca950e3eef280e61d038a90abdf 100644 (file)
@@ -9,7 +9,7 @@
 //
 // ConcurrentQueue.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A lock-free, concurrent queue primitive, and its associated debugger view type.
 //
index 8e5821f55c6f2ae071949da9526096a4795af143..dbadcc311e8c6a0e945b4898a83f990391bb6b30 100644 (file)
@@ -9,7 +9,7 @@
 //
 // ConcurrentStack.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A lock-free, concurrent stack primitive, and its associated debugger view type.
 //
index 6ed2935c8811165428ced9a51224cfe14b7c5697..d8b1a0bf1c2c2fa51906d856c7f1eb5a95a95488 100644 (file)
@@ -7,7 +7,7 @@
 //
 // IProducerConsumerCollection.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A common interface for all concurrent collections.
 //
index aaf92c0fc1964f8a0d761447608ed9d99c296dba..82419f629b674746773dd34cfba24a237f566559 100644 (file)
@@ -7,7 +7,7 @@
 //
 // OrderablePartitioner.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // 
 //
index 095777506e4fddd5e2ce936ded549968405338d8..7b683d2473f9c39db6a1fbe384ae2b60ad8069bb 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Partitioner.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Represents a particular way of splitting a collection into multiple partitions.
 //
index 232f75d54d803bb0f936b1a039d823fc108018b2..d53dd4b80438ac7ef58c8e48f82c9647a5598604 100644 (file)
@@ -8,7 +8,7 @@
 //
 // PartitionerStatic.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A class of default partitioners for Partitioner<TSource>
 //
index 4118c5d5567f77d84b022f7df3b99aa032e7f3c4..0e7b25c8eec5ef2270f833d3acd6e2faa65156b0 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  ArrayList
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Implements a dynamically sized List as an array,
index 67acd6a0726acde0272b6798d9e59c87d2089894..dfe421f3102c0013e61eef00a2c1ee075c874c66 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: BitArray
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: The BitArray class manages a compact array of bit values.
index 9e584ea823c0ee4ebcadf2ea2f3136e7b39b390a..c6d46c1090039ca2cd6bb556991d09220dea09bc 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: CaseInsensitiveComparer
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 **
index e9d24edc98db686acf9ac5d3577555f4b7afa31d..c9a9fd5c9eb9e1c2daf99abf68331be5f30695e4 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: CaseInsensitiveHashCodeProvider
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Designed to support hashtables which require 
index 02ea374d2c30e8bf8def176c055522815a665027..52355ea4c40e522fc6e738d4bd8f0633bbe75c4f 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Collections {
index 4509457f85b548a67f59e90ab07f59a551dfffa9..89a67deff9fb541903ff23113c078b12e54c57b4 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  Comparer
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Default IComparer implementation.
index 92760855bd1873708a58d0601cacddc7436a6e65..a19337c90bfb39d1aed1868c160c631bff70a98d 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System.Diagnostics.Contracts;
index a8bfc680cfbb0ae0453a2ff5cf23038a2708961f..022cc7355c3a423cea8ba36eab05a17b309ac073 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Collections {
index 34ccbc28c0a2c95fef7f0b59bd4f190f5585079b..fe2e341487ab0e8d843a6b8def97a6c433976a71 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Interface:  DictionaryEntry
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Return Value for IDictionaryEnumerator::GetEntry
index 5fab81ba40ca9e88c157f70aabf75f818da59e1a..da84bb45fd639f640261a4de80a0679993100e51 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  EmptyReadOnlyDictionaryInternal
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: List for exceptions.
index 6fa9b12e3dc88b8e706cc9142fed7fdaed592216..961482b6515a83253d84ef04c8d5c263d9b26621 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  ArraySortHelper
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: class to sort arrays
index 46ce4866cc8e643d03cdc2ee8d29ca934235a24b..3e79915d249595002f20f323386c2fe032ba6e6a 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index ac847ec06f9be5fa9961553c524c48f2b6961651..e82dda98c3baee4d4fe010ab8149d426867e18bf 100644 (file)
@@ -9,7 +9,7 @@
 **
 ** Purpose: DebugView class for generic collections
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 =============================================================================*/
index 92b7c2ac5879a60e6b5b7a4e67d0f394e13ee191..74859fa7f48c3416eb2005a9fed4f41e1704b141 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  Dictionary
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: Generic hash table implementation
 **
index e8cb4b2e1261de6e878ce385fd25709aac3ad6ee..859bca7c684c9b9d9e723dcde86012aa620e6977 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index c8afceb3081f0315a4922322803c4c664328e03f..10477931a154a9ed1f0da3b4b40696baf3af818f 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: KeyNotFoundException
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception class for Hashtable and Dictionary.
index d6e298ee524c872694c94e2bcfd0277cdf0d96c7..24baeb3f2a561a6cf5ab4e134ba4b7b3b307bff6 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Interface:  KeyValuePair
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Generic key-value pair for dictionary enumerators.
index 8be053eebde6f73abe73b964f4b99dfbb29f2385..a5bb9e9c06df9057b61c7715ceade349c4481be1 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  List
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: Implements a generic, dynamically sized list as an 
 **          array.
index ee14bfa52bf665b9293ae8b44addc12bc32468ef..6998dde77a95eb1444e9d58758d50e7c6812d0b8 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  Hashtable
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Hash table implementation
@@ -74,58 +74,58 @@ namespace System.Collections {
     public class Hashtable : IDictionary, ISerializable, IDeserializationCallback, ICloneable {
         /*
           Implementation Notes:
-          The generic Dictionary was copied from Hashtable's source - any 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+          The generic Dictionary was copied from Hashtable's source - any bug 
+          fixes here probably need to be made to the generic Dictionary as well.
+    
+          This Hashtable uses double hashing.  There are hashsize buckets in the 
+          table, and each bucket can contain 0 or 1 element.  We a bit to mark
+          whether there's been a collision when we inserted multiple elements
+          (ie, an inserted item was hashed at least a second time and we probed 
+          this bucket, but it was already in use).  Using the collision bit, we
+          can terminate lookups & removes for elements that aren't in the hash
+          table more quickly.  We steal the most significant bit from the hash code
+          to store the collision bit.
+
+          Our hash function is of the following form:
+    
+          h(key, n) = h1(key) + n*h2(key)
+    
+          where n is the number of times we've hit a collided bucket and rehashed
+          (on this particular lookup).  Here are our hash functions:
+    
+          h1(key) = GetHash(key);  // default implementation calls key.GetHashCode();
+          h2(key) = 1 + (((h1(key) >> 5) + 1) % (hashsize - 1));
+    
+          The h1 can return any number.  h2 must return a number between 1 and
+          hashsize - 1 that is relatively prime to hashsize (not a problem if 
+          hashsize is prime).  (Knuth's Art of Computer Programming, Vol. 3, p. 528-9)
+          If this is true, then we are guaranteed to visit every bucket in exactly
+          hashsize probes, since the least common multiple of hashsize and h2(key)
+          will be hashsize * h2(key).  (This is the first number where adding h2 to
+          h1 mod hashsize will be 0 and we will search the same bucket twice).
+          
+          We previously used a different h2(key, n) that was not constant.  That is a 
+          horrifically bad idea, unless you can prove that series will never produce
+          any identical numbers that overlap when you mod them by hashsize, for all
+          subranges from i to i+hashsize, for all i.  It's not worth investigating,
+          since there was no clear benefit from using that hash function, and it was
+          broken.
+    
+          For efficiency reasons, we've implemented this by storing h1 and h2 in a 
+          temporary, and setting a variable called seed equal to h1.  We do a probe,
+          and if we collided, we simply add h2 to seed each time through the loop.
+    
+          A good test for h2() is to subclass Hashtable, provide your own implementation
+          of GetHash() that returns a constant, then add many items to the hash table.
+          Make sure Count equals the number of items you inserted.
 
+          Note that when we remove an item from the hash table, we set the key
+          equal to buckets, if there was a collision in this bucket.  Otherwise
+          we'd either wipe out the collision bit, or we'd still have an item in
+          the hash table.
 
-*/
+           -- 
+        */
         
         internal const Int32 HashPrime = 101;
         private const Int32 InitialSize = 3;
index 06aeb09750c4ce6ffe0327ac972163f63dcde903..345e2b506f456d403637adeb42f056b54b77331e 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  KeyValuePairs
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: KeyValuePairs to display items in collection class under debugger
index b24b03ba769ae83bd91c7d25965978190a1ca76e..db4fe1d05ac22e9167a11ead663937f11612a6d0 100644 (file)
@@ -8,7 +8,7 @@ using System.Diagnostics.Contracts;
 **
 ** Class:  ListDictionaryInternal
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: List for exceptions.
index 81eda7eda84229fd999ee87c794a8467520fbf07..6f8b53c88ce576bad3d03327a54b7eb1fe46764a 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Collections.ObjectModel
index 6fb1579254a1ed10a25284578a3ce78abe528248..014d889c47eff57ce7ac2cb0f9d495f615a01e94 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Collections.ObjectModel
index 30ab5372fc66069f56653543984599f6918f1500..760349f817fa41e88294afc4c0f15fbad3bd1ce9 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Collections.ObjectModel
index edfcd087341611234ada647cdf96a5c5eddb92c3..ba67a2a315446308a4b88e990ab0414c8df6f5c7 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: Queue
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: A circular-array implementation of a queue.
 **
index c83271d24b98fa8f9c021dfdf91e246a3f02f251..cf07d664e8fce2bd8844769abcf6b81ed3354d92 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Collections {
index 8cc406baf026d38adf7f9ab8603c63088c91e68a..011f33b5fb2c34d3a58665c50e1b795c33968f9e 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  SortedList
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: A sorted dictionary.
 **
index de575ffbdaef047498fc0a7d603628756888cd22..158089a62168605ced57fea6ff9c6166d6850e42 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: Stack
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: An array implementation of a stack.
 **
@@ -30,7 +30,7 @@ namespace System.Collections {
         private Object[] _array;     // Storage for stack elements
         [ContractPublicPropertyName("Count")]
         private int _size;           // Number of items in the stack.
-        private int _version;        // Used to keep enumerator in sync w/ collection.
+        private int _version;        // Used to keep enumerator in [....] w/ collection.
         [NonSerialized]
         private Object _syncRoot;
     
index e5a1aa5563b34d4081d8606d108c3b4540dbb07f..4d4252aaa226b276ca456b8eaca8759e5206c2e7 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index 3bc7e77bd0e47b0ea62b6117e8f20f954b6b8315..998b13fbd9c5e5fcf87d7f9eeef6ef6f9efe5238 100644 (file)
@@ -796,7 +796,7 @@ namespace System {
     }
 
     // These flags effect the way BindToMethodInfo and BindToMethodName are allowed to bind a delegate to a target method. Their
-    // values must be kept in sync with the definition in vm\comdelegate.h.
+    // values must be kept in [....] with the definition in vm\comdelegate.h.
     internal enum DelegateBindingFlags
     {
         StaticMethodOnly    =   0x00000001, // Can only bind to static target methods
index c737904c41a8d71ff126a9ad27483d2293b02463..8b886267bc5841be8d78a4110904c94f80b7b56c 100644 (file)
@@ -15,8 +15,8 @@ namespace System.Diagnostics {
 
     // Class which handles code asserts.  Asserts are used to explicitly protect
     // assumptions made in the code.  In general if an assert fails, it indicates 
-    // a program 
-
+    // a program bug so is immediately called to the attention of the user.
+    // Only static data members, does not need to be marked with the serializable attribute
     internal static class Assert
     {
         internal const int COR_E_FAILFAST = unchecked((int) 0x80131623);
@@ -102,13 +102,13 @@ namespace System.Diagnostics {
 #else
                 // This assert dialog will be common for code contract failures.  If a code contract failure
                 // occurs on an end user machine, we believe the right experience is to do a FailFast, which 
-                // will report this error via Watson, so someone could theoretically fix the 
-
-
-
-
-
-
+                // will report this error via Watson, so someone could theoretically fix the bug.
+                // However, in CLR v4, Environment.FailFast when a debugger is attached gives you an MDA
+                // saying you've hit a bug in the runtime or unsafe managed code, and this is most likely caused
+                // by heap corruption or a stack imbalance from COM Interop or P/Invoke.  That extremely
+                // misleading error isn't right, and we can temporarily work around this by using Environment.Exit
+                // if a debugger is attached.  The right fix is to plumb FailFast correctly through our native
+                // Watson code, adding in a TypeOfReportedError for fatal managed errors.
                 if (Debugger.IsAttached)
                     Environment._Exit(exitCode);
                 else
index e2fc7888f42deb8b1ef84375cf42fea72a745cf7..fe943007d0b75a95f31345cb423c99f0c97a17f5 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  Contract
 ** 
-** <OWNER>Microsoft,mbarnett</OWNER>
+** <OWNER>[....],mbarnett</OWNER>
 **
 ** Purpose: The contract class allows for expressing preconditions,
 ** postconditions, and object invariants about methods in source
index 64659166499609a319569117d09005381043789a..8e7ff0170e43e5eedeb21141fb4ebf7e84755b13 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  Contract
 ** 
-** <OWNER>maf,mbarnett,Microsoft</OWNER>
+** <OWNER>maf,mbarnett,[....]</OWNER>
 **
 ** Implementation details of CLR Contracts.
 **
index f08ef29f5f279832edee5153eb99e7af64e714e0..cd70bfb23e31d17556dd21495f9cf8fdb0bd5725 100644 (file)
@@ -653,7 +653,7 @@ namespace System.Diagnostics.Tracing
 
         public override object GetData(object value)
         {
-            return (Byte)value;
+            return value;
         }
     }
 
@@ -675,7 +675,7 @@ namespace System.Diagnostics.Tracing
 
         public override object GetData(object value)
         {
-            return (SByte)value;
+            return value;
         }
     }
 
@@ -697,7 +697,7 @@ namespace System.Diagnostics.Tracing
 
         public override object GetData(object value)
         {
-            return (Int16)value;
+            return value;
         }
     }
 
@@ -719,7 +719,7 @@ namespace System.Diagnostics.Tracing
 
         public override object GetData(object value)
         {
-            return (UInt16)value;
+            return value;
         }
     }
 
@@ -741,7 +741,7 @@ namespace System.Diagnostics.Tracing
 
         public override object GetData(object value)
         {
-            return (Int32)value;
+            return value;
         }
     }
 
@@ -763,7 +763,7 @@ namespace System.Diagnostics.Tracing
 
         public override object GetData(object value)
         {
-            return (UInt32)value;
+            return value;
         }
     }
 
@@ -785,7 +785,7 @@ namespace System.Diagnostics.Tracing
 
         public override object GetData(object value)
         {
-            return (Int64)value;
+            return value;
         }
     }
 
@@ -807,7 +807,7 @@ namespace System.Diagnostics.Tracing
 
         public override object GetData(object value)
         {
-            return (UInt64)value;
+            return value;
         }
     }
 
index 6d33bb5feda28a8f939496a6fcb39a198532f44b..633183d941aea353996b485c6e481eb339b35da4 100644 (file)
@@ -526,7 +526,7 @@ namespace System.Diagnostics.Tracing
         }
 
         // This callback is used to initialize the m_current AsyncLocal Variable.   
-        // Its job is to keep the ETW Activity ID (part of thread local storage) in sync
+        // Its job is to keep the ETW Activity ID (part of thread local storage) in [....]
         // with m_current.ActivityID
         void ActivityChanging(AsyncLocalValueChangedArgs<ActivityInfo> args)
         {
index 60eae4d2d7d02314fd6c24569f81dfb4d5d04c72..f8f4afe95366be499e7772c9a400f92646c59823 100644 (file)
@@ -2,7 +2,7 @@
 // <copyright file="etwprovider.cs" company="Microsoft">
 //     Copyright (c) Microsoft Corporation.  All rights reserved.
 // </copyright>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //------------------------------------------------------------------------------
 using System;
 using System.Runtime.InteropServices;
index 49652982979907b449ccf99e57f7febf6e5af65e..a1b51851218d5fc20ec8ab7c6933e742e0f6a94b 100644 (file)
@@ -1,4 +1,5 @@
 ï»¿// Copyright (c) Microsoft Corporation.  All rights reserved
+// Copyright (c) Microsoft Corporation.  All rights reserved
 // This program uses code hyperlinks available as part of the HyperAddin Visual Studio plug-in.
 // It is available from http://www.codeplex.com/hyperAddin 
 #define FEATURE_MANAGED_ETW
@@ -1181,7 +1182,7 @@ namespace System.Diagnostics.Tracing
                         }
 
 #if FEATURE_ACTIVITYSAMPLING
-                        // this code should be kept in sync with WriteEventVarargs().
+                        // this code should be kept in [....] with WriteEventVarargs().
                         SessionMask etwSessions = SessionMask.All;
                         // only compute etwSessions if there are *any* ETW filters enabled...
                         if ((ulong)m_curLiveSessions != 0)
@@ -1892,7 +1893,7 @@ namespace System.Diagnostics.Tracing
                         }
 
 #if FEATURE_ACTIVITYSAMPLING
-                        // this code should be kept in sync with WriteEventWithRelatedActivityIdCore().
+                        // this code should be kept in [....] with WriteEventWithRelatedActivityIdCore().
                         SessionMask etwSessions = SessionMask.All;
                         // only compute etwSessions if there are *any* ETW filters enabled...
                         if ((ulong)m_curLiveSessions != 0)
@@ -3298,23 +3299,27 @@ namespace System.Diagnostics.Tracing
                                 }
                                 else if (eventAttribute.Opcode == EventOpcode.Stop)
                                 {
-                                    // Find the start associated with this stop event.  We requre start to be immediately before the stop
+                                    // Find the start associated with this stop event.  We require start to be immediately before the stop
                                     int startEventId = eventAttribute.EventId - 1;
-                                    Contract.Assert(0 <= startEventId);                // Since we reserve id 0, we know that id-1 is <= 0
-                                    EventMetadata startEventMetadata = eventData[startEventId];
-
-                                    // If you remove the Stop and add a Start does that name match the Start Event's Name?
-                                    // Ideally we would throw an error 
-                                    string taskName = eventName.Substring(0, eventName.Length - s_ActivityStopSuffix.Length); // Remove the Stop suffix to get the task name
-                                    if (startEventMetadata.Descriptor.Opcode == (byte)EventOpcode.Start &&
-                                        string.Compare(startEventMetadata.Name, 0, taskName, 0, taskName.Length) == 0 &&
-                                        string.Compare(startEventMetadata.Name, taskName.Length, s_ActivityStartSuffix, 0, Math.Max(startEventMetadata.Name.Length - taskName.Length, s_ActivityStartSuffix.Length)) == 0)
+                                    if (eventData != null && startEventId < eventData.Length)    
                                     {
-
-                                        // Make the stop event match the start event
-                                        eventAttribute.Task = (EventTask)startEventMetadata.Descriptor.Task;
+                                        Contract.Assert(0 <= startEventId);                // Since we reserve id 0, we know that id-1 is <= 0
+                                        EventMetadata startEventMetadata = eventData[startEventId];
+
+                                        // If you remove the Stop and add a Start does that name match the Start Event's Name?
+                                        // Ideally we would throw an error 
+                                        string taskName = eventName.Substring(0, eventName.Length - s_ActivityStopSuffix.Length); // Remove the Stop suffix to get the task name
+                                        if (startEventMetadata.Descriptor.Opcode == (byte)EventOpcode.Start &&
+                                            string.Compare(startEventMetadata.Name, 0, taskName, 0, taskName.Length) == 0 &&
+                                            string.Compare(startEventMetadata.Name, taskName.Length, s_ActivityStartSuffix, 0, Math.Max(startEventMetadata.Name.Length - taskName.Length, s_ActivityStartSuffix.Length)) == 0)
+                                        {
+
+                                            // Make the stop event match the start event
+                                            eventAttribute.Task = (EventTask)startEventMetadata.Descriptor.Task;
+                                            noTask = false;
+                                        }
                                     }
-                                    else if ((flags & EventManifestOptions.Strict) != 0)        // Throw an error if we can compatibly.   
+                                    if (noTask && (flags & EventManifestOptions.Strict) != 0)        // Throw an error if we can compatibly.   
                                         throw new ArgumentException(Environment.GetResourceString("EventSource_StopsFollowStarts"));
                                 }
                             }
@@ -3551,8 +3556,14 @@ namespace System.Diagnostics.Tracing
                 manifest.ManifestError(Environment.GetResourceString("EventSource_EventIdReused", evtName, evtId, eventData[evtId].Name), true);
             }
 
+            // We give a task to things if they don't have one.  
+            Contract.Assert(eventAttribute.Task != EventTask.None || eventAttribute.Opcode != EventOpcode.Info);     
             for (int idx = 0; idx < eventData.Length; ++idx)
             {
+                // skip unused Event IDs. 
+                if (eventData[idx].Name == null)
+                    continue;
+                
                 if (eventData[idx].Descriptor.Task == (int)eventAttribute.Task && eventData[idx].Descriptor.Opcode == (int)eventAttribute.Opcode)
                 {
                     manifest.ManifestError(Environment.GetResourceString("EventSource_TaskOpcodePairReused",
@@ -4237,7 +4248,7 @@ namespace System.Diagnostics.Tracing
         // to throw a COMPLUS_BOOT_EXCEPTION.   The guideline we give is that you must unregister
         // such callbacks on process shutdown or appdomain so that unmanaged code will never 
         // do this.  This is what this callback is for.  
-        // See 
+        // See bug 724140 for more
         private static void DisposeOnShutdown(object sender, EventArgs e)
         {
             foreach (var esRef in s_EventSources)
@@ -4656,7 +4667,7 @@ namespace System.Diagnostics.Tracing
         {
             get
             {
-                if ((uint)EventId >= (uint)m_eventSource.m_eventData.Length)
+                if (EventId < 0)
                     return EventLevel.LogAlways;
                 return (EventLevel)m_eventSource.m_eventData[EventId].Descriptor.Level;
             }
index f20eaa19b110b3be2ba8b3f6bc20ede2bf02948d..fbd51c70fa17aece9e69299e471f4f30d1a0570c 100644 (file)
@@ -6,8 +6,8 @@
 //
 // ResourcesEtwProvider.cs
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Managed event source for things that can version with MSCORLIB.  
 //
index 9c94d4195df0030aea5d6d020cd78e84fe58d513..5e9b986bd7bc2cf44a807d73fc62271aa1e881e0 100644 (file)
@@ -164,12 +164,12 @@ namespace System {
                         return;
                     }
                     rh.infinitelyRecursingCount++;
-                    // This is often a 
-
-
-
-
-
+                    // This is often a bug in the BCL, security, NLS+ code,
+                    // or the loader somewhere.  However, this could also
+                    // be a setup problem - check whether mscorlib & 
+                    // clr.dll are both of the same build flavor.  Also, user 
+                    // code in the resource lookup process (like an assembly 
+                    // resolve event or custom CultureInfo) might potentially cause issues.
 
                     // Note: our infrastructure for reporting this exception will again cause resource lookup.
                     // This is the most direct way of dealing with that problem.
index bae8755d5582328bad26ebc5d177b78f503e52ac..c1e9a3fad7d4d76b6f395d43bb9204ceff338032 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // ==--==
 /*=============================================================================
index 6e928d5170ba7bc5407e6d41d3f8499b860dfbf1..49322834614ef4699fe5b7a35468cf7505f248bc 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 /*=============================================================================
 **
index 5eb368bacf6437d5794cb4b4066c017ad31bd1a7..cdcbe04a2da0e57bfbad64315d17b6fb678f3462 100644 (file)
@@ -13,7 +13,7 @@ namespace System.Globalization {
     //
     ////////////////////////////////////////////////////////////////////////////
     // Modern Persian calendar is a solar observation based calendar. Each new year begins on the day when the vernal equinox occurs before noon.
-    // The epoch is the date of the vernal equinox prior to the epoch of the Islamic calendar (Microsoft 19, 622 Julian or Microsoft 22, 622 Gregorian)
+    // The epoch is the date of the vernal equinox prior to the epoch of the Islamic calendar ([....] 19, 622 Julian or [....] 22, 622 Gregorian)
 
     // There is no Persian year 0. Ordinary years have 365 days. Leap years have 366 days with the last month (Esfand) gaining the extra day.
     /*
index 9b0ca90b55f8861676ca4dfbbdc8919ddcaf38e2..44840fdca6f0bf20bc5dd6eaf14fb2e3f622f8b1 100644 (file)
@@ -19,7 +19,7 @@ namespace System.Globalization {
     // , 46, 8, 20, 3, 1999) in the Gregorian calendar. An  implementation of
     // Calendar can map any DateTime value to such an n-tuple and vice versa. The
     // DateTimeFormat class can map between such n-tuples and a textual
-    // representation such as "8:46 AM Microsoft 20th 1999 AD".
+    // representation such as "8:46 AM [....] 20th 1999 AD".
     //
     // Most calendars identify a year which begins the current era. There may be any
     // number of previous eras. The Calendar class identifies the eras as enumerated
index 31fb7d6d25671ad2a351334ce3e324b595b5a7bd..dbeaab726be544d272a9dc382e78d524e5612d4c 100644 (file)
@@ -24,7 +24,7 @@ namespace System.Globalization
     //            properties are available without locales using CalendarData.GetCalendar(int)
 
     // StructLayout is needed here otherwise compiler can re-arrange the fields.
-    // We have to keep this in-sync with the definition in calendardata.h
+    // We have to keep this in-[....] with the definition in calendardata.h
     //
     // WARNING WARNING WARNING
     //
index ee33b115b159f2560db4d04dc0c265a4879d9ff3..b128980d0536918623b94ff41d56db064e5cc04b 100644 (file)
@@ -55,7 +55,7 @@ namespace System.Globalization
     //
 
     // StructLayout is needed here otherwise compiler can re-arrange the fields.
-    // We have to keep this in-sync with the definition in comnlsinfo.h
+    // We have to keep this in-[....] with the definition in comnlsinfo.h
     //
     // WARNING WARNING WARNING
     //
@@ -1186,24 +1186,10 @@ namespace System.Globalization
                 if (this.sLocalizedDisplayName == null)
                 {
 #if !FEATURE_CORECLR
-                    if (this.IsSupplementalCustomCulture)
+                    String resourceKey = "Globalization.ci_" + this.sName;
+                    if (IsResourcePresent(resourceKey))
                     {
-                        if (this.IsNeutralCulture)
-                        {
-                            this.sLocalizedDisplayName = this.SNATIVELANGUAGE;
-                        }
-                        else
-                        {
-                            this.sLocalizedDisplayName = this.SNATIVEDISPLAYNAME;
-                        }
-                    }
-                    else
-                    {
-                        String resourceKey = "Globalization.ci_" + this.sName;
-                        if (IsResourcePresent(resourceKey))
-                        {
-                            this.sLocalizedDisplayName = Environment.GetResourceString(resourceKey);
-                        }
+                        this.sLocalizedDisplayName = Environment.GetResourceString(resourceKey);
                     }
 #endif
                     // If it hasn't been found (Windows 8 and up), fallback to the system
@@ -1323,7 +1309,7 @@ namespace System.Globalization
 #if !FEATURE_CORECLR
                         if (IsIncorrectNativeLanguageForSinhala())
                         {
-                            // work around 
+                            // work around bug in Windows 7 for native name of Sinhala
                             this.sNativeDisplayName ="\x0dc3\x0dd2\x0d82\x0dc4\x0dbd (\x0DC1\x0DCA\x200D\x0DBB\x0DD3\x0020\x0DBD\x0D82\x0D9A\x0DCF)";
                         }
                         else
@@ -1452,7 +1438,7 @@ namespace System.Globalization
 #if !FEATURE_CORECLR
                     if (IsIncorrectNativeLanguageForSinhala())
                     {
-                        // work around 
+                        // work around bug in Windows 7 for native language of Sinhala
                         this.sNativeLanguage = "\x0dc3\x0dd2\x0d82\x0dc4\x0dbd";
                     }
                     else
@@ -1525,17 +1511,10 @@ namespace System.Globalization
                 if (this.sLocalizedCountry == null)
                 {
 #if !FEATURE_CORECLR
-                    if (this.IsSupplementalCustomCulture)
-                    {
-                        this.sLocalizedCountry = SNATIVECOUNTRY;
-                    }
-                    else
+                    String resourceKey = "Globalization.ri_" + this.SREGIONNAME;
+                    if (IsResourcePresent(resourceKey))
                     {
-                        String resourceKey = "Globalization.ri_" + this.SREGIONNAME;
-                        if (IsResourcePresent(resourceKey))
-                        {
-                            this.sLocalizedCountry = Environment.GetResourceString(resourceKey);
-                        }
+                        this.sLocalizedCountry = Environment.GetResourceString(resourceKey);
                     }
 #endif
                     // If it hasn't been found (Windows 8 and up), fallback to the system
index b3cf1c0cb2ec3ba310be348343e29e3c650bffbc..07c0f14721d76f828197bd52c0b3375392634e8f 100644 (file)
@@ -14,7 +14,7 @@
 //            as well as methods for common operations such as printing
 //            dates and sorting strings.
 //
-//  Date:     Microsoft 31, 1999
+//  Date:     [....] 31, 1999
 //
 //
 //  !!!! NOTE WHEN CHANGING THIS CLASS !!!!
index 9553307f73bb58d6558ef58f59771a9f40b869ec..4b29fb1f5828f1880abd4ec8ab5b62857c9dd5db 100644 (file)
@@ -709,11 +709,11 @@ namespace System {
 #if FEATURE_CORECLR
                     offset = TimeSpan.Zero;
 #else // FEATURE_CORECLR
-                    // This code path points to a 
-
-
-
-
+                    // This code path points to a bug in user code. It would make sense to return a 0 offset in this case.
+                    // However, because it was only possible to detect this in Whidbey, there is user code that takes a 
+                    // dependency on being serialize a UTC DateTime using the 'z' format, and it will work almost all the
+                    // time if it is offset by an incorrect conversion to local time when parsed. Therefore, we need to 
+                    // explicitly emit the local time offset, which we can do by removing the UTC flag.
                     InvalidFormatForUtc(format, dateTime);
                     dateTime = DateTime.SpecifyKind(dateTime, DateTimeKind.Local);
                     offset = TimeZoneInfo.GetLocalUtcOffset(dateTime, TimeZoneInfoOptions.NoThrowOnInvalidTime);
index 5ff5059ac69f0d4e6fd7f896e83bfa83e02af8d6..da422367d637dc6a26c15d3e0a8941355ac41088 100644 (file)
@@ -1,4 +1,4 @@
-// ==++==
+// ==++==
 //
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 //
@@ -699,6 +699,7 @@ new DS[] { DS.ERROR, DS.TX_NNN,  DS.TX_NNN,  DS.TX_NNN,  DS.ERROR,   DS.ERROR,
                                 case TokenType.SEP_Date:
                                     dtok.dtt     = DTT.YearDateSep;
                                     break;
+
                                 case TokenType.SEP_Time:
                                     if (!raw.hasSameDateAndTimeSeparators)
                                     {
@@ -711,6 +712,7 @@ new DS[] { DS.ERROR, DS.TX_NNN,  DS.TX_NNN,  DS.TX_NNN,  DS.ERROR,   DS.ERROR,
                                     // we are sure we are not parsing time.
                                     dtok.dtt = DTT.YearDateSep;
                                     break;
+
                                 case TokenType.SEP_DateOrOffset:
                                     // The separator is either a date separator or the start of a time zone offset. If the token will complete the date then
                                     // process just the number and roll back the index so that the outer loop can attempt to parse the time zone offset.
@@ -816,7 +818,7 @@ new DS[] { DS.ERROR, DS.TX_NNN,  DS.TX_NNN,  DS.TX_NNN,  DS.ERROR,   DS.ERROR,
                             raw.AddNumber(dtok.num);
                             break;                            
                         case TokenType.SEP_Time:
-                            if (raw.hasSameDateAndTimeSeparators &&
+                            if (raw.hasSameDateAndTimeSeparators && 
                                 (dps == DS.D_Y || dps == DS.D_YN || dps == DS.D_YNd || dps == DS.D_YM || dps == DS.D_YMd))
                             {
                                 // we are parsing a date and we have the time separator same as date separator, so we mark the token as date separator
@@ -2424,23 +2426,34 @@ new DS[] { DS.ERROR, DS.TX_NNN,  DS.TX_NNN,  DS.TX_NNN,  DS.ERROR,   DS.ERROR,
                         }
                     }
 
-                    if (raw.hasSameDateAndTimeSeparators && (dtok.dtt == DTT.YearEnd || dtok.dtt == DTT.YearSpace || dtok.dtt == DTT.YearDateSep))
+                    if (raw.hasSameDateAndTimeSeparators)
                     {
-                        // When time and date separators are same and we are hitting a year number while the first parsed part of the string was recognized 
-                        // as part of time (and not a date) DS.T_Nt, DS.T_NNt then change the state to be a date so we try to parse it as a date instead
-                        if (dps == DS.T_Nt)
+                        if (dtok.dtt == DTT.YearEnd || dtok.dtt == DTT.YearSpace || dtok.dtt == DTT.YearDateSep)
                         {
-                            dps = DS.D_Nd;
+                            // When time and date separators are same and we are hitting a year number while the first parsed part of the string was recognized 
+                            // as part of time (and not a date) DS.T_Nt, DS.T_NNt then change the state to be a date so we try to parse it as a date instead
+                            if (dps == DS.T_Nt)
+                            {
+                                dps = DS.D_Nd;
+                            }
+                            if (dps == DS.T_NNt)
+                            {
+                                dps = DS.D_NNd;
+                            }
                         }
-                        if (dps == DS.T_NNt)
-                        {
-                            dps = DS.D_NNd;
 
-                            // we have the case of Serbia have dates in forms 'd.M.yyyy.' so we can expect '.' after the year number. 
-                            // changing the token to YearSpace instead of YearDateSep will make the parsing not failing this case.
-                            if (dtok.dtt == DTT.YearDateSep)
+                        bool atEnd = str.AtEnd();
+                        if (dateParsingStates[(int)dps][(int)dtok.dtt] == DS.ERROR || atEnd)
+                        {
+                            switch (dtok.dtt)
                             {
-                                dtok.dtt = DTT.YearSpace;
+                                // we have the case of Serbia have dates in forms 'd.M.yyyy.' so we can expect '.' after the date parts. 
+                                // changing the token to end with space instead of Date Separator will avoid failing the parsing.
+
+                                case DTT.YearDateSep:  dtok.dtt = atEnd ? DTT.YearEnd  : DTT.YearSpace;  break;
+                                case DTT.NumDatesep:   dtok.dtt = atEnd ? DTT.NumEnd   : DTT.NumSpace;   break;
+                                case DTT.NumTimesep:   dtok.dtt = atEnd ? DTT.NumEnd   : DTT.NumSpace;   break;
+                                case DTT.MonthDatesep: dtok.dtt = atEnd ? DTT.MonthEnd : DTT.MonthSpace; break;
                             }
                         }
                     }
@@ -4376,6 +4389,11 @@ new DS[] { DS.ERROR, DS.TX_NNN,  DS.TX_NNN,  DS.TX_NNN,  DS.ERROR,   DS.ERROR,
             return (false);
         }
 
+        internal bool AtEnd()
+        {
+            return Index < len ? false : true;
+        }
+
         internal bool Advance(int count) {
             Contract.Assert(Index + count <= len, "__DTString::Advance: Index + count <= len");
             Index += count;
@@ -5039,7 +5057,7 @@ Start:
         YearNumberToken = 2,    // The number which is considered as year number, which has 3 or more digits.  E.g. "2003"
         Am              = 3,    // AM timemark. E.g. "AM"
         Pm              = 4,    // PM timemark. E.g. "PM"
-        MonthToken      = 5,    // A word (or words) that represents a month name.  E.g. "Microsoft"
+        MonthToken      = 5,    // A word (or words) that represents a month name.  E.g. "[....]"
         EndOfString     = 6,    // End of string
         DayOfWeekToken  = 7,    // A word (or words) that represents a day of week name.  E.g. "Monday" or "Mon"
         TimeZoneToken   = 8,    // A word that represents a timezone name. E.g. "GMT"
index 893503413c9033fcbf2055a9027af827066c1657..cab202119c240bde5a7faf60d0a802896e4df42d 100644 (file)
@@ -303,7 +303,7 @@ namespace System.Globalization {
             // convert solar day into lunar day.
             // subtract off the beginning part of the solar year which is not
             // part of the lunar year.  since this part is always in Jan or Feb,
-            // we don't need to handle Leap Year (LY only affects Microsoft
+            // we don't need to handle Leap Year (LY only affects [....]
             // and later).
             nLunarDay -= DaysToMonth365[nJan1Month-1];
             nLunarDay -= (nJan1Date - 1);
index 4bb6202e695146f91bf285a84b41b671d955ebe3..8c96b12e3eae8ad088145148bb2752718eb81ac9 100644 (file)
@@ -140,7 +140,7 @@ namespace System.Globalization {
                     cTens = '\x05db';          // Hebrew Letter Kaf
                     break;
                 case ( 3 ) :
-                    cTens = '\x05dc';          // Hebrew Letter Lamed
+                    cTens = '\x05dc';          // Hebrew Letter ----d
                     break;
                 case ( 4 ) :
                     cTens = '\x05de';          // Hebrew Letter Mem
@@ -256,7 +256,7 @@ namespace System.Globalization {
             new HebrewValue(HebrewToken.Digit10, 10) , // '\x05d9;          // Hebrew Letter Yod
             new HebrewValue(HebrewToken.Invalid, -1) , // '\x05da; 
             new HebrewValue(HebrewToken.Digit10, 20) , // '\x05db;          // Hebrew Letter Kaf
-            new HebrewValue(HebrewToken.Digit10, 30) , // '\x05dc;          // Hebrew Letter Lamed
+            new HebrewValue(HebrewToken.Digit10, 30) , // '\x05dc;          // Hebrew Letter ----d
             new HebrewValue(HebrewToken.Invalid, -1) , // '\x05dd;
             new HebrewValue(HebrewToken.Digit10, 40) , // '\x05de;          // Hebrew Letter Mem
             new HebrewValue(HebrewToken.Invalid, -1) , // '\x05df;
index 16503897c75c3d0cf6debf0ea608d734e382a8a0..c27177b8eeb4ddc35bfaa0e922e3d8cfc6370a90 100644 (file)
@@ -14,7 +14,7 @@
 //            preferences of the user and does not depend on the user's
 //            language or culture.
 //
-//  Date:     Microsoft 31, 1999
+//  Date:     [....] 31, 1999
 //
 ////////////////////////////////////////////////////////////////////////////
 
index f39ac8c43e0920df928ba6d91584c1a5bb05d05d..efd5cada4f97617506626aac6a548cb0f399d768 100644 (file)
@@ -11,7 +11,7 @@
 //            A writing system is the collection of scripts and
 //            orthographic rules required to represent a language as text.
 //
-//  Date:     Microsoft 31, 1999
+//  Date:     [....] 31, 1999
 //
 ////////////////////////////////////////////////////////////////////////////
 
index 57b17ae07046d08867dcd6841f13f8a45c27c5dc..503a249dfd309ea6a1e17373030a282b0d012762 100644 (file)
@@ -9,7 +9,7 @@
 //
 //  Purpose:  
 //
-//  Date:     Microsoft 31, 1999
+//  Date:     [....] 31, 1999
 //
 ////////////////////////////////////////////////////////////////////////////
 
index 6b687e166ef304617b3f7bd30bb5d792faf8cd81..5b8692b9821cd6abbe347f3323954fcb651fb2e8 100644 (file)
@@ -11,7 +11,7 @@
 //            A writing system is the collection of scripts and
 //            orthographic rules required to represent a language as text.
 //
-//  Date:     Microsoft 31, 1999
+//  Date:     [....] 31, 1999
 //
 ////////////////////////////////////////////////////////////////////////////
 
index 23928c8e24d48f369f74daa0d3104245026f4b40..ae14266ab7274acb553251c865e8115ffdadc6d7 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 namespace System.Globalization {
     using System.Text;
index 3e15ad9407d8da15a767cac60b3e9f1e35a0dcdc..5ff183b7c04197c6c8d50ae7672902d41254ccc0 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 ////////////////////////////////////////////////////////////////////////////
 //
index 7e8a4dde5d3f0ea64b46201fe6a89a534c156c55..d7ca8056aba50df382286c03695aa2fe5ab66d7b 100644 (file)
@@ -43,7 +43,7 @@ namespace System.Globalization {
         static DateMapping[] InitDateMapping()
         {
             short[] rawData = new short[] {
-//These data is taken from Tables/Excel/UmAlQura.xls please make sure that the two places are in sync
+//These data is taken from Tables/Excel/UmAlQura.xls please make sure that the two places are in [....]
 /*  DaysPerM     GY      GM     GD     D1   D2   D3   D4   D5   D6   D7   D8   D9   D10  D11  D12    
 1318*/0x02EA,    1900,     4,    30,/* 0    1    0    1    0    1    1    1    0    1    0    0    4/30/1900
 1319*/0x06E9,    1901,     4,    19,/* 1    0    0    1    0    1    1    1    0    1    1    0    4/19/1901
index a877feabd30034a60d8774e333530ff3f3247bf5..505f30675c9cc37647cd7f47601dfcafd326bf95 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 /*============================================================
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 ** 
 ** Class:  ConsoleStream
 **
index d7093f2045baa4c9091e738ebc644d0f6d66708a..7ebaff4fc09c225cb0afb4d8ebadde2db424c87f 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  __Error
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Centralized error methods for the IO package.  
index 54fa43e5e2e8c45f9037c963029c1224388448d9..9e77077a564352891daa99b3b8bd7382fb94bd01 100644 (file)
@@ -345,8 +345,8 @@ public sealed class BufferedStream : Stream {
         
         // We bring instance fields down as local parameters to this async method becasue BufferedStream is derived from MarshalByRefObject.
         // Field access would be from the async state machine i.e., not via the this pointer and would require runtime checking to see
-        // if we are talking to a remote object, whcih is currently very slow (Dev11 
-
+        // if we are talking to a remote object, whcih is currently very slow (Dev11 bug #365921).
+        // Field access from whithin Asserts is, of course, irrelevant.
         Contract.Assert(stream != null);        
         
         SemaphoreSlim sem = _this.EnsureAsyncActiveSemaphoreInitialized();
@@ -395,7 +395,7 @@ public sealed class BufferedStream : Stream {
 
 
     // Reading is done in blocks, but someone could read 1 byte from the buffer then write. 
-    // At that point, the underlying stream's pointer is out of sync with this stream's position. 
+    // At that point, the underlying stream's pointer is out of [....] with this stream's position. 
     // All write  functions should call this function to ensure that the buffered data is not lost.
     private void FlushRead() {
 
@@ -1158,7 +1158,7 @@ public sealed class BufferedStream : Stream {
         try {
 
             // The buffer might have been changed by another async task while we were waiting on the semaphore.
-            // However, note that if we recalculate the sync completion condition to TRUE, then useBuffer will also be TRUE.
+            // However, note that if we recalculate the [....] completion condition to TRUE, then useBuffer will also be TRUE.
 
             if (_writePos == 0)
                 ClearReadBufferBeforeWrite();            
index fe3f1d84afeaa56c865e9cc171e609a939e9cb87..da6f5ab57e45afc6f7e50f02af951f214e001202 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  Directory
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exposes routines for enumerating through a 
@@ -412,7 +412,7 @@ namespace System.IO {
             catch (UnauthorizedAccessException)
             {
 #if !FEATURE_PAL
-                Contract.Assert(false, "Ignore this assert and send a repro to Microsoft. This assert was tracking purposes only.");
+                Contract.Assert(false, "Ignore this assert and send a repro to [....]. This assert was tracking purposes only.");
 #endif //!FEATURE_PAL
             }
             return false;
index c675bd5e712d79c66a4bb2c9f848dc319db8c2ee..5d88346dd312387436ce70db911f7522c5bb1562 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  DirectoryInfo
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exposes routines for enumerating through a 
index 97c5dcc6b7eafd17454e156aade4fc76a4f152cc..93e9437ad8c12ca2e14b9209a08a54857ea01d56 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  DirectoryNotFoundException
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception for accessing a path that doesn't exist.
index 7dd7a3bc3f14a96a50f02035e48cb8253e1c0542..5f78933871dca655d6db05788fee2667878cc483 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  DriveInfo
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exposes routines for exploring a drive.
index 0361c2908a3cc954549e5806497d34835b5c4d9c..cfc543f3093c4d6ad4957cc7230be660b391b2d0 100644 (file)
@@ -7,7 +7,7 @@
 //
 //  Class:  DriveNotFoundException
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Purpose: Exception for accessing a drive that is not available.
 //
index b0cd0d1c9eae309ce00f809fe65ed82dad76b554..aa07bc4c7f758736563d8b199b17aa404109b802 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  EndOfStreamException
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception to be thrown when reading past end-of-file.
index 94c45e4d2f9174dd5f96eacdb072cc5f3f28d74e..d8a7146e01a3d267e204fdd6ba768ab31ebea7fd 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  File
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: A collection of methods for manipulating Files.
index ddda3f277f54f2c8ec3a76519276fc2e807dad8d..21cca9f51dd728d6b766debbaeedec30b32bcf61 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 /*============================================================
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 ** 
 ** Class:  File
 **
index 06b2ab35e810e7cda5c75de242b359e5e27844cc..2a7b803bed79876538f9e7974f0ffbcefaccb7b4 100644 (file)
@@ -7,8 +7,8 @@
 **
 ** Class:  FileLoadException
 **
-** <OWNER>Microsoft</OWNER>
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception for failure to load a file that was successfully found.
index 985d9e1a1c349b14ee01aceb50e56a3addedd84f..088ef61170f8601909b31fad7da06db6bcc1fb6e 100644 (file)
@@ -7,8 +7,8 @@
 **
 ** Class:  FileNotFoundException
 ** 
-** <OWNER>Microsoft</OWNER>
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception for accessing a file that doesn't exist.
index 14aaf800073f72d530ae1cd11bd6d17516d23ae3..38b86735241ea07f3ab33268fed4980d92d915dd 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  FileStream
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exposes a Stream around a file, with full 
@@ -39,11 +39,11 @@ using System.Diagnostics.Tracing;
 
 /*
  * FileStream supports different modes of accessing the disk - async mode
- * and sync mode.  They are two completely different codepaths in the
- * sync & async methods (ie, Read/Write vs. BeginRead/BeginWrite).  File
- * handles in NT can be opened in only sync or overlapped (async) mode,
+ * and [....] mode.  They are two completely different codepaths in the
+ * [....] & async methods (ie, Read/Write vs. BeginRead/BeginWrite).  File
+ * handles in NT can be opened in only [....] or overlapped (async) mode,
  * and we have to deal with this pain.  Stream has implementations of
- * the sync methods in terms of the async ones, so we'll
+ * the [....] methods in terms of the async ones, so we'll
  * call through to our base class to get those methods when necessary.
  *
  * Also buffering is added into FileStream as well. Folded in the
@@ -1224,7 +1224,7 @@ namespace System.IO {
 
                 Contract.Assert((_readPos == 0 && _readLen == 0 && _writePos >= 0) || (_writePos == 0 && _readPos <= _readLen), "We're either reading or writing, but not both.");
 
-                // Verify that internal position is in sync with the handle
+                // Verify that internal position is in [....] with the handle
                 if (_exposedHandle)
                     VerifyOSHandlePosition();
 
@@ -1353,7 +1353,7 @@ namespace System.IO {
 
         // Reading is done by blocks from the file, but someone could read
         // 1 byte from the buffer then write.  At that point, the OS's file
-        // pointer is out of sync with the stream's position.  All write 
+        // pointer is out of [....] with the stream's position.  All write 
         // functions should call this function to preserve the position in the file.
         private void FlushRead() {
             Contract.Assert(_writePos == 0, "FileStream: Write buffer must be empty in FlushRead!");
@@ -1628,7 +1628,7 @@ namespace System.IO {
                 offset -= (_readLen - _readPos);
             }
 
-            // Verify that internal position is in sync with the handle
+            // Verify that internal position is in [....] with the handle
             if (_exposedHandle)
                 VerifyOSHandlePosition();
 
@@ -1722,7 +1722,7 @@ namespace System.IO {
 
         // Checks the position of the OS's handle equals what we expect it to.
         // This will fail if someone else moved the FileStream's handle or if
-        // we've hit a 
+        // we've hit a bug in FileStream's position updating code.
         private void VerifyOSHandlePosition()
         {
             if (!CanSeek)
@@ -1945,7 +1945,7 @@ namespace System.IO {
                 // (either synchronously or asynchronously) before the first one 
                 // returns.  This would involve some sort of complex buffer locking
                 // that we probably don't want to get into, at least not in V1.
-                // If we did a sync read to fill the buffer, we could avoid the
+                // If we did a [....] read to fill the buffer, we could avoid the
                 // problem, and any async read less than 64K gets turned into a
                 // synchronous read by NT anyways...       -- 
 
@@ -2513,7 +2513,7 @@ namespace System.IO {
 
             if (r==0) {
                 hr = Marshal.GetLastWin32Error();
-                // We should never silently swallow an error here without some
+                // We should never silently ---- an error here without some
                 // extra work.  We must make sure that BeginReadCore won't return an 
                 // IAsyncResult that will cause EndRead to block, since the OS won't
                 // call AsyncFSCallback for us.  
@@ -2570,7 +2570,7 @@ namespace System.IO {
 
             if (r==0) {
                 hr = Marshal.GetLastWin32Error();
-                // We should never silently swallow an error here without some
+                // We should never silently ---- an error here without some
                 // extra work.  We must make sure that BeginWriteCore won't return an 
                 // IAsyncResult that will cause EndWrite to block, since the OS won't
                 // call AsyncFSCallback for us.  
index f74c05c87ff5ab35179569d25a2a551984a78567..ec69c33afb79d268bba6260634198d43464baa46 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  FileSystemEnumerable
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Enumerates files and dirs
index e0fedf9fd5e19076af2d863fccbb1c20e29f759d..6428bc0c801e0f55664457bd4025495a43f29219 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  FileSystemInfo    
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: 
index 3301207c675cbef92bd35bcfecae4b44003a40be..699d4f7e76b50809826b31b0757c44337dbd318e 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  IOException
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception for a generic IO error.
index 4d384f1d0505999060d339d4f8d59c8e9134e610..1249595b5bd892f29266242dc16aed30a142c1f9 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 /*============================================================
@@ -331,7 +331,7 @@ namespace System.IO.IsolatedStorage {
 
         private static SecurityPermission GetControlEvidencePermission()
         {
-            // Don't sync. OK to create this object more than once.
+            // Don't [....]. OK to create this object more than once.
             if (s_PermControlEvidence == null)
                 s_PermControlEvidence = new SecurityPermission(
                     SecurityPermissionFlag.ControlEvidence);
@@ -341,7 +341,7 @@ namespace System.IO.IsolatedStorage {
 
         private static PermissionSet GetUnrestricted()
         {
-            // Don't sync. OK to create this object more than once.
+            // Don't [....]. OK to create this object more than once.
             if (s_PermUnrestricted == null)
                 s_PermUnrestricted = new PermissionSet(
                     PermissionState.Unrestricted);
index 175991615bcfd5a4d1cc6f08ee8da034198a47c6..e02e83a75b55257ec78575dc964e59a3cd8302d8 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Class:  IsolatedStorageException
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
  *
  *
  * Purpose: The exceptions in IsolatedStorage
index 739311221247b5f8eb35727df6caf134d97d6a42..932a4ee9f1d41fd3a57aa6b27e4b7a1e0d76f40e 100644 (file)
@@ -8,8 +8,8 @@
  * 
  * Class:  IsolatedStorageFile
 // 
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
  *
  *
  * Purpose: Provides access to Application files and folders
@@ -2304,7 +2304,7 @@ namespace System.IO.IsolatedStorage {
         {
             if (IsRoaming(scope))
             {
-                // no sync needed, ok to create multiple instances.
+                // no [....] needed, ok to create multiple instances.
                 if (s_PermRoaming == null)
                 {
                     s_PermRoaming =  new FileIOPermission(
@@ -2316,7 +2316,7 @@ namespace System.IO.IsolatedStorage {
 
             if (IsMachine(scope))
             {
-                // no sync needed, ok to create multiple instances.
+                // no [....] needed, ok to create multiple instances.
                 if (s_PermMachine == null)
                 {
                     s_PermMachine =  new FileIOPermission(
@@ -2325,7 +2325,7 @@ namespace System.IO.IsolatedStorage {
 
                 return s_PermMachine;
             }
-            // no sync needed, ok to create multiple instances.
+            // no [....] needed, ok to create multiple instances.
             if (s_PermUser == null)
             {
                 s_PermUser =  new FileIOPermission(
@@ -2338,7 +2338,7 @@ namespace System.IO.IsolatedStorage {
         [System.Security.SecurityCritical]  // auto-generated
         private static void DemandAdminPermission()
         {
-            // Ok if more than one instance is created, no need to sync.
+            // Ok if more than one instance is created, no need to [....].
             if (s_PermAdminUser == null)
             {
                 s_PermAdminUser = new IsolatedStorageFilePermission(
index caa5cfe5e3dcebc1f126c28f6a0807afa8f15c5e..c6d0b55415da05fbab0361b0644a6d75da4da48c 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Class:  IsolatedStorageFileStream
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
  *
  *
  * Purpose: Provides access to files using the same interface as FileStream
index b88e5d4b79d0088661378cb7bd587428ce01f6f1..2240ba9e1abb97fb7a6e1899c9c3aac2f76d3584 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  File
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Long paths
index 6887ad35a44cd06e8a9800c760aa6e53dbeccc2e..58b61868efce1c470af2f4e3472f42d5c1a25f38 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  MemoryStream
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: A Stream whose backing store is memory.  Great
@@ -422,7 +422,7 @@ namespace System.IO {
 
             // This implementation offers beter performance compared to the base class version.
 
-            // The parameter checks must be in sync with the base version:
+            // The parameter checks must be in [....] with the base version:
             if (destination == null)
                 throw new ArgumentNullException("destination");
             
index f260924b1d0608383e5c1ea97aff79d73fae3f8e..b4cb0ab7e360fe5d4493b767bfbb52be9ae1badb 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  Path
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: A collection of path manipulation methods.
@@ -673,17 +673,17 @@ namespace System.IO {
                 // might be well within the MAX_PATH restriction. For ex,
                 // "c:\SomeReallyLongDirName(thinkGreaterThan_MAXPATH)\..\foo.txt" which actually requires a
                 // buffer well with in the MAX_PATH as the normalized path is just "c:\foo.txt"
-                // This buffer requirement seems wrong, it could be a 
-
-
+                // This buffer requirement seems wrong, it could be a bug or a perf optimization  
+                // like returning required buffer length quickly or avoid stratch buffer etc. 
+                // Either way we need to workaround it here...
                 
                 // Ideally we would get the required buffer length first by calling GetFullPathName
                 // once without the buffer and use that in the later call but this doesn't always work
-                // due to Win32 GetFullPathName 
-
-
-
-
+                // due to Win32 GetFullPathName bug. For instance, in Win2k, when the path we are trying to
+                // fully qualify is a single letter name (such as "a", "1", ",") GetFullPathName
+                // fails to return the right buffer size (i.e, resulting in insufficient buffer). 
+                // To workaround this bug we will start with MAX_PATH buffer and grow it once if the 
+                // return value is > MAX_PATH. 
 
                 result = newBuffer.GetFullPathName();
 
index 048e734acc553ec9b3a6d9c1e3f4c2c91e076084..aebd4c30dacfd802b97a8ca75efefce900b9f881 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  PathTooLongException
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception for paths and/or filenames that are 
index fda409ae8cd90e13fbad0f79ed4a089ded4cf3ac..7b45756c70a62db8e428da8bd0557ef254d8f5a0 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  PinnedBufferMemoryStream
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Pins a byte[], exposing it as an unmanaged memory 
index f3e2dcbed0ebfac88e55e8cbaf75753f067b912a..007745c7ab57d6979632e580b69c75f901908af5 100644 (file)
@@ -509,7 +509,7 @@ namespace System.IO {
         private void RunReadWriteTaskWhenReady(Task asyncWaiter, ReadWriteTask readWriteTask)
         {
             Contract.Assert(readWriteTask != null);  // Should be Contract.Requires, but CCRewrite is doing a poor job with
-                                                     // preconditions in async methods that await.  Mike & Manuel are aware. (10/6/2011, 
+                                                     // preconditions in async methods that await.  Mike & Manuel are aware. (10/6/2011, bug 290222)
             Contract.Assert(asyncWaiter != null);    // Ditto
 
             // If the wait has already complete, run the task.
index 98be2379e9ce7ee354e59b711ffeb7b9fd279e22..0f38537870660a5030d913bb16f208a072ca0b0d 100644 (file)
@@ -1134,7 +1134,7 @@ namespace System.IO
         // and is thus lifted to a state machine type, access will be slow.
         // As a workaround, we either cache instance fields in locals or use properties to access such fields.
 
-        // See Dev11 
+        // See Dev11 bug #370300 for more info.
         
         private Int32 CharLen_Prop {
             get { return charLen; }
index 1db58849afe8e259cb4859e8572e070e3ddd387e..d4d92c05f2cc1083775aa3e2580960766f3206b3 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  StringReader
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: For reading text from strings
 **
index f464f5c1a3363e8548742b1ab93c1db0df8867d3..6f41279ca1c7dc4edfcb287232199994cfa5f127 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  StringWriter
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: For writing text to a string
 **
index 4e5bad0c17e74d8333cbf7ff1c564235236b5bf0..5f8e7b98a7d8240203fc1deb2db8526bd4299c58 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  TextReader
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Abstract base class for all Text-only Readers.
index a61049c8527a32cea5f6e276b4eeaee7d13f80d5..2afe3a6cbfae4d9751a6ceb27ad2343f4fb54259 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  TextWriter
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Abstract base class for Text-only Writers.
index 3d4c571bc6d8ffa4d627053b7230d70a9800c7e5..70e100c6e17e2283a92b760eeca29ffb01761893 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  UnmanagedMemoryAccessor
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: Provides a fast, AV free, cross-language way of 
 **          accessing unmanaged memory in a random fashion.
index 08936ac50cb22ec6f20dc132baf9c9398d40f296..2960876b8291317fe8e0bad79c5e7f8449f3ac8b 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  UnmanagedMemoryStream
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: Create a stream over unmanaged memory, mostly
 **          useful for memory-mapped files.
@@ -401,7 +401,7 @@ namespace System.IO {
                 throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
             if (buffer.Length - offset < count)
                 throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen"));
-            Contract.EndContractBlock();  // Keep this in sync with contract validation in ReadAsync
+            Contract.EndContractBlock();  // Keep this in [....] with contract validation in ReadAsync
 
             if (!_isOpen) __Error.StreamIsClosed();
             if (!CanRead) __Error.ReadNotSupported();
@@ -580,7 +580,7 @@ namespace System.IO {
                 throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
             if (buffer.Length - offset < count)
                 throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen"));
-            Contract.EndContractBlock();  // Keep contract validation in sync with WriteAsync(..)
+            Contract.EndContractBlock();  // Keep contract validation in [....] with WriteAsync(..)
 
             if (!_isOpen) __Error.StreamIsClosed();
             if (!CanWrite) __Error.WriteNotSupported();
index 613241bab177f6e344ad3c9ab921fd5cc98e0a4b..20535e7022c14c2f25bf7375313b5f094a85a7db 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  UnmanagedMemoryStreamWrapper
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: Create a Memorystream over an UnmanagedMemoryStream
 **
@@ -152,7 +152,7 @@ namespace System.IO {
 
         public override Task CopyToAsync(Stream destination, Int32 bufferSize, CancellationToken cancellationToken) {
 
-            // The parameter checks must be in sync with the base version:
+            // The parameter checks must be in [....] with the base version:
             if (destination == null)
                 throw new ArgumentNullException("destination");
             
index 6c27df75d51b83b0dd744419b5cfba2bc1e17421..2d9f91e839b90e98dbd5f3f678369981e2b90f49 100644 (file)
@@ -86,7 +86,7 @@ public class Object
     // Based on the contents of the object, the hash function will return a suitable
     // value with a relatively random distribution over the various inputs.
     //
-    // The default implementation returns the sync block index for this instance.
+    // The default implementation returns the [....] block index for this instance.
     // Calling it on the same object multiple times will return the same value, so
     // it will technically meet the needs of a hash function, but it's less than ideal.
     // Objects (& especially value classes) should override this method.
index a85eeeb730577b63942ada060d0965bac5ebeccf..6b273c894a4d1a592a6208cdc384bbd7a8229c7a 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  Progress<T>
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Event-based implementation of IProgress<T>.
@@ -46,8 +46,8 @@ namespace System
         public Progress()
         {
             // Capture the current synchronization context.  "current" is determined by CurrentNoFlow,
-            // which doesn't consider the sync ctx flown with an ExecutionContext, avoiding
-            // sync ctx reference identity issues where the sync ctx for one thread could be Current on another.
+            // which doesn't consider the [....] ctx flown with an ExecutionContext, avoiding
+            // [....] ctx reference identity issues where the [....] ctx for one thread could be Current on another.
             // If there is no current context, we use a default instance targeting the ThreadPool.
             m_synchronizationContext = SynchronizationContext.CurrentNoFlow ?? ProgressStatics.DefaultContext;
             Contract.Assert(m_synchronizationContext != null);
@@ -80,14 +80,14 @@ namespace System
         /// <param name="value">The value of the updated progress.</param>
         protected virtual void OnReport(T value)
         {
-            // If there's no handler, don't bother going through the sync context.
+            // If there's no handler, don't bother going through the [....] context.
             // Inside the callback, we'll need to check again, in case 
             // an event handler is removed between now and then.
             Action<T> handler = m_handler;
             EventHandler<T> changedEvent = ProgressChanged;
             if (handler != null || changedEvent != null)
             {
-                // Post the processing to the sync context.
+                // Post the processing to the [....] context.
                 // (If T is a value type, it will get boxed here.)
                 m_synchronizationContext.Post(m_invokeHandlers, value);
             }
index e2a1842a49465aefa820d36e63202cbee3f8ef38..3f9c8e5596c12128d8a14d3a72f91c740125a990 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection
index dfc2d64d8ee0877d0b700f10720f5899f8b78ccb..6704bd53fe0465ef9f1acb86e48e7f98877dc64e 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection
index b4f92594884e3cc19de1a181d8d12a4de7b68574..951881c29d27f6463921b2bc63ad6f30f46e4323 100644 (file)
@@ -6,7 +6,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 // This class defines the delegate methods for the COM+ implemented filters.
 //    This is the reflection version of these.  There is also a _Filters class in
index cfff77d66857e3b05357947269324c93480987b8..b6f715ae29dcb81b046dedbf21f84870e5030bc5 100644 (file)
@@ -8,7 +8,7 @@
 //
 // AmbiguousMatchException is thrown when binding to a method results in more
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //    than one method matching the binding criteria.  This exception is thrown in
 //    general when something is Ambiguous.
 //
index 84bc21c562dd631b3f7ef4a1742637be6de11d42..24bd73651248dc996e096016e27acb8cbb302ef1 100644 (file)
@@ -1146,7 +1146,7 @@ namespace System.Reflection
 
     }
 
-    // Keep this in sync with LOADCTX_TYPE defined in fusionpriv.idl
+    // Keep this in [....] with LOADCTX_TYPE defined in fusionpriv.idl
     internal enum LoadContext
     {
        DEFAULT,
@@ -2915,9 +2915,9 @@ namespace System.Reflection
                         if (e.IsTransient)
                             throw;
 
-                        // See Dev11 
-
-
+                        // See Dev11 bug 298776 (DevDiv2 TFS database). Sometimes
+                        // UnauthorizedAccessException will be thrown by the call to
+                        // Fusion.ReadCache.
 
                         // We also catch any other exception types we haven't come across yet,
                         // not just UnauthorizedAccessException.
index d222ee51a8f00c7adcdfa62e00b332952160d273..b3fec0ba1cb499d5effff8711056823e19ac83af 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** File: AssemblyAttributes
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: For Assembly-related custom attributes.
index 802414cc09158ba555d853256a9491765e03b0bb..a7e5857d06763ea66db3f3815def547f008d1c0d 100644 (file)
@@ -7,8 +7,8 @@
 **
 ** File:    AssemblyName
 ** 
-** <OWNER>Microsoft</OWNER>
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Used for binding and retrieving info about an assembly
index 5be9bc495bd147d8128c95c715f14bb57e473b8d..dc844de4151b3bc18f1d163e7bbd808dffa7baa2 100644 (file)
@@ -7,8 +7,8 @@
 **
 ** File:    AssemblyNameProxy
 ** 
-** <OWNER>Microsoft</OWNER>
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Remotable version the AssemblyName
index 46ee3f08fe9d4a028e3a5bfcd3cec009cbae278c..4dfeb2679fd95961ba9b42be3c6a068dda69bcfe 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index 1d158db809d9cca566b2fde7ee97688a7470a8c5..093314aba8f693ef66dd8d95cdc66a47850bf6c3 100644 (file)
@@ -8,11 +8,11 @@
 //
 // CustomAttributeFormatException is thrown when the binary format of a 
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //    custom attribute is invalid.
 //
 // <EMAIL>Author: darylo</EMAIL>
-// Date: Microsoft 98
+// Date: [....] 98
 //
 namespace System.Reflection {
     using System;
index 28af33c9dc696602e2a7d2692158378bb4608403..00d6ab38ed0957b31106ce3a60d741d32b082fdc 100644 (file)
@@ -8,7 +8,7 @@
 //
 // DefaultMemberAttribute is defines the Member of a Type that is the "default"
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //    member used by Type.InvokeMember.  The default member is simply a name given
 //    to a type.
 //
index e715f58367361fba53726eeb74ce861d4f6325f5..35c267da67d0908b04172477ba21dd7ff7c05a9f 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 using System;
 using System.Collections.Generic;
 using System.Runtime.CompilerServices;
index f8099ccd81555a65b60b243abb7bf155b6a7eca6..22161806123ada0dd48dfd47d27ddbc42c2354eb 100644 (file)
@@ -23,7 +23,7 @@
 // "internal" and "external" ModuleBuilders are similar
 //*************************************************************************************************************
 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Reflection.Emit
 {
     using System;
@@ -475,7 +475,7 @@ namespace System.Reflection.Emit
             // The name in the underlying metadata will be set when the
             // manifest module is created during nCreateDynamicAssembly.
 
-            // This name needs to stay in sync with that used in
+            // This name needs to stay in [....] with that used in
             // Assembly::Init to call ReflectionModule::Create (in VM)
             m_manifestModuleBuilder.Init(AssemblyBuilder.MANIFEST_MODULE_NAME, null, 0);
 
index fbce6487b66e14672c4561d04f27e2fc6a111bd1..cc02531a65cb017986455198de8243b4aa9315a6 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 ////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit {
index ec850ba4d40f582c62d9a3bc7ae602734ad8f4e9..3a1435b907b5e663a4430e03588073cc29fba067 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit 
index c4cc7d2999125592dbff0b11fecef2881faefb2b..cb0aa8caceffcba96706e6f21f7897394b56c043 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 /*============================================================
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 ** 
 ** Class:  CustomAttrbuteBuilder
 **
index 6f86bcd1f2aaec9c6c9bad07e64c87c8d047948c..f26816471f53967d01d5403809c118246be44755 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit
@@ -799,7 +799,7 @@ namespace System.Reflection.Emit
             }
         }
 
-        // Keep in sync with vm/dynamicmethod.h
+        // Keep in [....] with vm/dynamicmethod.h
         [Flags]
         internal enum SecurityControlFlags
         {
index 71ee85706c71a5685267dee52077869aca088ba1..23a7baa1f73424b132ba234ef5dab6254b605fb6 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit
index f6be53addaad802dbcada0da96c6a517f0137ecc..7cea00bdcd456b76d642eee49a39ce5bd4f0606d 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  EnumBuilder
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** EnumBuilder is a helper class to build Enum ( a special type ). 
index e6bd4327f4269df5f3a04a6bba169d13e8b1f6e3..0fea09464b67e7c2d7c9e16682bba850400c13a1 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  EventBuilder
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Eventbuilder is for client to define eevnts for a class
index 737c95c3d2d9d0301f936f46457ff036695c79f3..a12e442aa6c56951bce60dba4a22eb98cf4fc304 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  EventToken    
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Propertybuilder is for client to define properties for a class
index 43cf5ceddaee5020813a05f49f221720266a4f3d..c38cc21d3df1aba19114163366d45630889d75cd 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit 
index e043c0f7f9101c5f54bfda72876f046b93aef033..1684ef054f413ef4c1e6a55c42bfb2483bda486f 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  FieldToken
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Represents a Field to the ILGenerator Class
index f9e701e4c2275f11b4d7971b254c04535ea0b627..8a6f6e540a5808585d292b48702ab443cfe1f0fd 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit
index 44f61a5dd8458cd7b7f01b1083fad87ccf65e73d..475fc3d0f9c38d4750f5883a25c120254aefd1c9 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit 
index d0ee014f0f8b2071b11f0264c20ddf884834ec46..577f1960d74c41df5afb3f9ee281aaa73362b104 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  Label
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **  
 **
index 77352947ca475594cf6840238ebfafdc4c661946..51f6f15bb8d8a1c5c8d1dacb1a71996af10e4683 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 using System;
 using System.Reflection;
 using System.Security.Permissions;
index 99650b1da06eb759902cb85c7cbb2178ce209fb1..41edc3402022f2714b99416c4188cd29a4933fd7 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit 
@@ -1405,7 +1405,7 @@ namespace System.Reflection.Emit
     [ComVisible(false)]
     public struct ExceptionHandler : IEquatable<ExceptionHandler>
     {
-        // Keep in sync with unmanged structure. 
+        // Keep in [....] with unmanged structure. 
         internal readonly int m_exceptionClass;
         internal readonly int m_tryStartOffset;
         internal readonly int m_tryEndOffset;
index 3b73e1b24921d4ead0c5232ff5f6ed10a101819b..1a7db5cecbeed2cc30267f3c0a7b14735e363fc5 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit
index c4e980c9549a090b78faa705c8ee32b0dfe237dc..e54ffa50620cd1df5b802e263a25b161b8f84cba 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  MethodRental
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** MethodRental class is to provide a fast way to swap method body implementation
index 18c050acc20dda9b94da9253f5e9e48e8cdf172a..92d2c9d9f3055bab9d57ad2c868aa028b4d36f10 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  MethodToken
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Represents a Method to the ILGenerator class.
index c872fa06510d656f32ee8720536a1d7fb93359da..e64bd9bd9540530a464c91d84b03e5b9c5ba866d 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit 
index 0252f9dbace04858fac36ae5eb8586d50c7a4f8a..36f17022ed216896f0fbdf952f5b87ff2853fd77 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 ////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit
index 477b3595eb7571fcafa8580e054fbaf30ee27478..b0110f5f859d528c4d1e8b1687bd1613237c7838 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Reflection.Emit {
 using System;
 using System.Threading;
index 0b0cb66a0466a2acd62e48e23e96344711e4de06..f7b85f8159f26257e9bbbe0e15eb1ca2c06bbf80 100644 (file)
@@ -2,7 +2,7 @@
 **
 **Class: OpCodes
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **Purpose: Exposes all of the il instructions supported by the runtime.
 **
index fbcb9cad9ab1fd67d2152bc1a0e5d55b9da278e7..840e8bdcb22e033f34fe563c31569d6ef85bf2d8 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  ParameterBuilder
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** ParameterBuilder is used to create/associate parameter information
index 109641ef248bcb1a70da127d5d76077dc2e0c6d5..b4fa891db1513e707f2ef9455acd9b9ef575bd94 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  ParameterToken
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: metadata tokens for a parameter
index b3a73689f8817d2fbc4fea40a55ca02b42be212d..57cd6df97cbe7013e1cbe81fbf539ad635ce90a7 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  PropertyBuilder
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Propertybuilder is for client to define properties for a class
index a29d4c6f42acf5d7b9054cad031943b86fbc156c..db59f5d80ec52b0b9f35bdba119e50af3ed94d42 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  PropertyToken
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Propertybuilder is for client to define properties for a class
index 05b2d9f402bc49fed891a8d1656d1c886938b826..9c61d53dd7f68a9a7ef3b7a007cc5e77e95b3628 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit 
index a41b2d2925c34b8b1a0fb7d67f9960967c4d9b37..2ae4c1eecde333c4e8a2333c2b5e6d769ee1d29c 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Signature:  SignatureToken
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Represents a Signature to the ILGenerator signature.
index ad7216a4636e6cdd9a4f8dbe5035d5b3fa6ebaea..b568cef114b6d52f5ce85b59792a9e5f97881376 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  StringToken
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Represents a String to the ILGenerator class.
index 8bca9063d78f3e6f89c394b5ce55b1d0ba00ce26..1367894419b95f1aaaab5a2f7390068db12fc598 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit 
index f6fb66fc39bbddb28ba2a4c3ea788581360cb99b..18f321e7ec54aecd3c34ba65cd8497acb43888af 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit 
index 9cf13f212c19fae02639c2ba96f7c00ffce29316..7833c8f6a4910722aee5e7350250d9eab2cde826 100644 (file)
@@ -4,7 +4,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit {
index 61101139eb650cc2740992710de44631bdea6d51..0db7978dfbc38ab0c009e22f592d3635612ef378 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit
index da4b521d18c32624eae34a20bfd532d8ccd76288..bfc3c16114d2ca86a6dba60fd74ef5bf7bc79f00 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  TypeToken
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Represents a Class to the ILGenerator class.
index 5951fc9f51e7a3a786701e4a9e0aea5698b7c454..1d2ab1063841981ec3676e037d086475a70bc5b9 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Reflection.Emit
 {
     using System.Runtime.InteropServices;
index 71a3b53ddd3ae5a4f2b6f683692f85f83049a229..59ae15e5fe46cff928a2c3dbba0c8ed8c7a5a364 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection.Emit
index 34f3241999286bbb6de71ddf925b0bc0fae46063..c81f87593b682b9280a67f33033e8adf55a7aa95 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection
index 9f7f9494b4ad8fb6561d9a21185f3e606ecb9eb1..3a7bdfc19d5e889aa957a7a35290bc577ee058b5 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection
index 95ba52799708344b7b1e35e1482502a5bf141f9e..4d393c99bd3d4a4e04d1f4d75cb758bf73e03959 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: TypeInfoExtension
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: go from type to type info
index c7ae1c8a114385cb6afcdb92b6db17daa2e593c9..8c73653195d034e8edbdd0c34b2f05a5f015a8de 100644 (file)
@@ -8,7 +8,7 @@
 //
 // InvalidFilterCriteriaException is thrown in FindMembers when the
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //    filter criteria is not valid for the type of filter being used. 
 //
 // 
index d8ff5d79d166db4c6c3cb732783650ac7e1c4216..4b35f9fdd45080a8ad5506b25c9e77c7e01809af 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index 6026f53d8e339675cb51e2792b05a7649d9959f0..496012a528bc32df918f5bde96c7cc112e30bcb3 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: ManifestResourceInfo
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: For info regarding a manifest resource's topology.
index 3f69c080c39fd802c87ca2dad35d1ae64be8bcf7..f78dc8fb23131bc219704e5a80da228f1c09bef7 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection
index f2f0c70edcead691026bdbb4b7412478d571e53c..5bcbaf336930e71a8540bf522a2efc99c6540639 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
@@ -190,7 +190,7 @@ namespace System.Reflection
             }
         }
 
-        // Keep the definition in sync with vm\ManagedMdImport.hpp
+        // Keep the definition in [....] with vm\ManagedMdImport.hpp
         internal int m_length;
         internal IntPtr m_constArray;
     }
@@ -256,7 +256,7 @@ namespace System.Reflection
 
     internal unsafe struct MetadataEnumResult
     {
-        // Keep the definition in sync with vm\ManagedMdImport.hpp
+        // Keep the definition in [....] with vm\ManagedMdImport.hpp
         private int[] largeResult;
         private int length;
         private fixed int smallResult[16];
index 9b7ba894b6f7dae69b9adbdcbb36b74e34f4ea91..89d9023538d4708faefe2010caa57a64583d0c25 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection
index 772cccd6ed8bda5b7f8e68bdf0e457fbfa8e29e0..ee3e0e31bd53aec230ab6a46cf5c9d293ba721a9 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index a38586d0865b6ce28e4b2c9ec94f80bc6b8ada10..db85136a5a0e06eb36577ca6fd8731c5f5a42900 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection
index 15bacb6824f58e73f0eb8530a043a7dab9110f11..428aded37a4a335b38d66f3aff5e07362e945385 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index 0987d82251f5cb9f0271ae15298ef28df5ceff91..6b8acb771a1031714383015cc770bebf0ec929a0 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection
index 7b310ebfa05659a333ee1a65075b2bdeef1793d8..d203d31aaa7bd87abd96a2d5781ad382d48b765f 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection 
index b318b39014d62d5b540b43db02f433fe0b560681..fb10e18a08958bf592bb59a8d6bad5a2a420fe84 100644 (file)
@@ -4,8 +4,8 @@
 // 
 // ==--==
 ////////////////////////////////////////////////////////////////////////////////
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection 
index 4c38baf4b9f7f5e113a087ad8d41674413b77392..287a19a76d579c514104b27ddf83996cc78046b2 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index 5e9a137cd995c0cb7e2761ba8994fb318ca5d57a..3bede5deabd998b888ba25744016b721ee13b81b 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index 0494899bcc1f0023ae868e6f02f639279c4b3bbc..8f6739f1d01f60c94eedfa4b54e218045a9aa734 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection
index ee168adddc3fdb15a2de90767249e32b7fe3f63b..545ea83ebce0cba31eebcae9e56eb3711c2a2657 100644 (file)
@@ -4,7 +4,7 @@ using System.Diagnostics.Contracts;
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection 
index 636795024a3cba0492c71131c6859745f5ead829..ec703d95e1643d4c6f1662759430038c86904162 100644 (file)
@@ -7,7 +7,7 @@
 //
 // This is a wrapper class for Pointers
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // 
 //  
index 2ea511c43ddd60f29a3408537cb3c143ce0edd24..f105a9ce38af6c990a43f8c3e9f235f67b526619 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright(c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Reflection
index 3b853973201a854c6621e23a21eb400a7010b0d5..d559a661f4b2a4d4e4ea27fa7c8d369495fc53f5 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: ReflectionContext
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: For Assembly-related stuff.
index df95e64a25c13b7f0cd8f06e423d23b4dbc2a88c..07baefda606c4d7f452785a93b51ce6e4414a249 100644 (file)
@@ -8,7 +8,7 @@
 //
 // ReflectionTypeLoadException is thrown when multiple TypeLoadExceptions may occur.  
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //  Specifically, when you call Module.GetTypes() this causes multiple class loads to occur.
 //  If there are failures, we continue to load classes and build an array of the successfully
 //  loaded classes.  We also build an array of the errors that occur.  Then we throw this exception
index 6734a4850d154abf3e17b37440c6b72b6fc7a460..b4a736415fa6a950d7ec1d969e53d64852aaaf05 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** File:    StrongNameKeyPair.cs
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Encapsulate access to a public/private key pair
index c3e51193f8e34a0d4b3375ca9e08e907970c2fc9..caba5efd1234bbff220dcded2de58783850efa14 100644 (file)
@@ -8,7 +8,7 @@
 //
 // TargetException is thrown when the target to an Invoke is invalid.  This may
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //    occur because the caller doesn't have access to the member, or the target doesn't
 //    define the member, etc.
 //
index dbe11f215b34849e7eb85d9885866d4c80d0f880..0df1faa9d6ccd5f93f5c3f2f546b0eee073ce564 100644 (file)
@@ -8,7 +8,7 @@
 //
 // TargetInvocationException is used to report an exception that was thrown
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //    by the target of an invocation.
 //
 // 
index 60007d1cd258ed3f87b97df3d4c3affe04a87d23..d350a07c2eaf9e928f08aed8cec42c6d678d9dbd 100644 (file)
@@ -8,7 +8,7 @@
 //
 // TargetParameterCountException is thrown when the number of parameter to an
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //    invocation doesn't match the number expected.
 //
 // 
index 053c9f58ed8764e601d8e0e9b962ead9312467d0..59d567cb25ef7de5e53ec47e1b70daa737e36791 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // TypeDelegator
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // This class wraps a Type object and delegates all methods to that Type.
 
 namespace System.Reflection {
index 098b0add8dcb9b47644c43615019f1c08e892204..842f9e3065b3b41c219092ee139d2ff90bb20862 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: TypeInfo
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Notion of a type definition
index e04fca6aa38d780a48e8d95e3e36471aa2eb8964..9b315a100b6d2977390f24cdbcc68a950f5eb9e1 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 /*============================================================
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 ** 
 ** Class:  FastResourceComparer
 **
index c24598dba2b6951866e9e636781f7b993b3fde2a..c2931dc9e6cf5f6b90c570128bed5ead0ce31e2c 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  FileBasedResourceGroveler
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Searches for resources on disk, used for file-
index d1c85ea79d2e16261ecd7976a40f1ddeca9793ce..6c65371dcd94feb4678c3f02a6b70b1148e720d1 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  ManifestBasedResourceGroveler
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Searches for resources in Assembly manifest, used
index 2baaaf3228f363376223cbd88afc359eaf3dd7d1..5230ce273d01cc5075fefe98f870145d03102bba 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  MissingManifestResourceException
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception for a missing assembly-level resource 
index e9099224a4bfa599227d1b42cdb5f16da304ff88..66de05a64a6955da1e9300d1a3cb24e8c3ff17ef 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  MissingSatelliteAssemblyException
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception for a missing satellite assembly needed
index e22f68833e03324c743d1a5e819284051f5e0fb8..9ab5e027cf410630f739fc16ceefc377b1d653db 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  NeutralResourcesLanguageAttribute
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Tells the ResourceManager what language your main
index fb6c16067554ca8d08ff34ba0a093043b8504579..1b5ce87f61781731f51e9fb8d5864ea79377b417 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  ResourceFallbackManager
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Encapsulates CultureInfo fallback for resource 
@@ -67,7 +67,7 @@ namespace System.Resources
             return GetEnumerator();
         }
 
-        // WARING: This function must be kept in sync with ResourceManager.GetFirstResourceSet()
+        // WARING: This function must be kept in [....] with ResourceManager.GetFirstResourceSet()
         public IEnumerator<CultureInfo> GetEnumerator()
         {
             bool reachedNeutralResourcesCulture = false;
@@ -234,23 +234,23 @@ namespace System.Resources
             // settings, and applications built in certain styles.  The OS-preferred fallback should
             // be last, and the user-preferred fallback just breaks certain apps no matter where you put it.
             // 
-            // Necessary and sufficient conditions for an AppCompat 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+            // Necessary and sufficient conditions for an AppCompat bug (if we respected user & OS fallbacks):
+            //   1) A French OS (ie, you walk into an Internet café in Paris)
+            //   2) A .NET application whose neutral resources are authored in English.
+            //   3) The application did not provide an English satellite assembly (a common pattern).
+            //   4) The application is localized to French.
+            //   5) The user wants to read English, expressed in either of two ways:
+            //      a. Changing Windows\92 Display Language in the Regional Options Control Panel
+            //      b. The application explicitly ASKS THE USER what language to display.
+            // 
+            // Obviously the exact languages above can be interchanged a bit - I\92m keeping this concrete.
+            // Also the NeutralResourcesLanguageAttribute will allow this to work, but usually we set it
+            // to en-US for our assemblies, meaning all other English cultures are broken.
+            //
+            // Workarounds:            
+            //   *) Use the NeutralResourcesLanguageAttribute and tell us that your neutral resources 
+            //      are in region-neutral English (en).
+            //   *) Consider shipping a region-neutral English satellite assembly.
 
             // Future work:
             // 2) Consider a mechanism for individual assemblies to opt into wanting user-preferred fallback.
index cdff67b0962477ec4d915c78c250333918e3a769..2a66d2394195194499a05d015fcc2ea52fceddfc 100644 (file)
@@ -66,7 +66,7 @@ namespace System.Resources {
     }
 
     [FriendAccessAllowed]
-    // [Microsoft 3/9/2012] This class should be named PRIErrorInfo.
+    // [[....] 3/9/2012] This class should be named PRIErrorInfo.
     //
     // During Dev11 CLR RC Ask mode, the Windows Modern Resource Manager
     // made a breaking change such that ResourceMap.GetSubtree returns null when a subtree is
@@ -147,27 +147,27 @@ namespace System.Resources {
     // which is key for maintainability. 
     // - Makes the ResourceManager more extensible by identifying and
     // encapsulating what varies
-    // - Unearthed a 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    // - Unearthed a bug that's been lurking a while in file-based 
+    // lookup paths for InternalGetResourceSet if createIfNotExists is
+    // false.
+    // - Reuses logic, e.g. by breaking apart the culture fallback into 
+    // the fallback iterator class, we don't have to repeat the 
+    // sometimes confusing fallback logic across multiple methods
+    // - Fxcop violations reduced to 1/5th of original count. Most 
+    // importantly, code complexity violations disappeared.
+    // - Finally, it got rid of dead code paths. Because the big loop was
+    // so confusing, it masked unused chunks of code. Also, dividing 
+    // between file-based and manifest-based allowed functionaliy 
+    // unused in silverlight to fall out.
+    // 
+    // Note: this type is integral to the construction of exception objects,
+    // and sometimes this has to be done in low memory situtations (OOM) or
+    // to create TypeInitializationExceptions due to failure of a static class
+    // constructor. This type needs to be extremely careful and assume that 
+    // any type it references may have previously failed to construct, so statics
+    // belonging to that type may not be initialized. FrameworkEventSource.Log
+    // is one such example.
+    //
 
     [Serializable]
     [System.Runtime.InteropServices.ComVisible(true)]
@@ -645,7 +645,7 @@ namespace System.Resources {
             return sb.ToString();
         }
 
-        // WARNING: This function must be kept in sync with ResourceFallbackManager.GetEnumerator()
+        // WARNING: This function must be kept in [....] with ResourceFallbackManager.GetEnumerator()
         // Return the first ResourceSet, based on the first culture ResourceFallbackManager would return
         internal ResourceSet GetFirstResourceSet(CultureInfo culture)
         {
index 82ead3cc71a82335c5a475e8faaaf511c2dd2659..a67ee8c29f5e2dd88e2b7b61e8f8b225225ec2be 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  ResourceReader
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Default way to read streams of resources on 
@@ -843,7 +843,7 @@ namespace System.Resources {
                 // types which do demand serialization permission in their 
                 // deserialization .cctors will fail.
                 // Also, use a serialization binder to limit bind requests to 
-                // our allowed list of Microsoft types.
+                // our allowed list of [....] types.
                 _objFormatter.Binder = _typeLimitingBinder;
                 _typeLimitingBinder.ExpectingToDeserialize(type);
                 graph = _objFormatter.UnsafeDeserialize(_store.BaseStream, null);
@@ -1140,7 +1140,7 @@ namespace System.Resources {
                 }
                 else {
                     // Enums should be safe to deserialize, and this helps out
-                    // partially trusted, localized Microsoft apps.
+                    // partially trusted, localized [....] apps.
                     if (resourceType.BaseType == typeof(Enum)) {
                         _safeToDeserialize[i] = true;
                         continue;
@@ -1315,7 +1315,7 @@ namespace System.Resources {
                     }
                 }
                 
-                // Microsoft types may internally use some enums that aren't 
+                // [....] types may internally use some enums that aren't 
                 // on our safe to deserialize list, like Font using FontStyle.
                 Type t = ObjectReader.FastBindToType(assemblyName, typeName);
                 if (t.IsEnum)
@@ -1326,7 +1326,7 @@ namespace System.Resources {
 
                 // Throw instead of returning null.
                 // If you're looking at this in a debugger, you've either 
-                // got a hacked .resources file on your hands, or Microsoft 
+                // got a hacked .resources file on your hands, or [....] 
                 // types have taken a new dependency on another type.  Check 
                 // whether assemblyName & typeName refer to a trustworthy type,
                 // & consider adding it to the TypesSafeToDeserialize list.
@@ -1412,7 +1412,7 @@ namespace System.Resources {
                                     value = _reader.LoadObject(_dataPosition);
                                 // If enumeration and subsequent lookups happen very
                                 // frequently in the same process, add a ResourceLocator
-                                // to _resCache here.  But Microsoft enumerates and
+                                // to _resCache here.  But [....] enumerates and
                                 // just about everyone else does lookups.  So caching
                                 // here may bloat working set.
                             }
index 0d1234cb617443f6220fc71f7f7afced673f4149..c722cfb360298613a94e01e83615e0576c5b566e 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  ResourceSet
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Culture-specific collection of resources.
index 86710cfa4140b76030cede79495492cb4c51a8e2..bd3177842e76eb1fa9840e22f970ae5271765046 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  ResourceWriter
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Default way to write strings to a CLR resource 
index 0c51f6039c182db0cc696038f38357afe1ae805c..d9cdd07df561d3230580b194bd85ad9192540705 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  RuntimeResourceSet
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: CultureInfo-specific collection of resources.
index c0c0045683abd0206d3207edc71cfd855919ce1b..4987dc9e6cf6e522a6febdd47b8e0fd2bde98965 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  SatelliteContractVersionAttribute
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Specifies which version of a satellite assembly 
index fe4829ee60c36a4c4a5401852264de3ebb4b458c..da43f866bc8e3c709f9cf9a2f9b0fea14abc64cd 100644 (file)
@@ -6,7 +6,7 @@
 //
 // File: RtType.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Implements System.RuntimeType
 //
@@ -58,7 +58,7 @@ namespace System
 
     internal delegate void CtorDelegate(Object instance);
 
-    // Keep this in sync with FormatFlags defined in typestring.h
+    // Keep this in [....] with FormatFlags defined in typestring.h
     internal enum TypeNameFormatFlags
     {
         FormatBasic         = 0x00000000, // Not a bitmask, simply the tersest flag settings possible
@@ -597,8 +597,8 @@ namespace System
                                     // Grow the list by exactly one element in this case to avoid null entries at the end.
                                     //
 
-                                    // DevDiv #339308 is fixed, but we are keeping this code here for Dev11 in case there are other instances of this 
-
+                                    // DevDiv #339308 is fixed, but we are keeping this code here for Dev11 in case there are other instances of this bug.
+                                    // Remove for Dev12.
 
                                     Contract.Assert(false);
 
@@ -5851,7 +5851,7 @@ namespace System
         [Flags]
         private enum DispatchWrapperType : int
         {
-            // This enum must stay in sync with the DispatchWrapperType enum defined in MLInfo.h
+            // This enum must stay in [....] with the DispatchWrapperType enum defined in MLInfo.h
             Unknown         = 0x00000001,
             Dispatch        = 0x00000002,
             Record          = 0x00000004,
index b2d762d0cabff5c229a02d5be18996f76861769a..7e0ed8e89329c2ec0f337564a1945358ad6dc761 100644 (file)
@@ -7,7 +7,7 @@
 //
 // AsyncMethodBuilder.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Compiler-targeted types that build tasks for use as the return types of asynchronous methods.
 //
@@ -49,7 +49,7 @@ namespace System.Runtime.CompilerServices
         /// <returns>The initialized <see cref="AsyncVoidMethodBuilder"/>.</returns>
         public static AsyncVoidMethodBuilder Create()
         {
-            // Capture the current sync context.  If there isn't one, use the dummy s_noContextCaptured
+            // Capture the current [....] context.  If there isn't one, use the dummy s_noContextCaptured
             // instance; this allows us to tell the state of no captured context apart from the state
             // of an improperly constructed builder instance.
             SynchronizationContext sc = SynchronizationContext.CurrentNoFlow;
index 2f7814328d4412b69b7dbd51a65bdd8159a2811a..bae239feaadebcd57256b48d06f2dc8bf0cad0a1 100644 (file)
@@ -6,7 +6,7 @@
 /*============================================================
 ** Class:  ConditionalWeakTable
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Description: Compiler support for runtime-generated "object fields."
 **
index ec1f77d9180373e026d7a09f8b6365a8c70f94e4..ee78acad6edc5f59209d8987a5dde773edfc1425 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskAwaiter.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Types for awaiting Task and Task<T>. These types are emitted from Task{<T>}.GetAwaiter 
 // and Task{<T>}.ConfigureAwait.  They are meant to be used only by the compiler, e.g.
index 0e04facc064950ed34c8d9e401acc3b925ef5fbe..d1ab22fe9f5393b8c197eb9fdd3e203252749454 100644 (file)
@@ -7,7 +7,7 @@
 //
 // YieldAwaitable.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Compiler-targeted type for switching back into the current execution context, e.g.
 // 
index cce631b1c3aa3cd900687da6a79305d4766c0800..73d6020867643534c30fef5e04b64b17c96bf2c1 100644 (file)
@@ -11,7 +11,7 @@ namespace System.Runtime.CompilerServices
 
     using System;
 
-    /// IMPORTANT: Keep this in sync with corhdr.h
+    /// IMPORTANT: Keep this in [....] with corhdr.h
 [Serializable]
 [Flags]
 [System.Runtime.InteropServices.ComVisible(true)]
index a6d4f8a8a8da0053c36c4f7b697b0ad4ca547b35..c9cc8f42fc5725f630a19a1124f22b2f574caa22 100644 (file)
@@ -169,7 +169,7 @@ namespace System.Runtime.CompilerServices {
                 // a String to the first 16-bit character in the String.  Skip 
                 // over the MethodTable pointer, & String 
                 // length.  Of course, the String reference points to the memory 
-                // after the sync block, so don't count that.  
+                // after the [....] block, so don't count that.  
                 // This property allows C#'s fixed statement to work on Strings.
                 // On 64 bit platforms, this should be 12 (8+4) and on 32 bit 8 (4+4).
 #if WIN32
index 7cc021dbdc1c4cd1652ca613042cc7312bb10d3c..13b30a0f29fee791f794d8b3ec6af69bd6a254ed 100644 (file)
@@ -13,7 +13,7 @@
 **
 ** Created: 06/20/2008
 ** 
-** <owner>Microsoft</owner>
+** <owner>[....]</owner>
 ** 
 =============================================================================*/
 
index 57ea2c178c5046e162375bfddbf50e87cd6ffa2e..acda22b5d2654af9bc3c3cf32f4a4099953d92fd 100644 (file)
@@ -13,7 +13,7 @@
 **
 ** Created: 10/07/2008
 ** 
-** <owner>Microsoft</owner>
+** <owner>[....]</owner>
 ** 
 =============================================================================*/
 
index 6af2541c5e3dcb21b0003e53df71696f65e0c927..dbb3f686c2fe185a215c610b8a0519e8c2c7fd09 100644 (file)
@@ -13,7 +13,7 @@
 **
 ** Created: 11/2/2010
 ** 
-** <owner>Microsoft</owner>
+** <owner>[....]</owner>
 ** 
 =============================================================================*/
 
index 6e40e101d57a2d8f659faaf443a975d5d66ce012..a91fb6f6a4245bba98052dfe16cdddc5b21c107b 100644 (file)
@@ -446,7 +446,7 @@ namespace System.Runtime.InteropServices{
 
     [Serializable]
     [System.Runtime.InteropServices.ComVisible(true)]
-    // Note that this enum should remain in-sync with the CorNativeType enum in corhdr.h
+    // Note that this enum should remain in-[....] with the CorNativeType enum in corhdr.h
     public enum UnmanagedType
     {
         Bool = 0x2,         // 4 byte boolean value (true != 0, false == 0)
index 5fcee00f2c41b9c1e6eb027ee2160b4020a22ee9..5480f22e98b582a5a9363196dd2e47d54bdc24c1 100644 (file)
@@ -44,7 +44,7 @@ namespace System.Runtime.InteropServices
     [System.Runtime.InteropServices.ComVisible(true)]
     public struct GCHandle
     {
-        // IMPORTANT: This must be kept in sync with the GCHandleType enum.
+        // IMPORTANT: This must be kept in [....] with the GCHandleType enum.
         private const GCHandleType MaxHandleType = GCHandleType.Pinned;
 
 #if MDA_SUPPORTED
index 8dfd4c70ca51fbb43d406452d07eec120d36065a..8be810c56415d3b07e4ede466670104b6a1134e5 100644 (file)
@@ -4,9 +4,9 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 
index 248643a3c15de15af8f7d73d59c65c013b105c24..ad818c93acb8ecd1bec0dd0f731ee6b2a3f38fab 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //
 // <OWNER>GPaperin</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Runtime;
@@ -85,7 +85,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
                 throw new ArgumentOutOfRangeException("arrayIndex");
 
             // Does the dimension in question have sufficient space to copy the expected number of entries?
-            // We perform this check before valid index check to ensure the exception message is in sync with
+            // We perform this check before valid index check to ensure the exception message is in [....] with
             // the following snippet that uses regular framework code:
             //
             // ArrayList list = new ArrayList();
index 44b63f9115429d855f39a41fca0d95c68526b1eb..25c3184066da5491c9c5f35373a3bbd028b69ec3 100644 (file)
@@ -4,8 +4,8 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Collections.Generic;
index 3dc29580b2801c3b48361f423c61650569e990c0..c7781abf070f0a0bf4d5587c2589d189cda7a353 100644 (file)
@@ -4,9 +4,9 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Diagnostics.Contracts;
@@ -475,7 +475,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
                     return (T)(object)ipv.GetDouble();
                 }
                 else {
-                    BCLDebug.Assert(false, "T in coersion function wasn't understood as a type that can be coerced - make sure that CoerceScalarValue and NumericScalarTypes are in sync");
+                    BCLDebug.Assert(false, "T in coersion function wasn't understood as a type that can be coerced - make sure that CoerceScalarValue and NumericScalarTypes are in [....]");
                 }
             }
 
index 831358e2d525b62d56354af0e6dfc4c1b940bbcc..edb419c91d94682e396c8ce91442e9c4afcabbf7 100644 (file)
@@ -4,9 +4,9 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Collections;
@@ -107,7 +107,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
             _value = obj;
 
             // This should not fail but I'm making a cast here anyway just in case 
-            // we have a 
+            // we have a bug (that _value is not an array) or there is a runtime failure
             _list = (IList) _value;
         }
 
index 60e229954f0eb44bf0c4f454ddbc6a984903539c..a4ee4b1ed8a54467bc686b4fa5ef15e46af5009b 100644 (file)
@@ -4,9 +4,9 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Collections;
index 092e43a2bcce6234645faaeac482a2b95934ee53..5f96a90e75d338eb55e1ff2195b88625af58fb0e 100644 (file)
@@ -4,9 +4,9 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 
index 152e46f3403204a3744e18aca01bc3e7e5dad548..2de657df7f77376d05692c740c35fedfdb5c23ea 100644 (file)
@@ -4,9 +4,9 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Collections.Generic;
index cd73d355f8cd9dfe8f1757312ade1ee726b2d104..4817cbcf25cdbfe05573f4cb4633d742274ac195 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //
 // <OWNER>GPaperin</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Security;
@@ -98,7 +98,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
                 value = _this.Lookup(key);
                 return true;
             }
-            catch (Exception ex)  // Still may hit this case due to a ----, or a potential 
+            catch (Exception ex)  // Still may hit this case due to a ----, or a potential bug.
             {
                 if (__HResults.E_BOUNDS == ex._HResult)
                 {
index e1460806c420ac0243cdf6fb9a2b5b0547cbe6ea..08d11e672b7efa4651cdb46a7c67ca0b6d6b99d3 100644 (file)
@@ -4,8 +4,8 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Collections;
index a093837c5afe15f07bc6ab3ecd2cc66bb6aa7cc8..7f5e9cf83facfdce99cc49488ec5de49b881c63b 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //
 // <OWNER>GPaperin</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Security;
index dd963c54a2b856f5702d15f860ac9a7a612a1c73..e676a47a5aa3db5fff922ed6bd95cceeb1167f0c 100644 (file)
@@ -4,9 +4,9 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Diagnostics.Contracts;
index 51858b00038317926f098e11a46cba31a00e0367..edc20f2b6babf17642ef583374492d30c641484b 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //
 // <OWNER>GPaperin</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Security;
index c186cf73fe5fc30fb21cc521f628f713c77a34e4..aacf09fdbb1dc4c4c5641f2798a1d2c64c7abf08 100644 (file)
@@ -4,9 +4,9 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Collections.Generic;
index 4e57e1e55b9c01789152631ab9630cf5e63d53ce..74b3c58044460a33027a95d8cdf43b31f2614418 100644 (file)
@@ -1745,7 +1745,7 @@ namespace System.Runtime.Remoting.Activation {
                 // Need to grow our arrays ... this will be exceedingly rare
                 Object[] newTypes = new Object[activationTypes.Length * 2];
                 Object[] newAttr = new Object[activationAttributes.Length * 2];
-                Contract.Assert(newAttr.Length == newTypes.Length,"These should be in sync!");
+                Contract.Assert(newAttr.Length == newTypes.Length,"These should be in [....]!");
                 Array.Copy(activationTypes, newTypes, activationTypes.Length);
                 Array.Copy(activationAttributes, newAttr, activationAttributes.Length);    
                 activationTypes = newTypes;
index cc38933cfe858fe0617acf3fd0ac7d6d28d07762..0b17b247563c3732eb8f15cbd99b32f378ab1e9c 100644 (file)
@@ -6,7 +6,7 @@ using System.Diagnostics.Contracts;
 // ==--==
 //* File:    Channel.cs
 //*
-//* <EMAIL>Author:  Tarun Anand (Microsoft)</EMAIL>
+//* <EMAIL>Author:  Tarun Anand ([....])</EMAIL>
 //*
 //* Purpose: Defines the general purpose remoting proxy
 //*
index 95d3b542f766583c0fa97912e8e0ed8492627eb6..20709a5bd9c75bdc5adda657c9e9db0449be53b9 100644 (file)
@@ -453,7 +453,7 @@ namespace System.Runtime.Remoting.Channels {
         
     } // ServerChannelSinkStack    
 
-    // helper class for transforming sync message parameter lists into its
+    // helper class for transforming [....] message parameter lists into its
     //   async counterparts
     internal static class AsyncMessageHelper
     {
index d20b7b9ef9c4dc81d316c55abaf730bfb967c793..07758b1775b9fe7f95077fb976d1d814dd465617 100644 (file)
@@ -7,9 +7,9 @@
 //
 // File:        ClientSponsor.cs
 //
-// Contents:    Agent for keeping Server Object's lifetime in sync with a client's lifetime
+// Contents:    Agent for keeping Server Object's lifetime in [....] with a client's lifetime
 //
-// History:     8/9/00   <EMAIL>Microsoft</EMAIL>        Created
+// History:     8/9/00   <EMAIL>[....]</EMAIL>        Created
 //
 //+----------------------------------------------------------------------------
 
index dc299d0898e7922d60c084ad4cfeb69aa0626a22..5eb0831302cc61078a3d9105ba573d582d196674 100644 (file)
@@ -844,7 +844,7 @@ namespace System.Runtime.Remoting {
             lock (Info)
             {            
                 // We make an entry in our config tables so as to keep
-                // both the file-based and programmatic config in sync.
+                // both the file-based and programmatic config in [....].
                 Info.AddWellKnownEntry(entry);
             }
         } // RegisterWellKnownServiceType
index 7ee42e4f6acaab11dfb6405552043fe76ab1aa97..91d0bbecfd1fe790d65642dc439707657c9501b9 100644 (file)
@@ -436,7 +436,7 @@ namespace System.Runtime.Remoting.Contexts {
                     }
                     iSink++;
                 }
-                // now check if we raced and set appropriately
+                // now check if we ----d and set appropriately
                 lock (this)
                 {
                     if (_clientContextChain==null)
index a6c628de3ddc34071354416f75894f3af3e02f85..010996b9ea865ff5c1084592939ecd06cfb439c2 100644 (file)
@@ -284,7 +284,7 @@ namespace System.Runtime.Remoting.Channels {
             //          warning in CrossAppDomainSink::.ctor above
             //
             lock(staticSyncObject) {        
-                // Note: keep this in sync with DomainUnloaded below 
+                // Note: keep this in [....] with DomainUnloaded below 
                 int key = xadData.DomainID;
                 if (_sinks == null)
                 {
@@ -321,7 +321,7 @@ namespace System.Runtime.Remoting.Channels {
                 {
                     return;
                 }
-                // Note: keep this in sync with FindOrCreateSink
+                // Note: keep this in [....] with FindOrCreateSink
                 int i = 0;
                 int remove = -1;
                 while (_sinks[i] != null)
@@ -476,7 +476,7 @@ namespace System.Runtime.Remoting.Channels {
         [System.Security.SecurityCritical]  // auto-generated
         public virtual IMessage SyncProcessMessage(IMessage reqMsg) 
         {
-            Message.DebugOut("\n::::::::::::::::::::::::: CrossAppDomain Channel: Sync call starting");
+            Message.DebugOut("\n::::::::::::::::::::::::: CrossAppDomain Channel: [....] call starting");
             IMessage errMsg = InternalSink.ValidateMessage(reqMsg);
             if (errMsg != null)
             {
@@ -520,7 +520,7 @@ namespace System.Runtime.Remoting.Channels {
                     // will terminate the security stackwalk caused when 
                     // serialization checks for the correct permissions at the 
                     // remoting stack frame so the check won't continue on to 
-                    // the user and fail. <EMAIL>[from Microsoft]</EMAIL>
+                    // the user and fail. <EMAIL>[from [....]]</EMAIL>
                     // We will hold off from doing this for x-process channels
                     // until the big picture of distributed security is finalized.
 
@@ -560,7 +560,7 @@ namespace System.Runtime.Remoting.Channels {
                     if (responseBytes != null) {
                         retStm = new MemoryStream(responseBytes);
     
-                        Message.DebugOut("::::::::::::::::::::::::::: CrossAppDomain Channel: Sync call returning!!\n");
+                        Message.DebugOut("::::::::::::::::::::::::::: CrossAppDomain Channel: [....] call returning!!\n");
                         //*********************** DESERIALIZE RET-MSG **************
                         desRetMsg = CrossAppDomainSerializer.DeserializeMessage(retStm, reqMsg as IMethodCallMessage);
                     }
index 52aaf451e8f8342950257ad07bc28e2a4702b890..154fc9839c570203f154c6bcc7842c3e113a8197 100644 (file)
@@ -133,7 +133,7 @@ namespace System.Runtime.Remoting.Channels {
             
             try
             {
-                Message.DebugOut("\n::::::::::::::::::::::::: CrossContext Channel: Sync call starting");
+                Message.DebugOut("\n::::::::::::::::::::::::: CrossContext Channel: [....] call starting");
                 IMessage errMsg = ValidateMessage(reqMsg);
                 if (errMsg != null)
                 {
@@ -163,7 +163,7 @@ namespace System.Runtime.Remoting.Channels {
                 }
             }
                 
-            Message.DebugOut("::::::::::::::::::::::::::: CrossContext Channel: Sync call returning!!\n");                         
+            Message.DebugOut("::::::::::::::::::::::::::: CrossContext Channel: [....] call returning!!\n");                         
             return replyMsg;
         }
 
index 6959edaf974541aa72744b83c06fc94a1de05fc6..3e3650d85d0dcf8eee9d19d9de468f4a72600381 100644 (file)
@@ -449,7 +449,7 @@ namespace System.Runtime.Remoting {
                     if (takeAndRelease)
                         rwlock.AcquireWriterLock(INFINITE);
 
-                    // SetIdentity will give the correct Id if we raced
+                    // SetIdentity will give the correct Id if we ----d
                     // between the ResolveIdentity call above and now.
                     //   (we are unmarshaling, and the server should guarantee
                     //    that the uri is unique, so we will use an existing identity
index cafb08d70991e636a640e822513a4a2ef460a64e..a0884ce4e522a714f059b2ccc144508c62a085a0 100644 (file)
@@ -10,7 +10,7 @@
 //
 // Contents:    Lease class
 //
-// History:     1/5/00   <EMAIL>Microsoft</EMAIL>        Created
+// History:     1/5/00   <EMAIL>[....]</EMAIL>        Created
 //
 //+----------------------------------------------------------------------------
 
index 8acbeb04933a8b9fe959197d04bae7859af659c3..464f27515f1851fb120634c2b3ea054d2b525a32 100644 (file)
@@ -10,7 +10,7 @@
 //
 // Contents:    Administers the leases in an appdomain
 //
-// History:     1/5/00   <EMAIL>Microsoft</EMAIL>        Created
+// History:     1/5/00   <EMAIL>[....]</EMAIL>        Created
 //
 //+----------------------------------------------------------------------------
 
index dda57505bccfa04c235ff435a7d503356dc0690e..4cba7cf9b126e0b9791c946a4e80545ccfb4b323 100644 (file)
@@ -48,7 +48,7 @@ namespace System.Runtime.Remoting.Messaging {
     {
 
         // *** NOTE ***
-        // Keep these in sync with the flags in Message.h
+        // Keep these in [....] with the flags in Message.h
         // flags
         internal const int Sync = 0;        // Synchronous call
         internal const int BeginAsync = 1;  // Async Begin call
@@ -2018,7 +2018,7 @@ namespace System.Runtime.Remoting.Messaging {
                 }
                 return null;
             }
-            [System.Security.SecuritySafeCritical] // 
+            [System.Security.SecuritySafeCritical] // TODO: review - implements transparent public method
             set
             {
                 if (ContainsSpecialKey(key))
@@ -5502,7 +5502,7 @@ namespace System.Runtime.Remoting.Messaging {
         
         // 
         // Helper methods for expanding and contracting argument lists
-        //   when translating from async methods to sync methods and back.
+        //   when translating from async methods to [....] methods and back.
         //
 
         internal static Object[] ExpandAsyncEndArgsToSyncArgs(RemotingMethodCachedData syncMethod,
index a88d0220a0d8bc2e24c85780a6a3538759020dba..a822b3afe3dd2894a345386b99910b0a8fc4d5e6 100644 (file)
@@ -642,21 +642,21 @@ namespace System.Runtime.Remoting {
             String urlToBash = bashInfo[0];
             String replacementUrl = bashInfo[1];
 
-            // Copy channel info and go Microsoft urls.
+            // Copy channel info and go [....] urls.
             ChannelInfo newChInfo = new ChannelInfo();
             newChInfo.ChannelData = new Object[oldChannelData.Length];
             for (int co = 0; co < oldChannelData.Length; co++)
             {
                 newChInfo.ChannelData[co] = oldChannelData[co];
 
-                // see if this is one of the ones that we need to Microsoft
+                // see if this is one of the ones that we need to [....]
                 ChannelDataStore channelDataStore = newChInfo.ChannelData[co] as ChannelDataStore;
                 if (channelDataStore != null)
                 {
                     String[] urls = channelDataStore.ChannelUris;
                     if ((urls != null) && (urls.Length == 1) && urls[0].Equals(urlToBash))
                     {
-                        // We want to Microsoft just the url, so we do a shallow copy
+                        // We want to [....] just the url, so we do a shallow copy
                         // and replace the url array with the replacementUrl.
                         ChannelDataStore newChannelDataStore = channelDataStore.InternalShallowCopy();
                         newChannelDataStore.ChannelUris = new String[1];
@@ -1023,7 +1023,7 @@ namespace System.Runtime.Remoting {
                     Object[] channelData = chan.ChannelData;
                     int channelDataLength = channelData.Length;
                     Object[] newChannelData = new Object[channelDataLength];
-                    // Clone the data so that we dont Microsoft the current appdomain data which is stored
+                    // Clone the data so that we dont [....] the current appdomain data which is stored
                     // as a static
                     Array.Copy(channelData, newChannelData, channelDataLength);
                     for (int i = 0; i < channelDataLength; i++)
index c574c9327960d44d120a279664040feb64343b2c..b58d140e276863244202d19dd93718fb9b066a64 100644 (file)
@@ -35,7 +35,7 @@ namespace System.Runtime.Remoting.Proxies {
     using System.Diagnostics.Contracts;
     
 
-    // NOTE: Keep this in sync with unmanaged enum definition in Remoting.h
+    // NOTE: Keep this in [....] with unmanaged enum definition in Remoting.h
     [Serializable]
     internal enum CallType
     {
@@ -52,7 +52,7 @@ namespace System.Runtime.Remoting.Proxies {
         Initialized         = 0x2
     };
 
-    // NOTE: Keep this in sync with unmanaged struct "messageData" in Remoting.h
+    // NOTE: Keep this in [....] with unmanaged struct "messageData" in Remoting.h
     [System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
     internal struct MessageData
     {
@@ -742,7 +742,7 @@ namespace System.Runtime.Remoting.Proxies {
                     // but the constructormessage hasn't been setup.
                     // so let us just bail out.. 
                     // this is currently used by ServicedComponent's for cross appdomain
-                    // pooling: <EMAIL>Microsoft</EMAIL>
+                    // pooling: <EMAIL>[....]</EMAIL>
                     //                    
                     ctorMsg = new ConstructorCallMessage(null, null, null, (RuntimeType)GetProxiedType());                    
                     // Set the constructor frame info in the CCM
@@ -834,7 +834,7 @@ namespace System.Runtime.Remoting.Proxies {
             {
 
                 // This was a begin-async on a non-Remoting Proxy. For V-1 they 
-                // cannot support Async and end up doing a Sync call. We need 
+                // cannot support Async and end up doing a [....] call. We need 
                 // to fill up here to make the call look like async to 
                 // the caller. 
                 // Create the async result to return
index a11ffd983c5c948d54a1d44a168047782600d551..244006ea4d7d6b759ae436d31c89e91855cd3264 100644 (file)
@@ -258,7 +258,7 @@ namespace System.Runtime.Remoting.Metadata
         // parameter maps
         // NOTE: these fields are all initialized at the same time however access to 
         // the internal property of each field is locked only on that specific field 
-        // having been initialized. - Microsoft
+        // having been initialized. - [....]
         private int[] _inRefArgMap = null;     // parameter map of input and ref parameters
         private int[] _outRefArgMap = null;     // parameter map of out and ref parameters (exactly all byref parameters)
         private int[] _outOnlyArgMap = null;   // parameter map of only output parameters
index 3898b45afc634211586101e370d70e0d92579cad..c91d228974df270a5a21f124d97feae41f98f3b8 100644 (file)
@@ -233,7 +233,7 @@ namespace System.Runtime.Remoting.Proxies {
         
 
         // This is called for all remoted calls on a TP except Ctors
-        // The method called may be Sync, Async or OneWay(special case of Async)
+        // The method called may be [....], Async or OneWay(special case of Async)
         // In the Async case we come here for both BeginInvoke & EndInvoke
         internal virtual IMessage InternalInvoke(
             IMethodCallMessage reqMcmMsg, bool useDispatchMessage, int callType)
index 679d4eff45a140b891d573d2bc1bff64f59433d2..13b799dbbfe12d46f80cf1d56d12b9ec26e0b23a 100644 (file)
@@ -6,7 +6,7 @@
 // 
 // File: RemotingServices.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 // Author(s):   <EMAIL>Gopal Kakivaya (GopalK)</EMAIL>
 // 
@@ -616,7 +616,7 @@ namespace System.Runtime.Remoting {
                     {
                         int channelDataLength = channelData.Length;
                         Object[] newChannelData = new Object[channelDataLength];
-                        // Clone the data so that we dont Microsoft the current appdomain data which is stored
+                        // Clone the data so that we dont [....] the current appdomain data which is stored
                         // as a static
                         Array.Copy(channelData, newChannelData, channelDataLength);
                         for (int i = 0; i < channelDataLength; i++)
index 21de0d6cd08477eeaf8ce8e572ed3c72adba43c3..07d820acf83f83ce4997ead565bc0a228364b19f 100644 (file)
@@ -231,7 +231,7 @@ namespace System.Runtime.Remoting.Metadata.W3cXsd2001
     {
         // Convert from ISO/xsd TimeDuration to urt TimeSpan
         // The form of the time duration is PxxYxxDTxxHxxMxx.xxxS or PxxYxxDTxxHxxMxxS
-        // Keep in sync with Message.cs
+        // Keep in [....] with Message.cs
 
 
         public static String XsdType
index 7ade238a04418cc3c51c7b85aee11b9d360d2c85..dc03e3ee70caa265d0d36f89d7b497a1667ab923 100644 (file)
@@ -271,7 +271,7 @@ namespace System.Runtime.Remoting.Contexts {
         /* 
         * Call back function -- executed for each work item that 
         * was enqueued. This is invoked by a thread-pool thread for
-        * async work items and the caller thread for sync items.
+        * async work items and the caller thread for [....] items.
         */
         private void DispatcherCallBack(Object stateIgnored, bool ignored)
         {
@@ -356,7 +356,7 @@ namespace System.Runtime.Remoting.Contexts {
             // See if we found a non-signaled work item at the head. 
             if (bNotify)
             {
-                // In both sync and async cases we just hand off the _locked state to
+                // In both [....] and async cases we just hand off the _locked state to
                 // the next thread which will execute.
                 if (nextWork.IsAsync())
                 {
@@ -366,7 +366,7 @@ namespace System.Runtime.Remoting.Contexts {
                 }
                 else
                 {
-                    // Sync-WorkItem: notify the waiting sync-thread.
+                    // [....]-WorkItem: notify the waiting [....]-thread.
                     lock(nextWork)
                     {
                         Monitor.Pulse(nextWork);
@@ -419,7 +419,7 @@ namespace System.Runtime.Remoting.Contexts {
                 }
                 else
                 {        
-                    // Sync work is queued only if there are other items
+                    // [....] work is queued only if there are other items
                     // already in the queue.
                     lock(work)
                     {
@@ -434,7 +434,7 @@ namespace System.Runtime.Remoting.Contexts {
                             }
                             else
                             {
-                                //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] ~~~ ENQUEUE Sync!" + (work.IsDummy()?" DUMMY ":" REAL ") + work._thread);
+                                //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] ~~~ ENQUEUE [....]!" + (work.IsDummy()?" DUMMY ":" REAL ") + work._thread);
                                 bQueued = true;
                                 work.SetWaiting();
                                 _workItemQueue.Enqueue(work);
@@ -514,7 +514,7 @@ namespace System.Runtime.Remoting.Contexts {
             // This returns TRUE only if it is a non-reEntrant context
             // AND 
             // (the LCID of the reqMsg matches that of 
-            // the top level sync call lcid associated with the context.
+            // the top level [....] call lcid associated with the context.
             //  OR
             // it matches one of the async call out lcids)
             
@@ -668,7 +668,7 @@ namespace System.Runtime.Remoting.Contexts {
     
     //*************************************** WORK ITEM ********************************//
     /*
-    *   A work item holds the info about a call to Sync or
+    *   A work item holds the info about a call to [....] or
     *   Async-ProcessMessage.
     */
     internal class WorkItem
@@ -681,9 +681,9 @@ namespace System.Runtime.Remoting.Contexts {
         internal int _flags;
         internal IMessage _reqMsg;
         internal IMessageSink _nextSink;
-        // ReplySink will be null for an sync work item.
+        // ReplySink will be null for an [....] work item.
         internal IMessageSink _replySink;
-        // ReplyMsg is set once the sync call is completed
+        // ReplyMsg is set once the [....] call is completed
         internal IMessage _replyMsg;
     
         // Context in which the work should execute.
@@ -778,14 +778,14 @@ namespace System.Runtime.Remoting.Contexts {
         }
     
         /*
-        *   Execute is called to complete a work item (sync or async).
+        *   Execute is called to complete a work item ([....] or async).
         *   Execute assumes that the context is set correctly and the lock
         *   is taken (i.e. it makes no policy decisions)
         * 
         *   It is called from the following 3 points:
         *       1. thread pool thread executing the callback for an async item
-        *       2. calling thread executing the callback for a queued sync item
-        *       3. calling thread directly calling Execute for a non-queued sync item
+        *       2. calling thread executing the callback for a queued [....] item
+        *       3. calling thread directly calling Execute for a non-queued [....] item
         */
         [System.Security.SecurityCritical]  // auto-generated
         internal virtual void Execute()
@@ -842,20 +842,20 @@ namespace System.Runtime.Remoting.Contexts {
                 // Notify the property that we are leaving 
                 _property.HandleThreadExit();
 
-                //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] R: Sync call-out");
+                //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] R: [....] call-out");
                 replyMsg = _nextSink.SyncProcessMessage(reqMsg);
     
                 // We will just block till we are given permission to re-enter
                 // Notify the property that we wish to re-enter the domain.
                 // This will block the thread here if someone is in the domain.
-                //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] R: Sync call-out returned, waiting for lock");                
+                //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] R: [....] call-out returned, waiting for lock");                
                 _property.HandleThreadReEntry(); 
                 Contract.Assert(_property.Locked == true,"_property.Locked == true");
             }
             else
             {
                 // In the non-reentrant case we are just a pass-through sink
-                //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] NR: Sync call-out (pass through)");                
+                //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] NR: [....] call-out (pass through)");                
                 // We should mark the domain with our LCID so that call-backs are allowed to enter..
                 LogicalCallContext cctx = 
                     (LogicalCallContext) reqMsg.Properties[Message.CallContextKey];
@@ -868,7 +868,7 @@ namespace System.Runtime.Remoting.Contexts {
                     // start of each Invoke. As an optimization we now do it 
                     // here in a delayed fashion... since currently only 
                     // Synchronization needs it
-                    // Note that for Sync-calls we would just inherit an LCID
+                    // Note that for [....]-calls we would just inherit an LCID
                     // if the call has one, if not we create one. However for
                     // async calls we always generate a new LCID.
                     lcid = Identity.GetNewLogicalCallID();
@@ -896,7 +896,7 @@ namespace System.Runtime.Remoting.Contexts {
                 {
                     _property.SyncCallOutLCID = null;
 
-                    // The sync callOut is done, we do not need the lcid
+                    // The [....] callOut is done, we do not need the lcid
                     // that was associated with the call any more.
                     // (clear it only if we added one to the reqMsg)
                     if (bClear)
@@ -914,7 +914,7 @@ namespace System.Runtime.Remoting.Contexts {
                     }
                 }
                 
-                //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] NR: Sync call-out returned");
+                //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] NR: [....] call-out returned");
             }
             return replyMsg;
         }
@@ -952,7 +952,7 @@ namespace System.Runtime.Remoting.Contexts {
 
                 Contract.Assert(
                     _property.SyncCallOutLCID == null,
-                    "Cannot handle async call outs when already in a top-level sync call out");
+                    "Cannot handle async call outs when already in a top-level [....] call out");
                 //DBGConsole.WriteLine(Thread.CurrentThread.GetHashCode()+"] NR: Async CallOut: adding to lcidList: " + lcid);                                            
                 _property.AsyncCallOutLCIDList.Add(lcid);
             }
@@ -1012,7 +1012,7 @@ namespace System.Runtime.Remoting.Contexts {
             public virtual IMessage SyncProcessMessage(IMessage reqMsg)
             {
                 
-                // We handle this as a regular new Sync workItem
+                // We handle this as a regular new [....] workItem
                 // 1. Create a work item 
                 WorkItem work = new WorkItem(reqMsg,
                                             _nextSink,
index d900c52225d5e2ae69ab3df9fa53e35a69be4e65..37f9d0f7a4deeea808a5e4942ee12a340e5bfe78 100644 (file)
@@ -7,12 +7,12 @@
 **
 ** File:    UrlAttribute.cs
 **
-** <EMAIL>Author:  Tarun Anand (Microsoft)</EMAIL>
+** <EMAIL>Author:  Tarun Anand ([....])</EMAIL>
 **
 ** Purpose: Defines an attribute which can be used at the callsite to
 **          specify the URL at which the activation will happen.
 **
-** Date:    Microsoft 30, 2000
+** Date:    [....] 30, 2000
 **
 ===========================================================*/
 namespace System.Runtime.Remoting.Activation {
index 8fe12ccefc0ab78a5a8117c67c0ff959dfc38811..d3ef1e362b82c71941ffe176937ac2cb84acb021 100644 (file)
@@ -7,7 +7,7 @@
  **
  ** Class: SoapFault
  **
- ** <EMAIL>Author: Peter de Jong (Microsoft)</EMAIL>
+ ** <EMAIL>Author: Peter de Jong ([....])</EMAIL>
  **
  ** Purpose: Specifies information for a Soap Fault
  **
index bfab816e81c9cd1c3f5bb29d8dc47d6a26da3636..fa47f3bff4eec5aec3c0c844bbea022b49c7abb2 100644 (file)
@@ -93,7 +93,7 @@ namespace System.Runtime.Serialization
             }
             else
             {
-                // Getting here means a 
+                // Getting here means a bug in cloner
                 throw new ArgumentException(Environment.GetResourceString("Arg_SerializationException"));
             }
 
index 5f1b03000b40bbd117526b18f1aa18d354666d25..8dbe02ab77ba8731680d73725bae8a21b8416825 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Collections;
index 978d9ce78c68bbe1a1a35d2a094b35580a1ca3dd..0f223e74b2243e562fe883c24693f0d00ae04645 100644 (file)
@@ -56,7 +56,7 @@ namespace System.Runtime.Serialization {
     }
     
     // **********************************************************
-    // Keep these in sync with the version in vm\runtimehandles.h
+    // Keep these in [....] with the version in vm\runtimehandles.h
     // **********************************************************
 [Serializable]
 [Flags]
index e9f6817ab4868417c31ec81b0863fb6bb7bf42d8..441988f3058c5e5dd1c0c07c28cee1bf3e064007 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  BinaryCompatibility
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: This class is used to determine which binary compatibility
index 4d6f0b3ffb4c3f475cea255e0c1e582f6764b4ea..51f68edb96ed1c4f0862de59874c4d2295b7b3ea 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class:  MultitargetingHelpers
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Central repository for helpers supporting 
index 5d5818e306f74242de29af3c63be75ee7b698444..05cecb7b10e166a04ae9ef4a7a297d14e6c3e5aa 100644 (file)
@@ -2149,7 +2149,7 @@ namespace System
 
         #region Private Data Members
         //
-        // Keep the layout in sync with SignatureNative in the VM
+        // Keep the layout in [....] with SignatureNative in the VM
         //
         internal RuntimeType[] m_arguments;
         internal RuntimeType m_declaringType;
index 4776e5f6dba01802ffabf754c2ef3527b4480dfd..f0dcbd61941d7c94e181ace351413c6f79520887 100644 (file)
@@ -137,8 +137,8 @@ namespace System.Security.AccessControl
             {
                 //
                 // Only have two bytes to store the length in.
-                // Indicates a 
-
+                // Indicates a bug in the implementation, not in user's code.
+                //
 
                 Contract.Assert( false, "Length > ushort.MaxValue" );
                 throw new SystemException();
@@ -395,8 +395,8 @@ namespace System.Security.AccessControl
             if (((!( result is ObjectAce )) && (( binaryForm[offset + 2] << 0 ) + ( binaryForm[offset + 3] << 8 ) != result.BinaryLength ))
                 //
                 // This is needed because object aces created through ADSI have the advertised ACE length
-                // greater than the actual length by 32 (
-
+                // greater than the actual length by 32 (bug in ADSI).
+                //
                 || (( result is ObjectAce ) && (( binaryForm[offset + 2] << 0 ) + ( binaryForm[offset + 3] << 8 ) != result.BinaryLength ) && ((( binaryForm[offset + 2] << 0 ) + ( binaryForm[offset + 3] << 8 ) - 32 ) != result.BinaryLength )))
             {
                 goto InvalidParameter;
@@ -1199,8 +1199,8 @@ namespace System.Security.AccessControl
                 default:
 
                     //
-                    // Indicates a 
-
+                    // Indicates a bug in the implementation, not in user's code
+                    //
 
                     Contract.Assert( false, "Invalid ACE type" );                    
                     throw new SystemException();
index 71d016bddd991c0aa3d651f5ec86768319a87df0..674cdd48519ccfe6647e02616a8fb92824397ce6 100644 (file)
@@ -373,9 +373,9 @@ namespace System.Security.AccessControl
                 if ( aceLength % 4 != 0 )
                 {
                     //
-                    // This indicates a 
-
-
+                    // This indicates a bug in one of the ACE classes.
+                    // Binary length of an ace must ALWAYS be divisible by 4.
+                    //
 
                     Contract.Assert( false, "aceLength % 4 != 0" );
                     throw new SystemException();
@@ -389,8 +389,8 @@ namespace System.Security.AccessControl
                     // Increment the offset by the advertised length rather than the 
                     // actual binary length. (Ideally these two should match, but for
                     // object aces created through ADSI, the actual length is 32 bytes 
-                    // less than the allocated size of the ACE. This is a 
-
+                    // less than the allocated size of the ACE. This is a bug in ADSI.)
+                    //
                     offset += (binaryForm[offset + 2] << 0) + (binaryForm[offset + 3] << 8);
                 }
                 else
@@ -512,9 +512,9 @@ namespace System.Security.AccessControl
                 if ( aceLength % 4 != 0 )
                 {
                     //
-                    // This indicates a 
-
-
+                    // This indicates a bug in one of the ACE classes.
+                    // Binary length of an ace must ALWAYS be divisible by 4.
+                    //
 
                     Contract.Assert( false, "aceLength % 4 != 0" );
                     throw new SystemException();
@@ -548,9 +548,9 @@ namespace System.Security.AccessControl
                 if ( value.BinaryLength % 4 != 0 )
                 {
                     //
-                    // This indicates a 
-
-
+                    // This indicates a bug in one of the ACE classes.
+                    // Binary length of an ace must ALWAYS be divisible by 4.
+                    //
 
                     Contract.Assert( false, "aceLength % 4 != 0" );
                     throw new SystemException();
@@ -1787,7 +1787,7 @@ namespace System.Security.AccessControl
                     if ( ace == null )
                     {
                         //
-                        // <Microsoft-9/19/2004> Afraid to yank this statement now
+                        // <[....]-9/19/2004> Afraid to yank this statement now
                         // for fear of destabilization, so adding an assert instead
                         //
 
index cf75b4a7dba9b1c51f11f20ed5c8685befa50bd0..099ebdec156e7726ea59d5f7ec6fd9026bfe105b 100644 (file)
@@ -913,7 +913,7 @@ namespace System.Security.AccessControl
             ControlFlags actualFlags = flags | ControlFlags.DiscretionaryAclPresent;
             
             //
-            // Keep SACL and the flag bit in sync.
+            // Keep SACL and the flag bit in [....].
             //
 
             if (systemAcl == null)
@@ -1263,7 +1263,7 @@ namespace System.Security.AccessControl
 
         //
         // These two add/remove method must be called with great care (and thus it is internal)
-        // The caller is responsible for keeping the SaclPresent and DaclPresent bits in sync
+        // The caller is responsible for keeping the SaclPresent and DaclPresent bits in [....]
         // with the actual SACL and DACL.
         //
 
index f76ef8a2b26d93e3f042e82993db87ef1f82d67f..cd8b165baaf1c6e2c0781e66122bb49a56f82f80 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 using  System.Runtime.InteropServices;
 
 namespace System.Security
index b3f6563760380c99b584da934de5bc29732e85b7..be1d10fdce645917f7b11ccee4086e0fe2ef0676 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index 9a49bc497d41d158c076f61e45878174e1182fd2..decc52ecfa2ac35197d3f23dd99d091d9d54ad58 100644 (file)
@@ -7,7 +7,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 87a8604ab141e9578d9ab83ec2ddb2e7a8a6c8a1..5b8627cd9b0c8034c73aa5837cc632fbf5c59d3e 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 3512df9da93cd013b897364c9d95546ea6e78bc4..a8b807d69ec5e39875240425d1256f59560eaf5f 100644 (file)
@@ -7,7 +7,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 3664f914222a50849608e64de86f44fb76de4d49..3a061e99c190fbe8e8f47c799d506441c697756e 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 //
 // RoleClaimProvider.cs
index e1d1bb12ce3ba2ce56fc7c0735489fbd54a53d58..98fb570b48ea61733c38b53f1e01e1daa9d6e1d5 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Security
 {
     using System.IO;
index 804cc50b1afd058f82ae334e7a72b3ae8289a9ae..45b3eccba216af38e761bbc54379c822c35be2c3 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security {
@@ -20,7 +20,7 @@ namespace System.Security {
     using System.Diagnostics.Contracts;
 
     // Used in DemandInternal, to remember the result of previous demands
-    // KEEP IN SYNC WITH DEFINITIONS IN SECURITYPOLICY.H
+    // KEEP IN [....] WITH DEFINITIONS IN SECURITYPOLICY.H
     [Serializable]
     internal enum PermissionType
     {
index 45cdaa749e67c33e623c9df06a2c19363bd466e3..175a63860416237e546b83a1aaf5794744f16bfc 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 1492e46ba2966693409df975bec201c224304c19..f9272ee23e66d4e0f3bf0c0132801171b62d8065 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 5dca811ed2087a7d8d57192b967e65c52e4f13ac..1da8d9b89a327d5d806066cbe977a11173048ca8 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index df836d2b039191f34e9359aba6754eb6c73dfef1..232e711da085cb058f90057c46e298df27c7afc5 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 37f1d65f64c3768ecc17fb2c6c76a625deba124b..6911141f48af917cc3ac1643a493352f0dec7b6f 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 05efe3c3e4a33f99b232cf7a39d40b4c5c2cbff5..91ffbd4f42bf15f196fe1be1c01ade7851b9acbd 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 0e9cc0fa86d66b4c3285af85a3431145de3ddc5f..8315aefb43c5e24e3bc3c4fb98bd3c36776d9e23 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
@@ -20,7 +20,7 @@ namespace System.Security.Cryptography {
     // and ciphertext-stealing (CTS).  Not all implementations will support all modes.
     [Serializable]
     [System.Runtime.InteropServices.ComVisible(true)]
-    public enum CipherMode {            // Please keep in sync with wincrypt.h
+    public enum CipherMode {            // Please keep in [....] with wincrypt.h
         CBC = 1,
         ECB = 2,
         OFB = 3,
index ebd6ef6309792854bf0aa6fb713118141439eda4..5d3aacdfeaa60fc20a8448708f0ad3899c63d579 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 7a81d9b05fdec8ab4b0af68f9ae2d3094bc66b3c..7d3eb777e4283de76e435faeed2d22a95148c58e 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 71cd2fd18ea9d5773d3cdb43d13969fc77b922a6..efbe8b773845a46b928d0307ac17b16fba60462f 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index ee2265e727b038300282f3a639a1de35f1dbee3d..c7ed830c8dabbb630d1e46a6bf724ff2c381e0be 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 56d89ed2ee435436d66c0c689310049705c1e6b7..1ee88690879417cd388d8a3d36dd2460ee93895e 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index bb01d69877b0bdd631c0965e2961d77de7c9f103..43e779d8731383700dfd17fc4d9a90435fd86304 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 2e6feaae3a8d27f8c4dd85b0a7f0dd6e54de42b7..51f9a9ae4cc12961e7f4424fab286906191e63b6 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 469b1f49d11b6792b34958e9e2554e5a3f3c9cc6..318b09813abdab62f3bfdc5d96b13250fac0c4d7 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index bf57d241caca45b4341dd9fb34bea9b24484e1bd..3f8d457d9df9f91fd66a292a3f51d48b741a2d9a 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 260113a9e12bda32a9f43a84de4c3b85af26b827..8bc61b1c355454f73f5e2e06d3160a3e53d838a5 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 479a0b68d791548c872e91c87e2ddddc861baeb1..b7efe1961df0a5c51ed5036f6ca76f77508b0424 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 32b61120db2ec33898ad78d8350598ec2ea03e3e..6c00533d3e5722d3c462c5c85ce0af9f2fabdfd8 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 0a3347113d7b40c5a84a524fa2ed9924a3dd7e4e..da536c01f03f87ceb9372e42005840675cb4fbe2 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 8b2aabebda894f8e91e3696f022d682ff24990e2..991d877ff7e3da2aea66d1295126b2bd488d7b7f 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index f31252e2745df1d77c0f65c1f3fa34c431858a70..1d0b4e75d6bae02ea6401ad39c50084484ac0760 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index ef7986240e3bb225eb9d8d7ebae1cff77ea071b7..72e2b56e67d2dcd06a4749b9a0f2051d63f1ab60 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index e1a973c1c3dc458e379c702afccd33e00699ce3e..1e7418a89f11818f2a82f8cf19c2ba821d3dfc98 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index f252b7f53b49365ad114ae9d1705f1c2243bc704..e8af775a36c01786fe65e3da84a8d506d0d136c9 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index d5b501ce558abbb9cd44fedcd3d933b736573b9c..f726d36a05f90811eaf4f5642e443f02205090c6 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 6fb7dccd1aad5d6cdf2fdec7c852f45dea7ae83e..0cb2075cc53b3e38f4da189acf68aff7fef4ad3f 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 19d8be12240fd79c7e7bc1b258cb73f8185c8a90..a0d4e7d92553d0aec1ba714bb3537c3c98f59d5e 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 1029764fd0194d560a7cbd7677de3246b9a52069..2d4bdb70ff9fac1c5ceaa2f4ed966b30a4731f6e 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index bbd42c334cdf3ee82acc6759759e715fb5f4c6f7..33c71335eba45beedac861a54f27a3bd88e60cf9 100644 (file)
@@ -4,7 +4,7 @@ using System.Diagnostics.Contracts;
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index a18ec5af8f3c9f9d4ac36925d0e158e2f901dab8..ba6b40ec0ef3f36d54b45b18e4d03bf402a13774 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index c88a2811b2d7190958514e49adfea5007ee1fa53..cb2d19469e40c186004206a0e9e8a6cba26f94b4 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Cryptography {
index bd78f5ea4d824fa04fc83327aceed6ba99e65839..fcd684ad95b012120460331d2409890d0ce4fcf9 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index a33eb7255d1fe82282b53d12dc466fb4b3bd41ba..e8542464bc31e51973f07cc6f61e987a7edfdab2 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 7d51c3a60dade80f03b8e467e2360bd199da84a0..c97acf8e60bef4fd1ebc624a257471ef823acc8d 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index ab8edce4816f4b56f19a8ce7a1622010d1e1533d..89099cb26ccf7b17d572a828427e30130acdc0f2 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 46211eb307481ba7556aba46f6e31024973ebcfc..1c7a9f75c2a9bd2b8702649198f4b7b69bd02a53 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index c394cec048a31016bf2f5fe57da3ba6d80e7af31..b12bdfbece77cfd82464871c033f4b9dc8fb2d66 100644 (file)
@@ -4,7 +4,7 @@ using System.Diagnostics.Contracts;
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index dc93a6317d82ba40c6761b4a5790b05b6a210222..79829fac683903d9eec691ca52df0f6102f7cbf1 100644 (file)
@@ -4,7 +4,7 @@ using System.Diagnostics.Contracts;
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 094a3319b0490ccc8ec6e582604a103b8688cff7..a75deb9a76dea40b4b355fa65557871dcdd2d328 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 4196bd8de2003a4a6f479f5093d5d6fb71037611..bf13aabcddb1ca38469eae2d7353b7c615376624 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 226632e81e201ade538de13f8a8ae84298f442bb..073f6680f31425be9b7ba53a209dcfa4ac0f1e45 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index f196b12ba771c1293ee1486d84277941b145daf4..095144e7e8f7f3a2475487f3a80dba618b0e0e1f 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index e27577d7a9c0901569d3c672c600fc269a86c61b..0bf87db770ef847b0f0fe74bcddf974ff0743486 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 87910a4e171a321a35755133bf3aacab233fe2f6..416b29f5079d35aaf8cb039aaf473c5a8eb09a66 100644 (file)
@@ -4,7 +4,7 @@ using System.Diagnostics.Contracts;
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Cryptography {
index 3162663047a813842016d0330e925ba6b71d7c71..68746fe1773aaabb5821daa458ea2c23cf158de6 100644 (file)
@@ -4,7 +4,7 @@ using System.Diagnostics.Contracts;
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Cryptography {
index 3ea79366871f22fe0ac2b23c1a5d3d5c3a840931..ed412c64dba41b8d6125c3c7f3bfe05271f21f58 100644 (file)
@@ -4,7 +4,7 @@ using System.Diagnostics.Contracts;
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Cryptography {
index a741449a8bd3462dba57902c26e1bd5cd8717f07..19f34b6d6fbaa914ff76b25ef6af67aee46b4644 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Cryptography {
index 3c500c5fdb6bf9347ece63cff6a7edc1f6f0082d..01363fefbdd9af7e2ba30ee609abc430edc9f955 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 9157b7bf24322cc5a4ebd397e3d584e172a31816..249ea4b072c468c01031abf48083696419c1bbc6 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index e7dc76c0944ad4f5f7ae8ead91c32cb868f6ddff..19b8885deeff21e6eb2b5b04d4b4bb511c74db5e 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index c1a4b21232cf4ba976b8aa0f0c2eac747eb847f5..772e725d66a6c329549292ea49f9709fe7b93101 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 0b25472e251e0615ed499316abba471ae21c18a3..ed886250ff9e6936d2a24e12dbbe1499909c2753 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 863cea2e1839bed53f46589811dc402cb37c373a..ef07a4b17c8cec9957663f3f3e0ffc9ef9d0e793 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 5230a1eaebcb4f9caca754a347f05a5e5c90c5eb..e403045f332bf8b7fd5a9c8d33d87514362bccd1 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 242bfff1b172424f2615ba4f2dd3e796e115699a..41711c80843fa7f98506f8239a0a2c52a4138e0f 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 64036523daad9f7a338811230421be62e346cc72..268be7eae9b1986007cb77e1023ad64e0acdd41a 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index c10ab52f6d6113e75e0004658202b39963bb9d4c..d17eaaa53012163fc200970f05bf29186583144f 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index a5e1a9f80b4e47bd489239eed556e7328eab924b..cfff7e2bb3a23b43b6a472bb6e92f3fe8af195b1 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 20ec6a6b7b74c1d01002b3843f84d77d19ec961a..31641440b60c781115fedea572f539d6210270d7 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 4f02d3702c8993f7323ef1a187b6d924a96f60d1..f115e8afc39f82e5a9938938a9c2c11e7c72a0e3 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index d2c2a022b209c4d91702a0b4b8d3531699d0accd..ac39b88cffb6efa7f904108ba768c8be05d02b65 100644 (file)
@@ -4,7 +4,7 @@ using System.Diagnostics.Contracts;
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index c26517093e3f189689d5ef5eaa49f05eb5088982..2481830012fff1aab9284a02770e074491861f31 100644 (file)
@@ -4,7 +4,7 @@ using System.Diagnostics.Contracts;
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 25e63a78a8996ce343dd54f869d02ae6c450a1c1..aaa5948e46b7be890d1528ecb613046b6cd4501c 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index c9677213bcc8b8d046f2a79d8c8b8347c5940ed9..1c1c3e72f06c41027c6ebff084bf205ea8c0490e 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 92f4f22dfa34b3c29e89f9df0a8794c21aaeb2c9..906443274a6aaf1addb92da4bd76c97dfd9a8172 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Security {
     using System.Text;
     using System.Runtime.CompilerServices;
index ee480cb7f626df902e8a6127ba16d673140bcf40..638ddf75b44337d980508806cd9a566e31fecf1b 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 /*=============================================================================
index 4d90a44fc555bcccb44c9e13558dcb9d4fd709c1..113a75e1fc3217dc2f8464e47b96c3e0d2722d1b 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 24629138dd995bd3a28281a5e4c6dc75b714b889..d2baa4899dbfb64b25a4b46530f66221b93ad7fd 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  NamedPermissionSet.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Extends PermissionSet to allow an associated name and description
 //
index 27cf6cd5aa0630add7a285ee84ab8a677b55f1a6..fa855d0fae0427357d1990c149040bf51c47a070 100644 (file)
@@ -7,8 +7,8 @@
 **
 ** Class: PermissionListSet.cs
 ** 
-** <OWNER>Microsoft</OWNER>
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: Holds state about A/G/R permissionsets in a callstack or appdomain
 **          (Replacement for PermissionListSet)
index 9b86f00aaa89b7013e5c59ebcdc652c2e11f3909..5da4d1999f3a7c1027321fdcec09b1c4a9ff4ba8 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  EnvironmentPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 namespace System.Security.Permissions {
index 55308ce4e8156325bc8af7f2ddbc27068c11ddaa..a46bc0dc8ff85206b9a141f9969b4230567fd50d 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // FileDialogPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 namespace System.Security.Permissions {
index a1861b1f478119417e43c7665c77c2b1b35b46c8..02ef088b5e67b3c0f83d136fcac8d765b1f64847 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  FileIOPermission.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 namespace System.Security.Permissions {
index df59f63a2988755ce26ac2b649e099c07415fbb5..0f130ad13397562225bc24c729c5403082df1934 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // GacIdentityPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Permissions
index 837cac3c1e044ea46899ea3b253ed0635299ee7b..8679f29b9eec6ddf9b42ebefe2e2067a1a548c12 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // HostProtectionPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 namespace System.Security.Permissions
@@ -22,7 +22,7 @@ namespace System.Security.Permissions
     using System.Globalization;
     using System.Diagnostics.Contracts;
 
-    // Keep this enum in sync with tools\ngen\ngen.cpp and inc\mscoree.idl
+    // Keep this enum in [....] with tools\ngen\ngen.cpp and inc\mscoree.idl
 
 [Serializable]
     [Flags]
index e52c1caf1ef520066997221d1380b3499a59e91d..031cf0983c5acb5532f51ba601d5f6d61b82e2f6 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 // Purpose : This permission is used to controls/administer access to 
 //  IsolatedStorageFile
index 69c7f743a89175fd2801f5cb8f5fab613770dfb3..7fad3c55ed3049030443af4859cca729864eb8d7 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Permissions {
index 0afd60558c87aa2363214b256fbcdb4af8a021df..a606bf2ca0e8d5505f3628293cac23026683814d 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 1e36a44ecb46a9382361977b53a4afa9a62c2cb2..09f2ae38647482cfd5431dde76367f9a8094ff3b 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Security.Permissions
 {
 
index 4ed6ff549dd2f6d3e6fda1d4856caf93f4578301..7598e6286ef436ed46bd1c5a7d69f9f1319e829b 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  PrincipalPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 namespace System.Security.Permissions
index 5f78b238df5163d287e3ac5b58ee6bca9cbed4df..7c41b3be1cdd5331307d71b01f859e7b244178b5 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // PublisherIdentityPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Permissions
index 7e0d2fd276298d4b91ed698b4285d99112461b8c..00e79a1ee0caa27beca2c23079786a24d37bc59d 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // ReflectionPermission.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 namespace System.Security.Permissions
index 1f7cfddeb89022f11c13f98311c1719fd748766a..0805d55ac21679110e1d2f7f2093b3cc018027c0 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  RegistryPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 namespace System.Security.Permissions
index 1e501c5997e527e9c35f199ed13b47dbda15029d..18b328f88fbd09371727c642fc572ff4b998840a 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // SecurityPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 namespace System.Security.Permissions
index a6c530be87e8ef26a343692bb51f86574a4fdffd..d08ccce13ca0fb2cf82959237aba6f16ef778734 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // SiteIdentityPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Permissions
index 1ab3804bdc180eeb337a802733ee972611daf335..31cbc12167b1724dd040d93bf4ae33f8ab5fe5e8 100644 (file)
@@ -6,7 +6,7 @@
 // ==--==
 // StrongNameIdentityPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Permissions
index ac3cac3e2c0691246e804cad28bb8898411e93f2..2367f8ba8426510418304b2bc5ee7717ce2c193d 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // StrongNamePublicKeyBlob.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Permissions
index 6e34b862759c1fd5e7dcc3e49f757106c5a056ec..dea740ad6f71b5de4967ca3aa9516051fac848df 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // UIPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 namespace System.Security.Permissions
index bab282e8893ef591c893b48539e0c7028717aa1a..ce61fad84938568f1c6a98f39a684256f56dda20 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // UrlIdentityPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Permissions
index 13574f3f2657c4483b3246ee145c525d89a23e24..6b3f6c56be31ab4ab489e9a4afab5b4a5727e0e1 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // ZoneIdentityPermission.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Permissions
index b7118829962d58465c6598302f16e9eb09b1d3f5..1edd3c8ad16eeee81bd04e0518c572b33654c4b1 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security {
index c8f04173903ff3fcdf1fb5dfe0574b247c7bad70..e65e24d50408e16451b223adf30b47d2b017acf2 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security 
index 170cd2033780f0f6666b7bca87873c10db237d66..f319aa37114239f54d135deb81ffcf435b7f0a0e 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: PermissionSetTriple
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: Container class for holding an AppDomain's Grantset and Refused sets.
 **          Also used for CompressedStacks which brings in the third PermissionSet.
index 92051b8ee6e915db3e65b43adde3238ee9bf8a58..bb328a7e66946f40ad076889bccfa46828a35db9 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Security {
     using System;
     using System.Security.Util;
index e6d327d14f290b1b0dc57f85eb814d6dc893c040..9b517b503490888ce4520d6179c6f604b8ddab07 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  AllMembershipCondition.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Simple IMembershipCondition implementation that always passes
 //
index 3b568460ecdce9910accc87d92a6975584012a07..b521a618d221498f19f2ae2f527bdf246b15afab 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  ApplicationDirectory.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  ApplicationDirectory is an evidence type representing the directory the assembly
 //  was loaded from.
index 5bc3e8dffa8cb0b8ba83399e2022c14fc9a2865b..97194d1142c292caa68ad79cfc50f662dfde7aba 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  ApplicationDirectoryMembershipCondition.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Implementation of membership condition for "application directories"
 //
index 477b44575ead31579f58437b71117ade5404bffd..825d6b02787eddda7cbb984d585f760dd77e2e7f 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 //
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index d3bbfbd9cd4c0a9dca33098a13d36480f94d5d4b..07c3d8267df03a9c2374b98753fded3bae3526af 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index c93e68a367a1ab57d81322748f5ad8c1427ee431..11092a47e25ecab99cc5e28dba2b24fff740b00c 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 //
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
@@ -55,11 +55,11 @@ namespace System.Security.Policy {
         private IList<StrongName> m_fullTrustAssemblies;
 
         // Permission special flags for the default grant set in this ApplicationTrust.  This should be
-        // updated in sync with any updates to the default grant set.
+        // updated in [....] with any updates to the default grant set.
         // 
         // In the general case, these values cannot be trusted - we only store a reference to the
         // DefaultGrantSet, and return the reference directly, which means that code can update the
-        // permission set without our knowledge.  That would lead to the flags getting out of sync with the
+        // permission set without our knowledge.  That would lead to the flags getting out of [....] with the
         // grant set.
         // 
         // However, we only care about these flags when we're creating a homogenous AppDomain, and in that
index df5f539e8afd1b05666f5dfb45aad76ff5b382ab..cdd0434f7b7ee063a79ee090c7f2bec9eb229051 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index a6439b55253afe04c9f9fbc92c4e75ae3b7a1c92..d7e9a65339dbe6d24e128d72f7f69824f971abc0 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  CodeGroup.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Representation for code groups used for the policy mechanism
 //
index a3e9ab07c25ed1dfe037246512e8c0d1279e3a1b..41cc55871e68223ebdeaba0fdff87a4589cf8578 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Policy
index 30a8fbee73529c07aa8852b042e17665ce580e97..daf220938f175e924455dc87b4fc856720bb47c2 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
@@ -166,7 +166,7 @@ namespace System.Security.Policy
         {
             Contract.Assert(evidence != null);
             Contract.Assert(m_legacyEvidenceList.Count == 0 || EvidenceType == evidence.GetType() || (evidence is LegacyEvidenceWrapper && (evidence as LegacyEvidenceWrapper).EvidenceType == EvidenceType),
-                            "LegacyEvidenceList must be homogeonous");
+                            "LegacyEvidenceList must be ----geonous");
             Contract.Assert(evidence.GetType() != typeof(LegacyEvidenceList),
                             "Attempt to add a legacy evidence list to another legacy evidence list");
 
index ce063253c3e69a43c2dfe61d1b34633b83a4b2ce..b45c54113215f1964da9067d2c25192ea42ac110 100644 (file)
@@ -2,7 +2,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index d36c6402a74a84d913cfb42557fb219989e3d640..e3a2bb4879a10430da4d8432a0a1bd3cff3ac9f8 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 0afbd3c4c6696c4fc4cf23df2ed923e77e44f094..4700bbbe705c6d48f124537e656f9d63fd8c9c30 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  FirstMatchCodeGroup.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Representation for code groups used for the policy mechanism
 //
index a6abea898e4dc2beceb94a6d417d3e8bad4d1f44..78f0eea16dd858ea58935ae48a0ef85fdcbdf6a8 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 84d65e5e3f7162b03d564c32087f0606bb9c3000..fc96793581ab8c2f7be6fb7cd743296cd1928794 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 184faec0ee70988bed502ad7f7d87c0530f7587e..9bd73cf25b33ff130321b1340a418510f24533bc 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 690034bc65c06827f91625316bbfa83f58eba7f6..befd3261ff2cdcf8ade03ea7215da38a0e065c61 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 194bfbdce7a65f4a852282f4fd603085a0f08b09..46990db4863f96492d1b7011dd2c81f161d0c029 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 //
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 5916875e6729553c8cf48cec37a1562c3510ac63..17fe906c481997c4e93cc44426c3f715053037ab 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  NetCodeGroup.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Representation for code groups used for the policy mechanism
 //
index b70b1d262c23e994bf674f585e485b1b8cb8a759..266e7b5f9ca7cdcb55226633a9839edde08f68a6 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
@@ -25,7 +25,7 @@ using Microsoft.Win32.SafeHandles;
 namespace System.Security.Policy
 {
     /// <summary>
-    ///     Arguments to the ETW evidence generation event.  This enumeration should be kept in sync with
+    ///     Arguments to the ETW evidence generation event.  This enumeration should be kept in [....] with
     ///     the VM enumeration EvidenceType in SecurityPolicy.h.
     /// </summary>
     internal enum EvidenceTypeGenerated
index ed71bdab12093291be90cc2a60c99a6b77124238..e4826330f82c3364b8da178cd941872fba7f3073 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  PermissionRequestEvidence.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Encapsulation of permission request as an evidence type.
 //
index 11ef230b6482c09d945dad78caadc432420dbb53..c0716d3c61aa4ebd3e94cc5c29fb9b07bb728976 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  PolicyException.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Use this class to throw a PolicyException
 //
index 10def8e6810f03860347e20798cc6d783397c988..5a766ce01fbf7ff4cf5561e4eb311b453efab7c7 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 9dbb1239fe2db5ea5c352353d9952cd51b6c3cb7..35e7033408cc4a051bc9fe64b615d98eb0231056 100644 (file)
@@ -6,7 +6,7 @@ using System.Diagnostics.Contracts;
 // ==--==
 //  PolicyStatement.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Represents the policy associated with some piece of evidence
 //
index 1234d776ca76ffea4897c6d824c70047c3426bce..b28e9c13bbb5d17586bbdfba275fd57bf07bf835 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index c3da15b832c0015ddac385cb98083d41af071c14..3c6dda1f414f9c62dee1cbbaf967b202ab5f9309 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  PublisherMembershipCondition.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Implementation of membership condition for X509 certificate based publishers
 //
index c18dc21604c7f34e9fd6d5526bce5cf5df8219b0..86ef1763ada2a9d9a6ce4a5a28234e2310b463b1 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 067d63f24c135c79cbb268e0f476adeb257aa266..4dc9af6f3a0aff26059779a09c3d3a255a28cc8b 100644 (file)
@@ -6,7 +6,7 @@ using System.Diagnostics.Contracts;
 // ==--==
 //  SiteMembershipCondition.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Implementation of membership condition for zones
 //
index 4714828772d0fa05feb52fa91a2c74bf325a97b1..775d5d75d96a813b9854e97c015ecc74b2283ae5 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index c6470c861c680e7ef4f469ef4ffa6259dee15c1c..afd302a4950c083a2a04d7d519b3aeb1e249de8e 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  StrongNameMembershipCondition.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Implementation of membership condition for zones
 //
index 470d0fb8a6ed922e75d1e0542ef42deb1a097663..4d6570786dd65770cc08708b5bfebeaa1c9d0855 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  UnionCodeGroup.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Representation for code groups used for the policy mechanism
 //
index 632d2ce3d7a2a50eef2bdccceeafc207a123fbba..b41f2cfe58015cad80ac21813cae2cdf604a669c 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index a8745a5cbb95615c9169513f45b536cb6995e78a..2891234f9308b062a57c089132804d7a64a14478 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 9942af9f2713891e8ee50bfe3c74b0f9da08e42b..74f60e5ce9a6bcaf75a8857b198f5ed62f1daea4 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index a9afd3033939128642c7af3b8e88579b2052db85..329ef5e640161e19c7377b0974f7972cbcb601cd 100644 (file)
@@ -6,7 +6,7 @@ using System.Diagnostics.Contracts;
 // ==--==
 //  ZoneMembershipCondition.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Implementation of membership condition for zones
 //
index 814c460eed59f3f6fab94d570a96b13d9a993963..ff35a450c87857f1990da909f48ffe5fc0c680e7 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
@@ -414,7 +414,7 @@ namespace System.Security {
         {
             if (FullTrustMap == null)
             {
-                // This mapping must stay in sync with the SecurityZone enumeration in SecurityZone.cs
+                // This mapping must stay in [....] with the SecurityZone enumeration in SecurityZone.cs
                 FullTrustMap = new QuickCacheEntryType[]
                 {
                     QuickCacheEntryType.FullTrustZoneMyComputer,
index b771a70180f2b221bf2b15d1cdfb802a54779afd..02037c6391b5eb333b4415dfd2bd187188b7fa42 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index ceac53d1bc251facab52f26a0b7029ef43533d1e..f2f6cacc62603fbcfa9ed50883dd52dec834a985 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
@@ -63,7 +63,7 @@ namespace System.Security.Principal
             //
             // 4.5               4.5         Yes                There should be a ClaimsIdentity, DebugAssert if this is not the case
             //                                                  If there are roles, attach them to the first ClaimsIdentity.
-            //                                                  If there is no non-null ClaimsIdentity, add one.  However, this is unusual and may be a 
+            //                                                  If there is no non-null ClaimsIdentity, add one.  However, this is unusual and may be a bug.
 
             ClaimsIdentity firstNonNullIdentity = null;
             foreach (var identity in base.Identities)
index f5f9bbabe9aa25686c234af4cf338687afd55037..8985f087ee918c2462030e4fc16830d0cbddb5a9 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index 727c8ea733f775ebc5e0bb66fbea5c6535af32b0..3be7e0e96de6124190315c5414dffac44197f638 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index 3eff01e8d09f540d904a417ea6dedbbeaedbc356..979704be56988f598c766c52fb814914a239c80d 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Security.Principal
 {
     using System;
@@ -212,9 +212,9 @@ namespace System.Security.Principal
                 {
                     //
                     // Rare case that we have defined a type of identity reference and 
-                    // not included it in the code logic above (this is more like a 
-
-
+                    // not included it in the code logic above (this is more like a bug in the implementation
+                    // but only as long as we do not allow IdentityReference to be subclassed outside of the BCL)
+                    //
                     Contract.Assert( false, "Source type is an IdentityReference type which has not been included in translation logic.");
                     throw new SystemException();
                 }
@@ -275,9 +275,9 @@ namespace System.Security.Principal
                     {
                         //
                         // Rare case that we have defined a type of identity reference and 
-                        // not included it in the code logic above (this is more like a 
-
-
+                        // not included it in the code logic above (this is more like a bug in the implementation
+                        // but only as long as we do not allow IdentityReference to be subclassed outside of the BCL)
+                        //
                         Contract.Assert( false, "Source type is an IdentityReference type which has not been included in translation logic.");
                         throw new SystemException();
                     }
@@ -372,9 +372,9 @@ namespace System.Security.Principal
                     {
                         //
                         // Rare case that we have defined a type of identity reference and 
-                        // not included it in the code logic above (this is more like a 
-
-
+                        // not included it in the code logic above (this is more like a bug in the implementation
+                        // but only as long as we do not allow IdentityReference to be subclassed outside of the BCL)
+                        //
                         Contract.Assert( false, "Source type is an IdentityReference type which has not been included in translation logic.");
                         throw new SystemException();
                     }
index 19b7ec76408bc44dca4633710c5ef2c8434c7468..291d56499dde2f6e0ad3c17441052d7185da3397 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using Microsoft.Win32;
index e8558b2956864b127de8a1c7c8179a150e20f3a0..bfc99ecf3113c3833cf7f4f7caa54fcdf3074368 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using System;
index 2aedb26bc2da6f9b1009e10f48c907b654c247e0..bac02ffb621849c07b0ec7188482c46c591738a1 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 using Microsoft.Win32;
index 87c57938e5b99789042ed72aa10631034f2caac2..93cb2555874be2cc75fecc7495d40a9ebbab4379 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
@@ -46,7 +46,7 @@ namespace System.Security.Principal
         Anonymous   = 3
     }
 
-    // Keep in sync with vm\comprincipal.h
+    // Keep in [....] with vm\comprincipal.h
     internal enum WinSecurityContext {
         Thread = 1, // OpenAsSelf = false
         Process = 2, // OpenAsSelf = true
@@ -370,8 +370,8 @@ namespace System.Security.Principal
 
             get {
                 if (m_isAuthenticated == -1) {
-                    // There is a known 
-
+                    // There is a known bug where this approach will not work correctly for domain guests (will return false
+                    // instead of true). But this is a corner-case that is not very interesting.
 #if !FEATURE_CORECLR
                     m_isAuthenticated = CheckNtTokenForSid(new SecurityIdentifier(IdentifierAuthority.NTAuthority,
                                                                     new int[] { Win32Native.SECURITY_AUTHENTICATED_USER_RID })) ? 1 : 0;
@@ -562,9 +562,9 @@ namespace System.Security.Principal
                     using (SafeLocalAllocHandle pGroups = GetTokenInformation(m_safeTokenHandle, TokenInformationClass.TokenGroups)) {
 
                         uint groupCount = pGroups.Read<uint>(0); 
-                        // Work-around 
-
-
+                        // Work-around bug on WS03 that only populates the GroupCount field of TOKEN_GROUPS if the count is 0
+                        // In that situation, attempting to read the entire TOKEN_GROUPS structure will lead to InsufficientBuffer exception 
+                        // since the field is only 4 bytes long (uint only, for GroupCount), but we try to read more (including the pointer to GroupDetails).
                         if (groupCount != 0)
                         {
 
index 5315ae7ba3997f863a7d57e767706bd3e42540c8..311c3b3d4f203c72e9ba517df41f7daf447d6d0a 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 6e60e7de374714b6a9b8a33dcbc55d5b866ef4b2..d954f9f97007253f2de7df814418bfeadf868a78 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 8bb357870dd7f31335e9be788c11e68a45998d1f..1b9e0ae98ede8efb7a3ab90a0b702dfb0b711603 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 using System;
index 460d619947ded8e1b8f1ede18192a6213689068f..49adc58c26a185a2e34918a5fc2083620178c8a8 100644 (file)
@@ -1,4 +1,4 @@
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace Microsoft.Win32.SafeHandles {
     using System;
     using System.Runtime.CompilerServices;
index ca2e8aea6c1aefe23a3a6af8877e1533525fedb8..54d66afce26c98d45dc64ccfa7181276755d17ae 100644 (file)
@@ -1,4 +1,4 @@
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Security {
     using System.Security.Cryptography;
     using System.Runtime.InteropServices;
index 2f3268e234c882db73cfdc9b207ae45b2c1a71d1..76dd997bd3b939aafe18ad94dde4cbbf5d0df72b 100644 (file)
@@ -6,7 +6,7 @@
 **
 ** Class:  SecurityContext
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Capture security  context for a thread
@@ -32,7 +32,7 @@ namespace System.Security
     using System.Runtime.Versioning;
     using System.Diagnostics.Contracts;
 
-    // This enum must be kept in sync with the SecurityContextSource enum in the VM
+    // This enum must be kept in [....] with the SecurityContextSource enum in the VM
     public enum SecurityContextSource
     {
         CurrentAppDomain = 0,
index f0c95e2ababe9f9f5ab9fba93129a2e20f61216b..fffcf0cbfdbc27e383c4c6a009f3e7761f9a45cf 100644 (file)
@@ -7,7 +7,7 @@
 //
 // CLASS:    SecurityDocument.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // PURPOSE:  Represent an XML document
 // 
index e238ae5d77ba2bee153396012332edc25a6140fb..8715f42ce95b77b155503809ec12645f8a02ce92 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security
index d5fe3578526c96e8056857a0c1702cb87f95f46d..4b3a571a88dc539995d60c7f014cde592a73e84e 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: SecurityException
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** Purpose: Exception class for security
index 777eb6ebfb4d756feeeb4486af6c120ffe8ba575..1a60f9bc4d2e97777ddd5ad474e4597c89870107 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index 7989ee4dbd5a2108106718265337c68d75407ddd..1c874c2436512d8263cfef5e31effe8175de0a7d 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security {
index 0670730089dbda484c4d04aada425680efa862b2..3097eb250d8c535064e61355416aa619f19858e5 100644 (file)
@@ -2,7 +2,7 @@
 // 
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Security;
index 3ddf27c3cfc13bf125e8526239785dddd2cde00f..135979dce403c0cd95d6e98a5dfa6a4db4468d85 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index c072698526b3bdbce76440e2742a2a37bc625d19..9a7d22d4d5b22cde0bd49496763fd44199632b38 100644 (file)
@@ -6,7 +6,7 @@
 /*
  * Hex.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
  *
  * Operations to convert to and from Hex
  *
index ef53c555fe4a3089cbdb53e444b1f7814a3063c5..10b7aa70259fa96e881ca39f8e359ee7c1264f99 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** CLASS:    Parser
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** PURPOSE:  Parse "Elementary XML", that is, XML without 
index f78b85ba71b152e31a1b62ea0ebd5f013ea9dde2..7e705d7cbd4465da4db6db57ca0affc638a7ffdd 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // SiteString
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security.Util {
index ce34f9d68e990ed7478188221eba38105516b191..101d15ee58df3ef79f3ce1652dac39501d326d54 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // StringExpressionSet
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
  
 namespace System.Security.Util {    
index cbbb43c63984baa65507769a7b8b389b8e84536a..6f7fe1de29d3cbb374d29731fa96943c97f83e98 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 //
index a9dd114ddb9639bb7a08fb9baba93e044c0e48c3..4c18c5bcee5afd31554728a0e935578f726d96ba 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 // TokenBasedSetEnumerator.cs
 // 
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 
 namespace System.Security.Util 
index f942b027ca3e55a5ce4218ab2e14681de863d382..3a9ab669422c11d7fe061326ef34351d3d79010c 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** CLASS:    Tokenizer.cs
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 **
 ** PURPOSE:  Tokenize "Elementary XML", that is, XML without 
index c97e70efcde8f4b6dfe34556343e0d51f15f5771..b009ff0a8ecf6fc0016ce8cd322fc18eb62e9a39 100644 (file)
@@ -5,7 +5,7 @@
 // ==--==
 //  URLString
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 //  Implementation of membership condition for zones
 //
index ad0a9cb25a426025fd2d89f70b514b67c60c687b..936eaff9e4024117edbebd5c570403b19620b46f 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** CLASS:    XMLUtil
 ** 
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** PURPOSE:  Helpers for XML input & output
 **
index 90fc2eb72d6c4728b6beaeece59e60b13bad671e..2e799519b29ef2026dc22ae48205580899889892 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security {
index 2c64008ef87442f4067d8b0beb10ac87b821c0c3..0ec69646c8a395fee47effe1e421c17a5df4856e 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 // ==--==
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 // 
 
 namespace System.Security {
index 3172d7532be5784c75202c922fff6240e576f35d..3f96ac1c00e42170e0153dea36793ab74d142992 100644 (file)
@@ -61,7 +61,7 @@ namespace System {
 
         //private static readonly char FmtMsgMarkerChar='%';
         //private static readonly char FmtMsgFmtCodeChar='!';
-        //These are defined in Com99/src/vm/COMStringCommon.h and must be kept in sync.
+        //These are defined in Com99/src/vm/COMStringCommon.h and must be kept in [....].
         private const int TrimHead = 0;
         private const int TrimTail = 1;
         private const int TrimBoth = 2;
@@ -2847,10 +2847,10 @@ namespace System {
             if (CompatibilitySwitches.IsAppEarlierThanWindowsPhoneMango)
             {
                 // Dev11 453753 quirk
-                // for pre-Mango this function had a 
-
-
-
+                // for pre-Mango this function had a bug that would cause it to
+                // drop all characters to the right of the first embedded NULL.
+                // this was quirked on Mango for pre-Mango apps however for apps
+                // targeting Mango the bug was fixed.
                 int i = s.IndexOf('\0');
                 if (i > 0)
                     return s.Substring(0, i);
index 909502dc4f11e7d735499051b9b394e771b90244..3f6f6fcfbdfa255c50c45de29c30bb96447e7222 100644 (file)
@@ -147,7 +147,7 @@ namespace  System.StubHelpers {
 
                 if (hasTrailByte)
                 {
-                    // this is an odd-sized string with a trailing byte stored in its sync block
+                    // this is an odd-sized string with a trailing byte stored in its [....] block
                     lengthInBytes++;
                 }
 
@@ -231,7 +231,7 @@ namespace  System.StubHelpers {
 
                 if ((length & 1) == 1)
                 {
-                    // odd-sized strings need to have the trailing byte saved in their sync block
+                    // odd-sized strings need to have the trailing byte saved in their [....] block
                     ret.SetTrailByte(((byte *)bstr.ToPointer())[length - 1]);
                 }
 
index 9c6e967206c8580c6c7794c8fc60d40368321776..471635e01dccbb844629fa0cf1048feb9c614e77 100644 (file)
@@ -44,7 +44,7 @@ namespace System.Text
         //
         // The following methods are copied from EncodingNLS.cs.
         // Unfortunately EncodingNLS.cs is internal and we're public, so we have to reimpliment them here.
-        // These should be kept in sync for the following classes:
+        // These should be kept in [....] for the following classes:
         // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding
         //
 
index 28ea64f9361144c31d29898787c32433e879fcee..8a5e80853142585efe23a5579c84a37a56028260 100644 (file)
@@ -219,7 +219,7 @@ namespace System.Text
             // Do the work
             int result = GetChars(arrByte, 0, byteCount, arrChar, 0, flush);
 
-            // The only way this could fail is a 
+            // The only way this could fail is a bug in GetChars
             Contract.Assert(result <= charCount, "Returned more chars than we have space for");
 
             // Copy the char array
@@ -231,7 +231,7 @@ namespace System.Text
                 charCount = result;
 
             // We check both result and charCount so that we don't accidentally overrun
-            // our pointer buffer just because of any GetChars 
+            // our pointer buffer just because of any GetChars bug.
             for (index = 0; index < charCount; index++)
                 chars[index] = arrChar[index];
 
index 55af2cb6fb0eea1e4c1305f873eb08387bd875ee..04f3ac245a33662f4b6d2a73ec15f9a276f75e78 100644 (file)
@@ -212,7 +212,7 @@ namespace System.Text
             // Do the work
             int result = GetBytes(arrChar, 0, charCount, arrByte, 0, flush);
 
-            // The only way this could fail is a 
+            // The only way this could fail is a bug in GetBytes
             Contract.Assert(result <= byteCount, "Returned more bytes than we have space for");
 
             // Copy the byte array
index 5e9d22016964c7abeed076fd749d1d3e07271ed8..e77a190cacace8e128239225b7f4eab033bf3a66 100644 (file)
@@ -109,7 +109,7 @@ namespace System.Text
 
         //
         // The following values are from mlang.idl.  These values
-        // should be in sync with those in mlang.idl.
+        // should be in [....] with those in mlang.idl.
         //
         private const int MIMECONTF_MAILNEWS          = 0x00000001;
         private const int MIMECONTF_BROWSER           = 0x00000002;
@@ -1155,7 +1155,7 @@ namespace System.Text
             // Do the work
             int result = GetBytes(arrChar, 0, charCount, arrByte, 0);
 
-            // The only way this could fail is a 
+            // The only way this could fail is a bug in GetBytes
             Contract.Assert(result <= byteCount, "[Encoding.GetBytes]Returned more bytes than we have space for");
 
             // Copy the byte array
@@ -1315,7 +1315,7 @@ namespace System.Text
             // Do the work
             int result = GetChars(arrByte, 0, byteCount, arrChar, 0);
 
-            // The only way this could fail is a 
+            // The only way this could fail is a bug in GetChars
             Contract.Assert(result <= charCount, "[Encoding.GetChars]Returned more chars than we have space for");
 
             // Copy the char array
index 63816b70b7dbb758df4cca6f87f5f03596d0295c..57d2adb09492cff5ea1713d221f16ebe6f604454 100644 (file)
 //  Abstract:
 //
 //      Managed implimentation of GB18030-2000 (code page 54936) ported from implimentation in c_g18030.dll
-//      If you find a 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+//      If you find a bug here you should check there (in windows) as well and visa versa.
+//      This file contains functions to convert GB18030-2000 (code page 54936) into Unicode, and vice versa.
+//
+//  Notes:
+//      GB18030-2000 (aka GBK2K) is designed to be mostly compatible with GBK (codepage 936),
+//      while supports the full range of Unicode code points (BMP + 16 supplementary planes).
+//
+//      The structure for GB18030 is:
+//          * Single byte:
+//              0x00 ~ 0x7f
+//          * Two-byte:
+//              0x81 ~ 0xfe, 0x40 ~ 0x7e    (leading byte, trailing byte)
+//              0x81 ~ 0xfe, 0x80 ~ 0xfe    (leading byte, trailing byte)
+//          * Four-byte:
+//              0x81 ~ 0xfe, 0x30 ~ 0x39, 0x81 ~ 0xfe, 0x30 ~ 0x39.
+//              The surrogare pair will be encoded from 0x90, 0x30, 0x81, 0x30
+//
+//      The BMP range is fully supported in GB18030 using 1-byte, 2-byte and 4-byte sequences.
+//      In valid 4-byte GB18030, there are two gaps that can not be mapped to Unicode characters.
+//          0x84, 0x31, 0xa5, 0x30 (just after the GB18030 bytes for U+FFFF(*)) ~ 0x8f, 0x39, 0xfe, 0x39 (just before the first GB18030 bytes for U+D800,U+DC00)
+//          0xe3, 0x32, 0x9a, 0x36 (just after the GB18030 bytes for U+DBFF U+DFFF(**)) ~ 0xfe, 0x39, 0xfe, 0x39
+//
+//
+//          Note1: U+FFFF = 0x84, 0x31, 0xa4, 0x39
+//          Note2: U+DBFF U+DFFF = 0xe3, 0x32, 0x9a, 0x35
+//
+//      Tables used in GB18030Encoding:
+//
+//          Our data is similar to the 936 Code Page, so we start from there to build our tables.  We build the
+//          normal double byte mapUnicodeToBytes and mapBytesToUnicode tables by applying differences from 936.
+//          We also build a map4BytesToUnicode table and a mapUnicodeTo4BytesFlags
+//
+//          * mapUnicodeTo4BytesFlags
+//              This is an array of bytes, so we have to do a / 8 and << %8 to check the appropriate bit (see Is4Byte())
+//              If the bit is set its true.
+//
+//              true    - If set/true this is a 4 byte code.  The value in mapUnicodeToBytes will be the 4 byte offset
+//              false   - If cleared/false this is a 1 or 2 byte code.  The value in mapUnicodeToBytes will be the 2 bytes.
+//
+//          * mapUnicodeToBytes
+//              Contains either the 2 byte value of double byte GB18030 or the 4 byte offset for 4 byte GB18030,
+//              depending on the value of the flag in mapUnicodeTo4BytesFlags
+//
+//          * mapBytesToUnicode
+//              mapBytesToUnicode maps 2 byte GB 18030 to Unicode like other DBCS code pages.
+//
+//          * map4BytesToUnicode
+//              map4BytesToUnicode is indexed by the 4 byte offset and contains the unicode value for each 4 byte offset
+//
+//
+//      4 Byte sequences
+//          We generally use the offset for the 4 byte sequence, such as:
+//
+//          The index value is the offset of the 4-byte GB18030.
+//
+//          4-byte GB18030      Index value
+//          ==============      ===========
+//          81,30,81,30         0
+//          81,30,81,31         1
+//          81,30,81,32         2
+//          ...                 ...
+//
+//          The value of map4BytesToUnicode cotains the Unicode codepoint for the offset of the
+//          corresponding 4-byte GB18030.
+//
+//          E.g. map4BytesToUnicode[0] = 0x0080.  This means that GB18030 0x81, 0x30, 0x81, 0x30 will be converted to Unicode U+0800.
+//
+//      4 Byte Surrogate Sequences
+//          Those work similarly to the normal 4 byte sequences, but start at a different offset
+//
+//  We don't override IsAlwaysNormalized because GB18030 covers all of the unicode space, so isn't guaranteed to be normal.
+//
 #if FEATURE_CODEPAGES_FILE // requires BaseCodePageEncooding
 namespace System.Text
 {
index 39c6e68ba705e8ae510956468b8b57fc257e7391..6443a665fbf008e7634a8c09549d5723a63b5172 100644 (file)
@@ -11,7 +11,7 @@
 //  Abstract:
 //
 //      Managed implimentation of ISO 2022 code pages, ported from the implimentation in c_is2022.dll
-//      This code should be kept in sync with the other implimentations
+//      This code should be kept in [....] with the other implimentations
 //      This encoding wraps the basic encodings in code that adds the shift in/out wrapper methods
 //
 //  Notes:
index a4854fdb7a8d18af63c97daa1e82945040691116..a5124cf0eb3939878ef09cb9611f68f56e2062a9 100644 (file)
@@ -84,7 +84,7 @@ namespace System.Text
         //
         // The following methods are copied from EncodingNLS.cs.
         // Unfortunately EncodingNLS.cs is internal and we're public, so we have to reimpliment them here.
-        // These should be kept in sync for the following classes:
+        // These should be kept in [....] for the following classes:
         // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding
         //
 
index 3a80fa65d863e94a8e4e155a4c3aafc2ca057d7e..6b6eaa06a596d519a8c9c5922daeb5d5b1b6a411 100644 (file)
@@ -85,7 +85,7 @@ namespace System.Text
         //
         // The following methods are copied from EncodingNLS.cs.
         // Unfortunately EncodingNLS.cs is internal and we're public, so we have to reimpliment them here.
-        // These should be kept in sync for the following classes:
+        // These should be kept in [....] for the following classes:
         // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding
         //
 
index b8d6403c2d6a3c1dcb830ac41b863ba1def86a33..9da1fcb524b11e9610922f0eae8d10a0d9926094 100644 (file)
@@ -149,7 +149,7 @@ namespace System.Text
         //
         // The following methods are copied from EncodingNLS.cs.
         // Unfortunately EncodingNLS.cs is internal and we're public, so we have to reimpliment them here.
-        // These should be kept in sync for the following classes:
+        // These should be kept in [....] for the following classes:
         // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding
         //
 
index 02e89abd0e62eef7568756bcecd85054b430a02d..fca5a790fed8fcf181d1ceeacf30b06a4cce566d 100644 (file)
@@ -107,7 +107,7 @@ namespace System.Text
         //
         // The following methods are copied from EncodingNLS.cs.
         // Unfortunately EncodingNLS.cs is internal and we're public, so we have to reimpliment them here.
-        // These should be kept in sync for the following classes:
+        // These should be kept in [....] for the following classes:
         // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding
         //
 
index 6038171c5037e3988dd6fea82d993e555c65bf3c..c6ec27a13706238e09f697d01dda82bcfdbce429 100644 (file)
@@ -7,12 +7,12 @@
 //
 // CdsSyncEtwBCLProvider.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A helper class for firing ETW events related to the Coordination Data Structure 
-// sync primitives. This provider is used by CDS sync primitives in both mscorlib.dll 
+// [....] primitives. This provider is used by CDS [....] primitives in both mscorlib.dll 
 // and system.dll. The purpose of sharing the provider class is to be able to enable 
-// ETW tracing on all CDS sync types with a single ETW provider GUID, and to minimize
+// ETW tracing on all CDS [....] types with a single ETW provider GUID, and to minimize
 // the number of providers in use.
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
@@ -36,8 +36,8 @@ namespace System.Threading
     internal sealed class CdsSyncEtwBCLProvider : EventSource
     {
         /// <summary>
-        /// Defines the singleton instance for the CDS Sync ETW provider.
-        /// The CDS Sync Event provider GUID is {EC631D38-466B-4290-9306-834971BA0217}.
+        /// Defines the singleton instance for the CDS [....] ETW provider.
+        /// The CDS [....] Event provider GUID is {EC631D38-466B-4290-9306-834971BA0217}.
         /// </summary>
         public static CdsSyncEtwBCLProvider Log = new CdsSyncEtwBCLProvider();
         /// <summary>Prevent external instantiation.  All logging should go through the Log instance.</summary>
index 5367d15d32383984f1242fe2f1519fdc46bbe6f9..565577f0bd7815392dbfc21331a0025b160e1a7b 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 ////////////////////////////////////////////////////////////////////////////////
 
 #pragma warning disable 0420 // turn off 'a reference to a volatile field will not be treated as volatile' during CAS.
@@ -334,8 +334,8 @@ namespace System.Threading
                 return new CancellationTokenRegistration(); // nothing to do for tokens than can never reach the canceled state. Give them a dummy registration.
             }
 
-            // Capture sync/execution contexts if required.
-            // Note: Only capture sync/execution contexts if IsCancellationRequested = false
+            // Capture [....]/execution contexts if required.
+            // Note: Only capture [....]/execution contexts if IsCancellationRequested = false
             // as we know that if it is true that the callback will just be called synchronously.
 
             SynchronizationContext capturedSyncContext = null;
index 11dbf0bd3c1bcba7d1777a9c09ed9c69bbe1cd39..a340d721ca0200230cabb4e4a606b528ceacb7a4 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 ////////////////////////////////////////////////////////////////////////////////
 
 using System.Diagnostics.Contracts;
index c53db2050947092e40a6cde8484a7db02cf8446c..b656f560a76ed986aac020becdc4e010b768fae8 100644 (file)
@@ -5,7 +5,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 ////////////////////////////////////////////////////////////////////////////////
 
 using System;
@@ -789,7 +789,7 @@ namespace System.Threading
                                 m_executingCallback = currArrayFragment[i];
                                 if (m_executingCallback != null)
                                 {
-                                    //Transition to the target sync context (if necessary), and continue our work there.
+                                    //Transition to the target [....] context (if necessary), and continue our work there.
                                     CancellationCallbackCoreWorkArguments args = new CancellationCallbackCoreWorkArguments(currArrayFragment, i);
 
                                     // marshal exceptions: either aggregate or perform an immediate rethrow
@@ -855,7 +855,7 @@ namespace System.Threading
             {
                 if (callback.TargetExecutionContext != null)
                 {
-                    // we are running via a custom sync context, so update the executing threadID
+                    // we are running via a custom [....] context, so update the executing threadID
                     callback.CancellationTokenSource.ThreadIDExecutingCallbacks = Thread.CurrentThread.ManagedThreadId;
                 }
                 callback.ExecuteCallback();
@@ -951,7 +951,7 @@ namespace System.Threading
     // ----------------------------------------------------------
     // -- CancellationCallbackCoreWorkArguments --
     // ----------------------------------------------------------
-    // Helper struct for passing data to the target sync context
+    // Helper struct for passing data to the target [....] context
     internal struct CancellationCallbackCoreWorkArguments
     {
         internal SparselyPopulatedArrayFragment<CancellationCallbackInfo> m_currArrayFragment;
index 1f1e95ee3a5d7f3e99d325a3835608f65715cf49..4e1addf985a583e8df8b95248f2a7780697abedc 100644 (file)
@@ -7,7 +7,7 @@
 //
 // CountdownEvent.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A simple coordination data structure that we use for fork/join style parallelism.
 //
@@ -115,7 +115,7 @@ namespace System.Threading
                 // The latch is "completed" if its current count has reached 0. Note that this is NOT
                 // the same thing is checking the event's IsCompleted property. There is a tiny window
                 // of time, after the final decrement of the current count to 0 and before setting the
-                // event, where the two values are out of sync.
+                // event, where the two values are out of [....].
                 return (m_currentCount <= 0);
             }
         }
index f34e183d05132a1119f0ca333f279f17349c732e..7be5f6a1a6c6067a55d36c6f3205724ae1faf2f5 100644 (file)
@@ -7,7 +7,7 @@
 //
 // LazyInitializer.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // a set of lightweight static helpers for lazy initialization.
 //
index 2d1278ab9beb87cf138738a5f24cf162beb2b101..7d9e15d1084cd16d8aaa52d5ecc16f1fe7064245 100644 (file)
@@ -8,7 +8,7 @@
 //
 // SlimManualResetEvent.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // An manual-reset event that mixes a little spinning with a true Win32 event.
 //
@@ -281,7 +281,7 @@ namespace System.Threading
             // guarantee only one event is actually stored in this field.
             if (Interlocked.CompareExchange(ref m_eventObj, newEventObj, null) != null)
             {
-                // We raced with someone else and lost. Destroy the garbage event.
+                // We ----d with someone else and lost. Destroy the garbage event.
                 newEventObj.Close();
 
                 return false;
index ddda1718769c6fcfda746b37fad00a8307341a16..f97d1ccc83327a1af49eb76c393115002d2dab21 100644 (file)
@@ -7,7 +7,7 @@
 //
 // SemaphoreSlim.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A lightweight semahore class that contains the basic semaphore functions plus some useful functions like interrupt
 // and wait handle exposing to allow waiting on multiple semaphores.
index 78e7968eb12cafb9b8339f0e6ad016fd6cf643b9..6dd635a31df0ad84b7e011ece0a004f4c5fdd8d2 100644 (file)
@@ -11,7 +11,7 @@
 // repeatedly checking until the lock becomes available. As the thread remains active performing a non-useful task,
 // the use of such a lock is a kind of busy waiting and consumes CPU resources without performing real work. 
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 using System;
index 596f9885a41ce98c3f573318575d035bebe5acf6..3fb4a1fdc8103d209b0a305349bfd84893b1f9bb 100644 (file)
@@ -7,7 +7,7 @@
 //
 // SpinWait.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Central spin logic used across the entire code-base.
 //
index 73d21b566d394007974259cf06911a01def82b18..68b89d53aa9de35ba906f5774813ca833b53c093 100644 (file)
@@ -3,7 +3,7 @@
 ///     Copyright (c) Microsoft Corporation.  All rights reserved.
 /// </copyright>                               
 ///
-/// <owner>Microsoft</owner>
+/// <owner>[....]</owner>
 /// <owner>gpaperin</owner>
 ///----------- ----------- ----------- ----------- ----------- -----------
 
index ec8b1be4cb9c79fe8d32b692bbd199eab4e97dd1..50e9a8122e82df83ae47f7fe6d6b121257454741 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ConcurrentExclusiveSchedulerPair.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A pair of schedulers that together support concurrent (reader) / exclusive (writer) 
 // task scheduling.  Using just the exclusive scheduler can be used to simulate a serial
@@ -70,7 +70,7 @@ namespace System.Threading.Tasks
         /// <summary>Default MaxConcurrencyLevel is the processor count if not otherwise specified.</summary>
         private static Int32 DefaultMaxConcurrencyLevel { get { return Environment.ProcessorCount; } }
 
-        /// <summary>Gets the sync obj used to protect all state on this instance.</summary>
+        /// <summary>Gets the [....] obj used to protect all state on this instance.</summary>
         private object ValueLock { get { return m_threadProcessingMapping; } }
 
         /// <summary>
@@ -763,7 +763,7 @@ namespace System.Threading.Tasks
         /// <param name="isReplacementReplica">If this task is being created to replace another.</param>
         /// <remarks>
         /// These options should be used for all tasks that have the potential to run user code or
-        /// that are repeatedly spawned and thus need a modicum of fair treatment.
+        /// that are repeatedly spawned and thus need a modi---- of fair treatment.
         /// </remarks>
         /// <returns>The options to use.</returns>
         internal static TaskCreationOptions GetCreationOptionsForTask(bool isReplacementReplica = false)
index b04813409d8b89f0ab9b112129702f88b0fd8e57..f8011808bfae15809cc9974dbbb15d890d1d49b3 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Future.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A task that produces a value.
 //
index afe64ec37d0354e618704ecadee802efb13bd193..4168909f0dd17449e19e6aed3039bce3e82ce073 100644 (file)
@@ -7,7 +7,7 @@
 //
 // FutureFactory.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // As with TaskFactory, TaskFactory<TResult> encodes common factory patterns into helper methods.
 //
index d2358ec095150c3e7c09fbcf4363750028a0d640..55aa1597430dbf1f9f070f87f934c459302ad094 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Parallel.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A helper class that contains parallel versions of various looping constructs.  This
 // internally uses the task parallel library, but takes care to expose very little 
@@ -1103,7 +1103,7 @@ namespace System.Threading.Tasks
                                                      fromInclusive, toExclusive);
             }
 
-            ParallelForReplicatingTask rootTask = null; // eliminates "Use of unassigned local variable" compiler 
+            ParallelForReplicatingTask rootTask = null; // eliminates "Use of unassigned local variable" compiler bug below.
 
             try
             {
@@ -1418,7 +1418,7 @@ namespace System.Threading.Tasks
                                                      fromInclusive, toExclusive);
             }
 
-            ParallelForReplicatingTask rootTask = null; // eliminates "Use of unassigned local variable" compiler 
+            ParallelForReplicatingTask rootTask = null; // eliminates "Use of unassigned local variable" compiler bug below.
 
             try
             {
index 4fd15a87a9ca06564da81234d918858dff44e741..2ae0c8790457fb7f593ef9bdd4cc5f7bc0968664 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ParallelState.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A non-generic and generic parallel state class, used by the Parallel helper class
 // for parallel loop management.
index 7c625cf2292de95cd82099ffe89d6db90981e00c..89d3b65b40e8c11240b97a31b0f1e7ef1597b056 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ParallelRangeManager.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Implements the algorithm for distributing loop indices to parallel loop workers
 //
index b0b8db284d5a493c40244bf2035668b94714945d..50febfcbcf4571c042950c4da25d86155534c574 100644 (file)
@@ -7,7 +7,7 @@
 //
 // ProducerConsumerQueues.cs
 //
-// <OWNER>Microsoft, Microsoft</OWNER>
+// <OWNER>[....], [....]</OWNER>
 //
 // Specialized producer/consumer queues.
 //
@@ -58,7 +58,7 @@ namespace System.Threading.Tasks
         int Count { get; }
 
         /// <summary>A thread-safe way to get the number of items in the collection. May synchronize access by locking the provided synchronization object.</summary>
-        /// <param name="syncObj">The sync object used to lock</param>
+        /// <param name="syncObj">The [....] object used to lock</param>
         /// <returns>The collection count</returns>
         int GetCountSafe(object syncObj);
     }
index 005e7d3854cedb17b7ce3f41864f1d053cc74d1b..aed9c00a5b36e411a0ee41fb7ab97c3be035d60b 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TplEtwProvider.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // EventSource for TPL.
 //
index cb9928edd6a6203d309ce90e990f649960c84c18..e1ac3d262a8c641aace88316548f839d70a74a2d 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Task.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A schedulable unit of work.
 //
index 256bd029487c23396b9b087a2fd0c5a276345d60..fe647cdb3d658cc5e97ebda2425d50ab5524729a 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskCanceledException.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // An exception for task cancellations.
 //
index 7d1487a7c99ca03ce9eadea7c44e383b29a12b7d..8c5edf09723092099b52e1cdbb9049d91de3e7f6 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskCompletionSource.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // TaskCompletionSource<TResult> is the producer end of an unbound future.  Its
 // Task member may be distributed as the consumer end of the future.
index eecbd9e124f35a1a15bd99109239ca78621e9b80..eb106a7852a61a1c839f541f5ee34d4f511122e3 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskContinuation.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Implementation of task continuations, TaskContinuation, and its descendants.
 //
@@ -223,7 +223,7 @@ namespace System.Threading.Tasks
     //     - StandardTaskContinuation: wraps a task,options,and scheduler, and overrides Run to process the task with that configuration
     //     - AwaitTaskContinuation: base for continuations created through TaskAwaiter; targets default scheduler by default
     //         - TaskSchedulerAwaitTaskContinuation: awaiting with a non-default TaskScheduler
-    //         - SynchronizationContextAwaitTaskContinuation: awaiting with a "current" sync ctx
+    //         - SynchronizationContextAwaitTaskContinuation: awaiting with a "current" [....] ctx
 
     /// <summary>Represents a continuation.</summary>
     internal abstract class TaskContinuation
index 3ba61491b738555583d4cf78b421b4565a445f5f..32d121d166c36fedcb3a42b36acdc0970ffca11e 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskExceptionHolder.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // An abstraction for holding and aggregating exceptions.
 //
index b15df277ab4b1bde5025f55ca2d78d2e066722e2..3c8e798e0311370d8c30a814ea22dc3942748e43 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskFactory.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // There are a plethora of common patterns for which Tasks are created.  TaskFactory encodes 
 // these patterns into helper methods.  These helpers also pick up default configuration settings 
index d4741e456366533f866bdb9064c978fc49008a0b..083f9e1509ec731490a1aa30481a1322ae3e3780 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskScheduler.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // This file contains the primary interface and management of tasks and queues.  
 //
index 5d2f9ad79e003fd1c51e6ea89ba662c295f55b7f..61b75ea7fc0f4b2bf68c5179aa92b1f0a47fb887 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskSchedulerException.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // An exception for task schedulers.
 //
index e518055ee05a9b75d5d862a58b16bec7b3baf3bf..952d539a73a556cd3e9398b06cffcc2f2e433172 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskToApm.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Helper methods for using Tasks to implement the APM pattern.
 //
index 87b5a06c29990edc26655a29cf66b9d882d86256..0da78181961dd2b39dc3b440d3c84df0aea2fa21 100644 (file)
@@ -7,7 +7,7 @@
 //
 // TaskScheduler.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // This file contains the primary interface and management of tasks and queues.  
 //
index 916a7751c2fa0e600fcdeaa0568cf4a7dd0fd58a..6bc6d2b6fbab59e01e5f726522fe2e0ac919729b 100644 (file)
@@ -8,7 +8,7 @@
 //
 // ThreadLocal.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // A class that provides a simple, lightweight implementation of thread-local lazy-initialization, where a value is initialized once per accessing 
 // thread; this provides an alternative to using a ThreadStatic static variable and having 
index 593f215f14b6c5ceef73a7ee079a0735c6479db4..d32f45303b587bc82072e690a969a1605e3cc93a 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // AbandonedMutexException
 // Thrown when a wait completes because one or more mutexes was abandoned.
index 3e1f5f9f69e6ad429793ecef5a1c3b13373eac5c..600a4b0ee0359dff530defe3c615c0704379bede 100644 (file)
@@ -2,7 +2,7 @@
 // 
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 using System;
 using System.Collections.Generic;
index 1ed58d271aff35d8cf9b79b41248b296c9e235c1..e7506554e42a17d3dd431b5cced3712affc62c67 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: AutoResetEvent
index 5c18afbbb1dc50cc8591d5cc5aae1fb30ef48674..d6c584d8276d1b05cac2faa749ecf3a1a5fee559 100644 (file)
@@ -7,8 +7,8 @@
 **
 ** Class: CompressedStack
 **
-** <OWNER>Microsoft</OWNER>
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
+** <OWNER>[....]</OWNER>
 **
 ** Purpose: Managed wrapper for the security stack compression implementation
 **
index 65151cff78cd4230568530b11fb7f27fd0a26a7d..08426b232735ae20e30bc235cfb014d7bee30992 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: EventWaitHandle
index fb7a53c429e4ed8be52a0294d55dbf806a6520d1..f45448b9771050103e86b91aa9af9d08f623b443 100644 (file)
@@ -6,7 +6,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*============================================================
 **
 ** Class:  ExecutionContext
@@ -450,7 +450,7 @@ namespace System.Threading
         
         public override int GetHashCode()
         {
-            // review - Microsoft
+            // review - [....]
             return _thread == null ? ToString().GetHashCode() : _thread.GetHashCode();
         }
         
@@ -1237,7 +1237,7 @@ namespace System.Threading
 
             if (!ecCurrent.IsNull)
             {
-                // capture the sync context
+                // capture the [....] context
                 if (0 == (options & CaptureOptions.IgnoreSyncCtx))
                     syncCtxNew = (ecCurrent.SynchronizationContext == null) ? null : ecCurrent.SynchronizationContext.CreateCopy();
 
index 2f5ccc667619256fdfa5a091c3b7b2998da360a0..981b2889b528d1e0318fce540c5bd5ec548da50c 100644 (file)
@@ -4,7 +4,7 @@ using System.Diagnostics.Contracts;
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*============================================================
 **
 ** Class:  ExecutionContext
index 441460b70a57c5d562460953fd5b53fac61d969d..fad5b4625c2e51e3b1bc8971b4eccaac27ea4da3 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Threading
 {
     using System;
index 32c9760976fe981193658c3c75ff59402cef2bfa..86f8182221d204fcb324977e1b40d8e49bacb06b 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*============================================================
 **
 ** Class:    LockCookie
@@ -29,7 +29,7 @@ namespace System.Threading {
 
         public override int GetHashCode()
         {
-            // review - Microsoft!
+            // review - [....]!
             return _dwFlags + _dwWriterSeqNum + _wReaderAndWriterLevel + _dwThreadID;
         }
         
index 392c72cc8a8c1d1abc8d99264a9bff7aec8e89d4..f9c999135f728fd7bf9bbf66abd5a9646e4f4650 100644 (file)
@@ -13,8 +13,8 @@
 // acquire a lock, because the particular lock kind doesn't
 // support it in its current state.
 //
-// <OWNER>Microsoft</OWNER>
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
+// <OWNER>[....]</OWNER>
 //
 ============================================================*/
 
index 1586fb44ac9e4d8a8494dc2ac7372e5c55d9b45e..40db6655c7f3b8a6ff3dc75db0b2012dfb0d11f3 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: ManualResetEvent
index 9ceade566079c1927821a9b77a8726d8e78f7ebc..9232230801d229d6917bcf3c9a72c48b9c5ed8a0 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: Monitor
index 9e403c08a8d26c1e33c867a0790e129893df09e9..bfd5458ca9199f738f3eb04906232249b45b12ef 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: Mutex
index 2a19f42f086dac84808681b5d59be66f76771aca..eb22b0a8c166656ae382f3958b39cbbc90841b63 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 /*
  * This files defines the following types:
index 50f61b25fae055f9df566ea79649382b3eb353dc..cc5a736be4af87244c3b43520f753c452b334d3b 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*============================================================
 **
 ** Class:    RWLock
index 5a61c8f793d66bba70da591c1f4512955ef58a48..19b0632ca474ddb8fb80758a73b2e1c5c3040b90 100644 (file)
@@ -7,7 +7,7 @@
 **
 ** Class: SemaphoreFullException
 **
-** <OWNER>Microsoft</OWNER>
+** <OWNER>[....]</OWNER>
 **
 =============================================================================*/
 namespace System.Threading {
index 9d4b0709dde869d5ff7603801d05472421ede1d8..c5e8fbb4091c89e6b03d550038cc14467feec3c0 100644 (file)
@@ -3,7 +3,7 @@
 //   Copyright (c) Microsoft Corporation.  All rights reserved.
 // 
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*============================================================
 **
 ** Class:  SynchronizationContext
@@ -81,7 +81,7 @@ namespace System.Threading
         static Type s_cachedPreparedType4;
         static Type s_cachedPreparedType5;
 
-        // protected so that only the derived sync context class can enable these flags
+        // protected so that only the derived [....] context class can enable these flags
         [System.Security.SecuritySafeCritical]  // auto-generated
         [SuppressMessage("Microsoft.Concurrency", "CA8001", Justification = "We never dereference s_cachedPreparedType*, so ordering is unimportant")]
         protected void SetWaitNotificationRequired()
@@ -95,7 +95,7 @@ namespace System.Threading
             // So we keep track of a few types we've already prepared in this AD.  It is uncommon to have more than
             // a few SynchronizationContext implementations, so we only cache the first five we encounter; this lets
             // our cache be much faster than a more general cache might be.  This is important, because this
-            // is a *very* hot code path for many WPF and Microsoft apps.
+            // is a *very* hot code path for many WPF and [....] apps.
             //
             Type type = this.GetType();
             if (s_cachedPreparedType1 != type &&
@@ -188,11 +188,11 @@ namespace System.Threading
         private static SynchronizationContext s_threadStaticContext;
 
                //
-               // NetCF had a 
-
-
-
-
+               // NetCF had a bug where SynchronizationContext.SetThreadStaticContext would set the SyncContext for every thread in the process.  
+               // This was because they stored the value in a regular static field (NetCF has no support for ThreadStatic fields).  This was fixed in 
+               // Mango, but some apps built against pre-Mango WP7 do depend on the broken behavior.  So for those apps we need an AppDomain-wide static
+               // to hold whatever context was last set on any thread.
+               //
         private static SynchronizationContext s_appDomainStaticContext;
 
         [System.Security.SecurityCritical]
index 91d4ac3639ce905545567bede3fe6053b27fe0ea..884005d214b15d76c77eeb6e7c70eb086aad68d8 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: SynchronizationLockException
index f45df0fcda81ad133b489c82b26a1700f4177f06..e5e389c82a211a89ecd869b4f278be05d7495323 100644 (file)
@@ -4,7 +4,7 @@
 //
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: Thread
@@ -1167,12 +1167,12 @@ namespace System.Threading {
                 if (CompatibilitySwitches.IsAppEarlierThanWindowsPhone8)
                 {
                     //
-                    // NetCF had a 
-
-
-
-
-
+                    // NetCF had a bug where Thread.Current{UI}Culture would set the culture for every thread in the process.  
+                    // This was because they stored the value in a regular static field (NetCF has no support for ThreadStatic fields).
+                    // Some apps depend on the broken behavior. We will emulate this behavior by redirecting setters to 
+                    // DefaultThreadCurrentUICulture. (Note that this property did not existed in NetCF and so it is fine to piggy back 
+                    // on it for the quirk.)
+                    //
                     CultureInfo.SetCurrentUICultureQuirk(value);
                     return;
                 }
index a86b37ecd55bce0848e66f7a1d216ca2394fb230..60046c7dba2ff68d34dbc612b28405e125b430b3 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: ThreadAbortException
index af9a03dc36b0f2e213838334b8f5c9d0e77c6d18..28e1eed10d3ad4b45aac742c1fd5103fae4e789a 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: ThreadInterruptedException
index 81041e4191ef81b7f6d3179e7441f85facd55703..851996e18d9894e5803542ab9ae7b8881e345ddd 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: ThreadPool
@@ -131,7 +131,7 @@ namespace System.Threading
                             }
                             else if (i == array.Length - 1)
                             {
-                                // Must resize. If we raced and lost, we start over again.
+                                // Must resize. If we ----d and lost, we start over again.
                                 if (array != m_array)
                                     continue;
 
index 99163d89bd74a6809cd64915cb81e611b569d01b..a04134946c9454682bef45cec2297ca0d2d23484 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 namespace System.Threading 
 {
index fecd34441cc103c8998d11809490964d45b1247c..3fa634c23968937bc01ec1efcc6a539c3ef517df 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: ThreadStateException
index 9b7d3562a09bdde7b20fe575e4638537f4ca5f42..bf070e1d3281bb7ea298a97873eaae798fe847f3 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 namespace System.Threading {
     using System.Threading;
index f9f51d03c0f06dec3e5fdab3cf7c1bb6992a0818..eae1ca60fd90a8adffe9062285cb1f2789f32820 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 
 using Microsoft.Win32;
 using Microsoft.Win32.SafeHandles;
@@ -72,7 +72,7 @@ namespace System.Threading
         // We need to keep our notion of time synchronized with the calls to SleepEx that drive
         // the underlying native timer.  In Win8, SleepEx does not count the time the machine spends
         // sleeping/hibernating.  Environment.TickCount (GetTickCount) *does* count that time,
-        // so we will get out of sync with SleepEx if we use that method.
+        // so we will get out of [....] with SleepEx if we use that method.
         //
         // So, on Win8, we use QueryUnbiasedInterruptTime instead; this does not count time spent
         // in sleep/hibernate mode.
index 5682b2973fcd542652b4ef5b33b4b248f38922a2..abf6cb7cc312330a5abb0a1c6669c25c9891bded 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 using System;
 using System.Runtime.InteropServices;
 using System.Runtime.Versioning;
index 972cd8120de8a65bc93d5b13c7ac0ac436906aa2..106ebcf6e1bc5a4d17d5754eafe2f0b3f97cb6e4 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 /*=============================================================================
 **
 ** Class: WaitHandle    (this name is NOT definitive)
@@ -107,7 +107,7 @@ namespace System.Threading
                     // ideally do these things:
                     // *) Expose a settable SafeHandle property on WaitHandle.
                     // *) Expose a settable OwnsHandle property on SafeHandle.
-                    // We're looking into this.   -- Microsoft
+                    // We're looking into this.   -- [....]
                     if (safeWaitHandle != null)
                     {
                         safeWaitHandle.SetHandleAsInvalid();
index 06c941d6e62eb220d0611fa098ec54d93a256a8c..b7b80e060ea4da8485fa5fb5291592a984271f3e 100644 (file)
@@ -4,7 +4,7 @@
 // 
 // ==--==
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 namespace System.Threading 
 {
     using System;
index 6ac485a45d9bd39f2ee55f4420d1eff4ad244c39..e31567473f76028d20434e8ef3e53f23aab793bb 100644 (file)
@@ -6,7 +6,7 @@
 //
 // File: Type.cs
 //
-// <OWNER>Microsoft</OWNER>
+// <OWNER>[....]</OWNER>
 //
 // Implements System.Type
 //