platform/core/csapi/xsf.git
4 years agoAdd splash screen to XStopWatch (#165)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 25 Mar 2020 08:10:45 +0000 (17:10 +0900)]
Add splash screen to XStopWatch (#165)

4 years agoUpdate sample apps to use XSF single assembly (#164)
안주원/Common Platform Lab(SR)/Principal Engineer/삼성전자 [Wed, 25 Mar 2020 07:38:21 +0000 (16:38 +0900)]
Update sample apps to use XSF single assembly (#164)

4 years agoMerge pull request #163 from wy80-choi/single-asm
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 25 Mar 2020 06:45:14 +0000 (15:45 +0900)]
Merge pull request #163 from wy80-choi/single-asm

Refactor XSF to single assembly version

4 years agoRefactor XSF to single assembly version
Wonyoung Choi [Wed, 25 Mar 2020 06:34:16 +0000 (15:34 +0900)]
Refactor XSF to single assembly version

This project provides following 3 main assemblies.
- XSF: The main runtime assembly integrated all related projects including Xamarin.Forms and CircularUI.
- XSF.Build.Tasks: The stuff for Xaml compilation.
- XSF.Design: Provides metadata for intellisence at design-time.

4 years agoSynchronize the `XSF` with `Xamarin.Form` (#161)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 24 Mar 2020 05:57:27 +0000 (14:57 +0900)]
Synchronize the `XSF` with `Xamarin.Form` (#161)

* [Android,iOS,UWP,WPF] MediaElement control (#3482)

* MediaElement and iOS/Android/UWP renderers.

* Added basic WPF renderer. Fixed sizing issue on UWP renderer. Added sample page to ControlGallery app

* MediaEnded event on UWP. Source Uri convert ms-appx to pack:// uri scheme on WPF

* code style fixes

* resolving conflicts

* Following discussion on PR made NaturalDuration a nullable TimeSpan so that can determine when value is not present.
Added CanSeek property to indicate when Position property can be set.
Added support for KeepScreenOn to WPF renderer.
Improved ControlGallery page with separate Play/Pause/Stop buttons and label to display current state

* coding style fixes

* coding style fixes 2

* Improved media controls on demo page. Renderer enhancements for Android and iOS

* Improved logic around media metadata in iOS renderer.
Switched to https video uri to allow playback in iOS. Increased media control button sizes

* Improved parsing of ms-appdata uris supporting both the local and temp folders

* Removed redundant Debug.WriteLines. Removed XML docs from MediaElement and MediaElementState types.

* Bug fix for iOS MediaElement.Source Uri escape handling

* Adding MediaElement fast renderer for Android

* Rearchitecting the Element/Renderer connectivity. New WPF,UAP and Android FastRenderer complete. Still requires Android classic renderer and iOS renderer...

* More MediaElement renderer development. Converted iOS to a FastRenderer

* Latest android renderer

* Android renderer fix for StopPlayback reusability. MetadataRetreiver now loaded async.

* Added an IMediaElementController property to Android renderers to simplify code.

* Simplified Aspect property

* Changed AreTransportControlsEnabled to ShowsPlaybackControls. Removed commented-out code.

* merging

* merging

* added mediaelementrenderer back

* support for polling the position property. Added timer to demopage to poll for position.

* Fixed scaling issue on iOS and background color

* Renderer code review issues

* Implementing MediaSource (ImageSource pattern) to replace Uris. Other code cleaning fixes.

* Hooked up MediaSource and kept uri custom schema logic

* Moved all the "callback" methods to the IMediaElementController interface so they are not publicly exposed on the MediaElement. Removed HttpHeaders and associated code for v1 release. Other code tidying.

* Code review feedback

* Integrated unit tests. Added support for inherited binding on MediaSource.

* Additional Windows file path test. Fix for UWP renderer to check if Control is released

* Fix for FormsVideoView metadata causing aspect issues. Simplified Android FastRenderer to correctly handle VideoView lifetime.

* fixed merge error

* fixed merge errors

* MediaElement and iOS/Android/UWP renderers.

* Added basic WPF renderer. Fixed sizing issue on UWP renderer. Added sample page to ControlGallery app

* MediaEnded event on UWP. Source Uri convert ms-appx to pack:// uri scheme on WPF

* code style fixes

* resolving conflicts

* Following discussion on PR made NaturalDuration a nullable TimeSpan so that can determine when value is not present.
Added CanSeek property to indicate when Position property can be set.
Added support for KeepScreenOn to WPF renderer.
Improved ControlGallery page with separate Play/Pause/Stop buttons and label to display current state

* coding style fixes

* coding style fixes 2

* Improved media controls on demo page. Renderer enhancements for Android and iOS

* Improved logic around media metadata in iOS renderer.
Switched to https video uri to allow playback in iOS. Increased media control button sizes

* Improved parsing of ms-appdata uris supporting both the local and temp folders

* Removed redundant Debug.WriteLines. Removed XML docs from MediaElement and MediaElementState types.

* Bug fix for iOS MediaElement.Source Uri escape handling

* Adding MediaElement fast renderer for Android

* Rearchitecting the Element/Renderer connectivity. New WPF,UAP and Android FastRenderer complete. Still requires Android classic renderer and iOS renderer...

* More MediaElement renderer development. Converted iOS to a FastRenderer

* Latest android renderer

* Android renderer fix for StopPlayback reusability. MetadataRetreiver now loaded async.

* Added an IMediaElementController property to Android renderers to simplify code.

* Simplified Aspect property

* Changed AreTransportControlsEnabled to ShowsPlaybackControls. Removed commented-out code.

* merging

* support for polling the position property. Added timer to demopage to poll for position.

* Fixed scaling issue on iOS and background color

* Renderer code review issues

* Implementing MediaSource (ImageSource pattern) to replace Uris. Other code cleaning fixes.

* Hooked up MediaSource and kept uri custom schema logic

* Moved all the "callback" methods to the IMediaElementController interface so they are not publicly exposed on the MediaElement. Removed HttpHeaders and associated code for v1 release. Other code tidying.

* Code review feedback

* Integrated unit tests. Added support for inherited binding on MediaSource.

* Additional Windows file path test. Fix for UWP renderer to check if Control is released

* Fix for FormsVideoView metadata causing aspect issues. Simplified Android FastRenderer to correctly handle VideoView lifetime.

* fixed merge error

* manual merge fixes

* Fixed missing FileMediaSourceConverter

* Fixed merge issue with iOS project file

* Clarification to WPF Source Uri exception message

* Changed iOS local path to the Library path as this is not user visible or synchronised with iCloud. Fix for breaking change in WeakEventManager

* Added Volume property

* Fixes for code-review feedback

* Optimised iOS renderer to remove a view layer

* fixes to resolve possible rotation bug

* Moved ms-appdata parsing to shared location.

* fixed codesign error

* Fix for issue on Android where control may show black screen prior to video playing - now respects backgroundcolor property

* Renamed conflicting extensions class

* Add experimental flag; remove slow renderer

* Update MediaElementDemoPage.cs

* Update MediaElementRenderer.cs

* Update MediaElementRenderer.cs

* Porting latest renderer updates. iOS re-written as a non-fast renderer to workaround issue with dispose when using on modal pages.

* Fixed protected member in sealed class issue

Co-authored-by: Rui Marinho <me@ruimarinho.net>
Co-authored-by: Samantha Houts <samhouts@users.noreply.github.com>
fixes #1692

* propagate bindingcontext to ItemsLayout (#9221)

* [Android] Fix sizing and position on Android of the Indicators (#9343) fixes #8911 fixes #8934

* [Android] Center indicators by default

* [Core] Add an extra point to fix size issues on Android 10

* Update IndicatorView.cs

* Adds Cookies to the WebView fixing #Issue3262 (#8169)

* New branch of Master so that I can re-build the issue and fix by cherry-picking the files as needed.  This is just Master with the issue3262.cs added at the moment...

* Added the UnitTest to the WebViewUnitTest.cs it currently fails...

* Added the BindableProperty to the WebView.cs in the XF core...

* Firsly forgot to add the Issue3262.cs to the project (Oppsie!) but this commit is for the Droid platform implementation...

* Adding the IOS platform renderer implementation...

* Adding the UWP platform renderer implementation...

* Added Cookies.Count null check as it was missing and caused a NullRef Exception... Need to check the other renderers...

* Added Cookies.Count null check as it was missing and could cause a NullRef Exception...

Co-authored-by: Rui Marinho <me@ruimarinho.net>
* Allow multiple selection updates with one notification in CollectionView (#8737) fixes #8203

* Repro and UI test

* Add method to allow renderers to update multiple selections with one changed notification;
Fixes #8203

* [Android,iOS] Add Visual States to CarouselView items (#8785) fixes #7904 fixes #7997 fixes #8671

* [iOS] Add CarouselView states

* [iOS] Update method naming UpdateVisualStates

* [Android] Add Visual states to CarouselView items

* Update ExampleTemplateCarousel.xaml

* [Android] Implement Visual states for carousel items

* [Android] Cleanup on CarouselViewRenderer

* [Android] Add default state to view

* [Android] Fix when we update vsm

* [Android] Rollback change on adapter

* Update CarouselViewRenderer.cs

* [Android] Update States also when ScrollTo is requested

* [Android] Fix Teardown CarouselViewRenderer

* working-fix7904

* Cleanup

* Update App.cs

* [iOS,Android] Set initial position

* [Controls] Update sample Carousel

* [Core] Update current position on scroll

* [Controls] Cleanup

* [Core] Don't update position if we are scrolling to

* [Android]Rename  ScrollsToAction

* [ANdroid] Remove extra ScrollTo

* Update CarouselViewController.cs

* Cleanup

* [Android] Fix initilization Android CarouselView

* [iOS,Core] Add VisibleViews to CarouselView iOS

* [Android] Populate VisibleViews

* [Core,iOS,Droid] Move to a mroe explicit name for platform initialized

* [Core] Remove not used VisualState

* [Android] Fix scrollto when layout loads

* [Controls] Fix Carousel example gallery

* [Android]Better fix for ScrollTo when loading the RecyclerView

* [Android] Null check for eventhandler

* [iOS] Update if any ScrollToaActions exist

* [iOS, Android] Fix spelling CarouselViewRenderer

* [Android] Rename CarouselViewwOnGlobalLayoutListener

* Allow to create more easily SwipeItems (#8757) fixes #8753

* Added new constructors to SwipeItems to allow to create more easily using CSharp

* Fixed build error

* Changed SwipeItems constructor

* Removed SwipeItem parameter constructor
Renamed internal SwipeItems collection

* Chain the ctors

Co-authored-by: Samantha Houts <samhouts@users.noreply.github.com>
* Fix UWP Nuspec to copy correct NS version (#9388)

* fix ns references

* disable layout files

* - preserve

* - 2017 workarounds

* - winui

* Implemented BindableLayout EmptyView (#7686) fixes #6932

* Update BindableLayoutGalleryPage.xaml

* Added demo

* Account for null and added tests

* Big cleanup

* Update BindableLayout.cs

* Update BindableLayoutGalleryPage.xaml

Co-authored-by: Rui Marinho <me@ruimarinho.net>
* Fix 8586 8587 - [Tizen] Added guard for CollectionView (#9367) fixes #8586 #8587

* [Tizen] Remove events on unbinding in CollectionView

- Resolves bug #8587

* [Tizen] Guard for sizeless layout requests in CollectionView

- Resolves bug #8586

* Improve animation behavior with regard to power saving mode (#8921)

* Return canceled value when animations are forced to complete because
they were disabled by the system

* Add IsEnabled to check whether animations are available

* Check animation status every time power save mode changes;
Use AreAnimatorsEnabled for newer API versions;
Fixes #8634; Fixes #7500;

* Add missing awaits

* Fix rebase issue

* fix HR on 4.4+ (#9433)

* [Enhancement] AdaptiveTriggers (#9422)

* Initial AdaptiveTriggers commit

* Updated adaptive triggers implementation

* Fixed AdaptiveTrigger conflicts issue

* Improved OrientationStateTrigger

* Updated AdaptiveTrigger sample

* Improved StateTriggers conflicts resolution
Added CompareStateTrigger
Propagate BindingContext from parent VisualElement to StateTriggers

* Propagate BindingContext correctly to StateTriggers.

* Added StateTriggers unit tests

* Fixed broken unit tests.

* Added more StateTriggers unit tests

* Added more AdaptiveTriggers samples

* Fixed wrong line break

* Moved PropagateBindingContextToStateTriggers from View to VisualElement

* Added DualScreenStateTrigger

* Changes based on PR feedback (modify AdaptiveTrigger class to be sealed)

* Added AdaptiveTriggersExperimental

* Changes in OrientationStateTrigger to use Device Info INPC

* More changes to cover PR feedback

* Updated DualScreenStateTrigger to use TwoPaneViewMode enum instead a bool

* Fixed problem with WeakEventListener, unsubscribe events correctly

* - call update state when attaching

* - IsTriggerActiveChanged

* Update Xamarin.Forms.Core/StateTrigger.cs

* Update Xamarin.Forms.DualScreen/SpanModeStateTrigger.shared.cs

* - isactive simplify

* - update state

* - toggle state tests

* - fix flag on unit tests

Co-authored-by: Shane Neuville <shane94@hotmail.com>
* Adding null check for picker items (#9478) fixes #2674

* Add default fontsize back to size BP (#9506)

- fixes #9371

* [Core] Allow CarouselView to specify IndicatorView  (#9332) fixes #8992

* [Core] Add extension point to IndicatorView link to other controls

* [Core] Move ItemSourceBy from attached property to bindable property

* [Core] ItemsSourceBy just takes ItemsView

* [Core] Remane to LinkToItemsView

* [Core] Remove ItemsSourceBY and add to CarouselView IndicatorsView property

* Update Xamarin.Forms.ControlGallery.Android.csproj

* [Core] Don't use BP for IndicatorView reference

* RadioButton Implementation (#8910) fixes #2404 closes #5349

* RadioButton

* Removed unused files

* Rebase and make it run

* First round of feedback

* Revert AppCompatButton -> AButton

* Cleaned minor usings

* Fix unselecting radiobutton on iOS

* Fixed Mac OS grouping

* [Android] Fix API29 usages

Co-authored-by: Andrei Nitescu <nitescua@yahoo.com>
Co-authored-by: Rui Marinho <me@ruimarinho.net>
* Fixed the build issue

* [Android] Properly unsubscribe ToolbarItem on removal (#9485) fixes #9419

* [Android] Properly unsubscribe ToolbarItem on removal.

* New approach.

* Only add item if not present.

* [iOS,Android,Core] Implement MaximumVisible  on iOS and Android  (#9592) fixes #8912

* [Core] Update MaxVisible usage on IndicatorView

* [Android] Set MaxVisible usage on IndicatorViewRender

* [iOS] Update MaximumVisible count for IndicatorViewRenderer

* [Controls] Add sample for IndicatorMaximumVisible

* [Core] Reset indicators if IndicatorView MaximumVisible changes

* Fix ios url images (#9682)

* Generalize StreamWrapper Image Uri Loading Behavior

* - await stream retrieve opposed to returning task

* - generalize ui test for more platforms

* - fix ui tests

* - disable caching

* [Spec] CSharpForMarkup (#8342)

* - Add MarkupExtensions from https://github.com/VincentH-Net/CSharpForMarkup/blob/061566282706de22d040e5b7b32bc3c2e3e323e3/src/XamarinFormsMarkupExtensions.cs
- Remove specific converters
- Fix .NETStandard 1 build errors by refactoring IConvertible to Enum generic constraints
- Add RegisterDefaultBindableProperties method
- Reformat source to comply with Forms contibuting guidelines

* - Move markup extensions to Xamarin.Forms.Markup namespace to prevent impact on existing code and to support clear separation of UI markup from UI logic
- Split up source file for better maintainability

* Cleanup:
- Names of generic types and variables to reflect where clauses
- Namespaces remove unused & sort
- Add whitespace
- Remove unused file

* Fix for incorrect type name in exception message
Remove RowCol helpers because compiler cannot infer its generic type parameters. Use Row and Col methods instead

* Add targetNullValue and fallbackValue parameters to binding helpers.
Equivalent to https://github.com/VincentH-Net/CSharpForMarkup/tree/bd7f99957653f5e813ec805e3dad88aa487b9526

* rename binding helpers sourcePropertyName parameter to path

* Enable Style<T> on BindableObject instead of Element to resolve https://github.com/xamarin/Xamarin.Forms/pull/8342#discussion_r363088124

* Fix for Grid properties Row, Col, RowSpan, ColumnSpan not set when default value is specified https://github.com/VincentH-Net/CSharpForMarkup/issues/7

* Support DefaultBindableProperties for BindableObject (was limited to Element)

* .Font:
- Support any IFontElement (was limited to Button, Label, Entry and Picker)
- Fix for italic ignored when bold == true

* Fix for .FontSize, .Bold, .Italic return Label instead of type derived from Label

* Unit tests batch 1: for LabelExtensions, LayoutExtensions, ViewExtensions

* Add DefaultBindableProperties for more BindableObject types

* Remove .Menu() helper from ViewInFlexLayoutExtensions (bc no relation to FlexLayout)

* Fix for .Row and .Col without span specified still sets span

* Rename MarkupBaseTestFixture.TestPropertySet to TestPropertiesSet

* Add unit tests for ViewInFlexLayoutExtensions, ViewInGridExtensions and VisualElementExtensions

* Add default bindable property for all applicable bindable objects in core.

* Add unit tests for DefaultBindableProperties

* Support Bind, Assign and Invoke on BindableObject (was Element)
Add inline doc to clarify purpose of Bind overloads

* Add unit tests for BindableObjectExtensions

* Fix for attributes not set in .Font
Rename fontSize parameter to size
Enable .FontSize, .Bold and .Italic on IFontElement (was Label)

* Add unit tests for ElementExtensions

* Add unit tests for ElementExtensions

* Add assert of exception message content in GetDefaultBindablePropertyForUnsupportedType

* Add unit tests for EnumsForGridRowsAndColumns

* Add inline doc to clarify purpose of gesture recognizer binding overloads
Rename private constant bindingContextPropertyName to bindingContextPath for clarity

* Add unit tests for Style; cleanup namespaces in Style

* Simplify BindableObjectExtensions implementation (functionality unchanged)

* Add IGestureRecognizers to GestureElement and View, to avoid code duplication when accessing the existing GestureRecognizers property

* - Add specific helpers for more built-in gesture recognizers
- Add helpers to support initializing gesture recognizers
- Eliminate duplicate code for View and GestureElement by using new IGestureRecognizers
- Simplify implementation
- Rename ViewGesturesExtensions to ElementGesturesExtensions

* Extract BindingHelpers from BindableObjectExtensionsTests

* Add unit tests for ElementGesturesExtensions

* Add support for typed converter parameters
Add asserts for conversion values in unit tests

* Add unit tests for FuncConverter

* Add missing calls to Bind overloads in unit test for supporting derived types in BindableObject extensions fluent API

* Cleanup: remove unneeded Xamarin.Forms. prefix from static class references

* Add unit tests for PlatformSpecificsExtensions

* Reorder FuncConverter type params to optimize for most common usage and to remain backwards compatible with https://github.com/VincentH-Net/CSharpForMarkup

* Extend Bind*Gesture helpers to support all possible binding parameters

* Rename EnumsForGridRowsAndColumns to GridRowColEnums

* Add BindCommand helper to bind to default Command + CommandParameter properties
Add RegisterForCommand to register default Command + CommandParameter properties for custom bindable objects

* - Change Bind*Gesture helper parameters to match BindCommand parameters, to enable binding to Command + CommandParameter in a single compact call (removed parameters did not make sense for a command).
- Add inline doc to more ElementGesturesExtensions helpers where needed
- Improve ElementGesturesExtensions source formattting for consistency and readability

* Remove PlatformSpecificsExtensions
(only 2 iOS-only helpers; replace with guidance in PR description on how to use any platform specific with .Invoke)

* Fix inline doc spelling: it's -> its

* Rename TextLeft -> TextStart, TextRight -> TextEnd to support RTL

* Add Columns.Define(width, width ...) and Rows.Define(height, height ...) overloads for Grid

* Rename Grid rows & columns extensions class to GridRowsColumns

* Change gesture recognizer helpers implementation from reuse existing instance to always add new instance

* Change Bind*Gesture helpers default to not bind the commandparameter (is the more common scenario)

* Rename BoolNotConverter to NotConverter and make it a 2-way converter

* Add culture support to FuncConverter

* Rename helpers Left -> Start, Right -> End
Add opt-in LeftToRight and RightToLeft helpers

* Rename Col -> Column throughout

* Rename H -> Horizontal and V -> Vertical throughout

* Add Markup_Experimental flag for all API methods and update all unit tests to run with and without the flag

* Re-add "Markup_Experimental" flag

* Add default bindable properties / test exclusions for new BindableObject types in core

* Add constructorHint to FuncConverter and Style for more clear experimental flag message

* Add default bindable property for RadioButton - fixes test AllBindableElementsInCoreHaveDefaultBindablePropertyOrAreExcluded failure

* [Core,iOS] Invalidate size when IndicatorView collection/count changes (#9672) fixes #9666

* [Controls] Add sample for issue #9666

* [Core] If IndicatorView collection changes invalidate size

* [Tizen] MediaElement control support (#9634)

* [Bug] DisplayPromptAsync overload hurts usability (#9749)

- fixes #9171

* Update PromptArguments.cs

* Update Page.cs

* Revert "Update Page.cs"

This reverts commit 7272b8991a61aa8bfaf23be5b9fec64958c42851.

* Revert "Update PromptArguments.cs"

This reverts commit 5c3e3e8b3da4c64cc1036edfd9fff63c460c9cf7.

* Fix ambiguity

* Fix null SwipeItem Parent in SwipeView (#9743)

- fixes #9738

* Set SwipeItems Parent

* Direct cast bindable object in SwipeView

* Fix null SwipeItem Parent in SwipeView (#9743)

- fixes #9738

* Set SwipeItems Parent

* Direct cast bindable object in SwipeView

* [C] Avoid NRE in Fles.OnMeasure (#9891)  fixes #9340

- fixes #9340

We don't have a repro project for that issue, but the fix has been tested by the OP, and it fixes the issue

* Fixed wrong StateTriggersExperimental registration (#9889)

* Create wearable_app_requirement.md

* Update templates from X.F

* Fixed the ambiguous issue

4 years agoSynchronize the XSF with Xamarin.Form (#159)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 23 Mar 2020 04:54:59 +0000 (13:54 +0900)]
Synchronize the XSF with Xamarin.Form (#159)

* [Core] Removed null values from the DisplayActionSheet  (#8445) fixes #4744

* Fixed IndicatorView issue resetting the template when data updates (#8709)

* Fixed IndicatorView template resets when data updates

* Fixed failing UITests

* Undo unnecessary changes in the ControlGallery Android csproj

* Removed unnecessary changes in the ControlGallery Android csproj

* Fix wrong ControlGallery Android csproj

* [Tizen] Implement DisplayPromptAsync for Tizen (#8820) fixes #6713

* Implement DisplayPromptAsync in Tizen

* Update Xamarin.Forms.Platform.Tizen/Platform.cs

Fix BackButtonPressed handler

Co-Authored-By: campersau <buchholz.bastian@googlemail.com>
* Queue DisplayPromptAsync for display after pages loads; fixes #8526 (#8788) fixes #8526

* Custom/Embedded fonts (#6013)

* Android fonts now work with shorter notation

"Lobster-Regular.ttf#Lobster-Regular" now works as just "Lobster-Regular"

* iOS Sample page now loads

* UWP now uses simple font names

* Fixed UWP Font loading!

UWP now supports `PTM55FT#PTMono`

* Added UWP Font Caching!

* iOS now supports Custom fonts like `PTM55FT#PTMono`

* Android now supports all the font formats!

* Add new styles to show how they can work

* Android fonts now work with shorter notation

"Lobster-Regular.ttf#Lobster-Regular" now works as just "Lobster-Regular"

* iOS Sample page now loads

* UWP now uses simple font names

* Fixed UWP Font loading!

UWP now supports `PTM55FT#PTMono`

* Added UWP Font Caching!

* iOS now supports Custom fonts like `PTM55FT#PTMono`

* Android now supports all the font formats!

* Add new styles to show how they can work

* Fixed iOS Font Loading

* iOS now can load embedded resources!

* Android can now load from embedded resources

* Moved FontFile parsing to Xamarin.Forms.Core, Added Unit Tests!

* IEmeddedFont now returns the path on success.

* removed unused code

* Embedded fonts now load in UWP

* Fixed crash in fonts

* changed the String.Contains to a string, instead of char to make VS windows happy

* netStandard1.0 won't let me have nice things

* grammer fixes :D

* smidgen of cleanup

* fix merge issues

* Update Registrar.cs

* [Tizen] Creates the GestureDetector on demand (#8874)

* [Xaml] Throw XamlParseException in MarkupExpressionParser.GetNextPiece (#8447)

* [XamlC] Support variance (#8535)

* [Xaml[C]] Accept prefixed property names of markup extensions (#5186)

* [XamlC] Dispose assembly resolver constructed by XamlCTask (#8397)

An assembly resolver holds opened files, and leaks if it is not disposed.
It is problematic if you run Xamarin.Forms.Xaml.UnitTests on Linux with
the default configuration because it has a small limit for the number of
opened files. It may cause stability issues also on other platforms,
depending on the situation.

* Typo Fix and change to nameof (#8942) fixes #8935

* Improve resiliency of Shell when removing/adding items (#9023)

* Add IsVisible property to ShellItem/ShellSection/ShellContent

* - fix formatting

* - simplify interface

* - fix local deploy

* -fixes

* - work

* - check visibility after parent is set

* - fix formatting

* - embedding fix

* - menu item not getting added to Visible Items
- Process Items change on Visible Items

* - fix incorrect cast

* - fix casting

* - fix route testing to not invlude not visible

* - unsubscribe

* - set shell variable

* - remove IsVisible from BaseShellItem

* - fix failing unit test

* [Xaml] Create value from positional argument text of markup extension (#8980)

The behavior introduced with this change conforms to the description of
[MS-XAML-2009] page 80 and 81.
fixes #6905

* [C,X] Resolve indexers on base class (#8968)

- fixes #8936

this was regressed by #7836

* Resolve issues with Shell ToolbarItems not reacting to CanExecute Changes (#8889) fixes #8741 fixes #8327

* Fixing various toolbar item display issues

* - fix csproj file

* - added UI test

* - fix possible breaks with Navigation Page

* Fix for 8741: Assert that ToolbarItem is grayed-out (PR 8889) (#8892)

* Assert that ToolbarItem is grayed-out

* Check alpha values on Android

* - fix toolbar item ordering

* - toolbar tracker improvements

* - remove whitespace

* - just use an array from the get go

* - primary

Co-authored-by: Brian Runck <brunck@users.noreply.github.com>
* [Tizen] Fix back button issue in Shell navigation (#8982)

* [Tizen] Fix back button issue in Shell navigation

* [Tizen] Add navigation/back button click effect

* Enhance LightweightPlatform (#8873)

* [Tizen] Gif Animation Support (#9068) fixes #1704

* [core] perf improvements for Assembly attributes reflection (#8938)

When profiling startup, I started looking into the number of calls
retrieving custom attributes from assemblies:

    Method call summary
    Total(ms) Self(ms)      Calls Method name
          24        0         301 System.Reflection.RuntimeAssembly:GetCustomAttributes (System.Type,bool)

I saw a pattern such as:

    object[] attributes = assembly.GetCustomAttributes(attrType, true);
    var handlerAttributes = new HandlerAttribute[attributes.Length];
    Array.Copy(attributes, handlerAttributes, attributes.Length);
    RegisterRenderers(handlerAttributes);

We can avoid the allocation and copying of the array completely here.
We can simply cast `attributes` to `HandlerAttribute[]`.

The other thing I saw was:

    string resolutionName = assembly.FullName;
    var resolutionNameAttribute = (ResolutionGroupNameAttribute)assembly.GetCustomAttribute(typeof(ResolutionGroupNameAttribute));
    if (resolutionNameAttribute != null)
        resolutionName = resolutionNameAttribute.ShortName;

This was happening even if the assembly had no `[assembly:Effect]`.

I reordered the code to not look for `[assembly: ResolutionGroupName]`
unless there was an `[assembly: Export]`.

This reduced the calls to `GetCustomAttributes` to:

    Method call summary
    Total(ms) Self(ms)      Calls Method name
          21        0         251 System.Reflection.RuntimeAssembly:GetCustomAttributes (System.Type,bool)

I also did a small amount of refactoring:

* `ReflectionExtensions.GetCustomAttributesSafe` had a variable
  declaration that could be removed.
* `ReflectionExtensions.GetCustomAttributesSafe` was a nice wrapper to
  avoid `#if` and also has a `try-catch` for the previewer. I used
  this in places where there was duplicated code.

~~ Results ~~

    Before:
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    12-17 13:08:57.119  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +588ms
    12-17 13:09:00.852  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +583ms
    12-17 13:09:04.602  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +573ms
    12-17 13:09:08.388  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +581ms
    12-17 13:09:12.137  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +576ms
    12-17 13:09:15.887  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +583ms
    12-17 13:09:19.621  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +578ms
    12-17 13:09:23.388  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +588ms
    12-17 13:09:27.123  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +587ms
    12-17 13:09:30.892  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +571ms
    Average(ms): 580.8
    Std Err(ms): 1.94250697124446
    Std Dev(ms): 6.1427463998877

    After:
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    Launching: com.xamarin.forms.helloforms
    12-17 13:10:29.762  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +579ms
    12-17 13:10:33.514  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +572ms
    12-17 13:10:37.263  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +564ms
    12-17 13:10:40.996  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +572ms
    12-17 13:10:44.748  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +569ms
    12-17 13:10:48.467  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +573ms
    12-17 13:10:52.231  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +577ms
    12-17 13:10:55.981  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +558ms
    12-17 13:10:59.765  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +574ms
    12-17 13:11:03.499  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +569ms
    Average(ms): 570.7
    Std Err(ms): 1.94393644157644
    Std Dev(ms): 6.1472667819844

I think this saves ~10ms on startup on Android, but this should help
all platforms.

These numbers were taken running on a Pixel 3 XL, a Blank
Xamarin.Forms app template using Xamarin.Forms/master.

Using: https://github.com/xamarin/Xamarin.Forms/pull/8867

* [core] improve Color & Clamp performance (#8884)

* [core] improve Color & Clamp performance

When profiling startup of a HelloForms app on a Pixel 3 XL, I noticed:

    Total(ms) Self(ms)      Calls Method name
            3        1        572 Xamarin.Forms.Internals.NumericExtensions:Clamp (double,double,double)

This method is called multiple times for every `Color` created and
~142 are created on startup. This is why it shows up 572 times for an
app with a single `Label`.

I found there is a `Math.Clamp` implementation in corefx:

https://github.com/dotnet/runtime/blob/6662a0f2fd05298af1f9b1b020fa526595f336f7/src/libraries/System.Private.CoreLib/src/System/Math.cs#L224-L225

The only difference is this version can throw an exception, so we
could return the incoming value instead. That would be bad to change!

If I rework `NumericExtensions` to use corefx's implementation it is a
bit faster, I did a BenchmarkDotNet comparison running with Mono on
macOS:

     Method |      Mean |    Error |   StdDev |
    ------- |----------:|---------:|---------:|
     Clamp2 |  53.89 ns | 0.668 ns | 0.522 ns |
     Clamp1 |  61.84 ns | 1.270 ns | 2.289 ns |
     Color2 | 112.50 ns | 2.643 ns | 3.705 ns |
     Color1 | 129.03 ns | 2.603 ns | 4.760 ns |

Maybe every `Color` is ~13% faster?

Code for the benchmark is here:

https://github.com/jonathanpeppers/Benchmarks/blob/clamp/Benchmarks/Clamp.cs

Additionally, I reworked the list of default `Color` fields so that
they call a new private constructor that does less math and avoids
`Clamp` completely. We should still keep the original change, as it
would help any cases where the `Color.To*` methods would be used in
apps.

I seem to be able to see a small difference in a Release build running
on a Pixel 3 XL:

    Before:
    12-18 13:04:27.154  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +606ms
    12-18 13:04:30.851  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +589ms
    12-18 13:04:34.601  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +587ms
    12-18 13:04:38.352  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +575ms
    12-18 13:04:42.084  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +583ms
    12-18 13:04:45.802  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +573ms
    12-18 13:04:49.566  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +592ms
    12-18 13:04:53.284  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +583ms
    12-18 13:04:57.015  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +594ms
    12-18 13:05:00.715  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +581ms
    Average(ms): 586.3
    Std Err(ms): 3.05886689260364
    Std Dev(ms): 9.67298643990917

    After:
    12-18 13:08:16.677  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +593ms
    12-18 13:08:20.377  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +577ms
    12-18 13:08:24.107  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +583ms
    12-18 13:08:27.827  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +576ms
    12-18 13:08:31.574  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +586ms
    12-18 13:08:35.324  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +584ms
    12-18 13:08:39.056  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +587ms
    12-18 13:08:42.773  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +586ms
    12-18 13:08:46.523  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +584ms
    12-18 13:08:50.256  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +587ms
    Average(ms): 584.3
    Std Err(ms): 1.56382721409865
    Std Dev(ms): 4.94525586350753

This change seems low risk and would help all platforms.

* One last tweak byte -> int

Doing some reading: https://stackoverflow.com/a/43158214/132442

It seems `int` performs even better than `byte`. I did another test
run with just this change:

    Before:
    12-18 13:37:23.347  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +576ms
    12-18 13:37:27.079  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +575ms
    12-18 13:37:30.828  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +581ms
    12-18 13:37:34.578  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +588ms
    12-18 13:37:38.296  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +572ms
    12-18 13:37:42.046  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +579ms
    12-18 13:37:45.781  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +576ms
    12-18 13:37:49.526  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +586ms
    12-18 13:37:53.276  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +586ms
    12-18 13:37:57.009  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +582ms
    Average(ms): 580.1
    Std Err(ms): 1.70912583243924
    Std Dev(ms): 5.40473043833928

    After:
    12-18 13:35:38.745  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +572ms
    12-18 13:35:42.459  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +572ms
    12-18 13:35:46.209  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +581ms
    12-18 13:35:49.974  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +581ms
    12-18 13:35:53.724  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +574ms
    12-18 13:35:57.474  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +580ms
    12-18 13:36:01.207  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +573ms
    12-18 13:36:04.957  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +568ms
    12-18 13:36:08.707  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +566ms
    12-18 13:36:12.407  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +565ms
    Average(ms): 573.2
    Std Err(ms): 1.87853370714738
    Std Dev(ms): 5.94044517598546

* Fixed the conflict of Registrar.cs

* Detect when pages are popped from clicking on tab (#9086)

* Fixed the conflict shell

* send remove events (#9124)

* [Tizen] Shell: FlyoutBackgroundImage, FlyoutBackgroundImageAspect (#8905)

* [Tizen] Add BackgroundImage properties in NavigationView

* [Tizen] Update INavigationView interface

* [Tizen] Remove unused attribute and namespace

* [Tizen] Update MaterialNavigationView
fixes #4410

* Added IconColor property for managing navigation icon color (#5185)

Co-authored-by: Samantha Houts <samhouts@users.noreply.github.com>
* [android/ios] improve perf when not using Application.Properties (#8887)

* [android/ios] improve perf when not using Application.Properties

When profiling startup, I was seeing things like:

    Method call summary
    Total(ms) Self(ms)      Calls Method name
          52        0          3 System.IO.IsolatedStorage.IsolatedStorageFile:GetUserStoreForApplication ()
          52        0          3 (wrapper remoting-invoke-with-check) System.IO.IsolatedStorage.IsolatedStorageFile:PostInit ()
          51        0          3 System.IO.IsolatedStorage.IsolatedStorageFile:PostInit ()
          51        0          2 (wrapper remoting-invoke-with-check) System.IO.IsolatedStorage.IsolatedStorageFile:FileExists (string)
          51        0          2 System.IO.IsolatedStorage.IsolatedStorageFile:FileExists (string)
          49        0          4 System.IO.IsolatedStorage.IsolatedStorageFile:IsPathInStorage (string)

This app has no `Properties` at all, but it seems to still be doing
the file I/O for it.

I found that a file was being written that contain a serialized empty
dictionary:

    > adb shell run-as com.xamarin.forms.helloforms cat /data/user/0/com.xamarin.forms.helloforms/files/.config/.isolated-storage/PropertyStore.forms
    @▲ArrayOfKeyValueOfstringanyTyp9http://schemas.microsoft.com/2003/10/Serialization/Arrays       ☺i)http://www.w3.org/2001/XMLSchema-instance☺

Any subsequent startup would parse this file.

Two changes will help here:

1) For writes, use a single instance of:

    using (var store = IsolatedStorageFile.GetUserStoreForApplication())

It appears this call is expensive.

2) On writes, we don't need to write a file at all if the `Properties`
   dictionary is empty and no file is on disk. This way apps that
   don't use `Properties` at all won't load a file with an empty
   dictionary.

~~ Results ~~

Using a Release build of the Blank Forms app template on a Pixel 3 XL:

    Before:
    12-13 14:01:42.826  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +606ms
    12-13 14:01:46.541  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +588ms
    12-13 14:01:50.325  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +597ms
    12-13 14:01:54.088  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +600ms
    12-13 14:01:57.855  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +579ms
    12-13 14:02:01.619  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +594ms
    12-13 14:02:05.371  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +605ms
    12-13 14:02:09.106  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +597ms
    12-13 14:02:12.869  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +600ms
    12-13 14:02:16.635  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +601ms
    Average(ms): 596.7
    Std Err(ms): 2.56493448042808
    Std Dev(ms): 8.11103500725332
    After:
    12-13 13:59:46.260  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +600ms
    12-13 13:59:49.993  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +579ms
    12-13 13:59:53.739  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +587ms
    12-13 13:59:57.506  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +592ms
    12-13 14:00:01.255  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +586ms
    12-13 14:00:05.007  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +580ms
    12-13 14:00:08.841  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +581ms
    12-13 14:00:12.587  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +591ms
    12-13 14:00:16.320  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +585ms
    12-13 14:00:20.052  1490  1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +577ms
    Average(ms): 585.8
    Std Err(ms): 2.23507394856536
    Std Dev(ms): 7.06792441637257

I think this change saves ~10ms on startup for apps that don't use
`Application.Properties` at all.

I made this change for Android & iOS, as they had similar
implementations.

* Moved the properties check earlier

This way it won't even open the Stream on writes when there are no
properties.

* [tizen] include the same optimization

As suggested by @rookiejava:

https://github.com/xamarin/Xamarin.Forms/pull/8887#pullrequestreview-332378887

* [tizen] make implementation match Android exactly

Context: https://github.com/xamarin/Xamarin.Forms/pull/8887#discussion_r359089505

As suggested by @rookiejava, we can make the implementation match
other platforms exactly.

I took the changes as-is, except matched the formatting in Android's
`Deserializer.cs` so the two files are identical except for the
namespace. I also had to use `Internals.Log`.

* Add null check to GetIconColor (#9172)

* [Tizen] Supports Custom/Embedded and System fonts (#9138)

* Update GitInfo.txt

* fix Profile FrameEnd call (#9117)

* Fix SeachBarRenderer CreateNativeControl issue (#8946)

* [Tizen] Supports Custom/Embedded and System fonts

Co-authored-by: Samantha Houts <samhouts@users.noreply.github.com>
Co-authored-by: Shane Neuville <shane94@hotmail.com>
Co-authored-by: Rui Marinho <me@ruimarinho.net>
Co-authored-by: TingtingAn <antingting2009@qq.com>
* [Core] performance improvements around bindings (#9114)

I made most of these changes through the benchmarks here:

https://github.com/jonathanpeppers/Benchmarks/blob/6725a72844c5f18320a31223b6f37abd7b28ece4/Benchmarks/BindingBenchmarks.cs

1. `Clone()` was doing `new Binding()` but then using the property
   setters instead of the ctor parameters. `Clone()` seems to be
   called for `DataTemplate`, `ListView`, etc.

2. `BindingBase.ThrowIfApplied()` is called very frequently, so I
   added `MethodImplOptions.AggressiveInlining`.

3. `BindingBaseExtensions.GetRealizedMode` is called ~3 times per
   binding applied, added `MethodImplOptions.AggressiveInlining`.

4. In `BindingExpression` a `bool isLast` value was always calculated,
   even though it was only sometimes used inside an `if`. It can just
   do this check inside the `if`.

5. `object value = property.DefaultValue;` was defined prior to
   calling `TryGetValue`, which will always overwrite it. I just
   removed the call, since a Roslyn analyzer was showing me this.

6. `BindingExpression` was doing a `string.Split('.')` which always
   allocates a `char[]`. I defined the array as a `static` field
   instead.

7. `BindingExpression.GetPart` used `IEnumerable` and `yield return`.
   In the most common case, this function returned a single item and
   in the rare case two items. I removed this function and a `foreach`
   and moved logic inline within the `ParsePath` method. This avoids
   allocations around `foreach`, when it isn't needed.

These are all small changes, but I was only able to see some
difference after everything came together. If we need to split some of
these up, we can do that.

~~ Results ~~

Benchmarks running on mono/macOS:

    BenchmarkDotNet=v0.11.3, OS=macOS Mojave 10.14.6 (18G95) [Darwin 18.7.0]
    Intel Core i7-6567U CPU 3.30GHz (Skylake), 1 CPU, 4 logical and 2 physical cores
      [Host]     : Mono 6.6.0.155 (2019-08/296a9afdb24 Thu), 64bit
      DefaultJob : Mono 6.6.0.155 (2019-08/296a9afdb24 Thu), 64bit
             Method |        Mean |      Error |     StdDev |      Median |
    --------------- |------------:|-----------:|-----------:|------------:|
        CtorSingle2 |    355.9 ns |   2.600 ns |   2.432 ns |    356.1 ns |
        CtorSingle1 |    447.0 ns |  28.825 ns |  29.601 ns |    432.4 ns |
      CtorMultiple2 |  1,316.6 ns |   7.092 ns |   6.287 ns |  1,316.6 ns |
      CtorMultiple1 |  1,611.0 ns |  77.914 ns | 109.225 ns |  1,560.9 ns |
             Clone2 |  2,670.6 ns |  38.075 ns |  33.753 ns |  2,655.7 ns |
             Clone1 |  3,154.3 ns |  15.010 ns |  14.040 ns |  3,151.7 ns |
       ApplySingle2 |  8,065.5 ns |  87.537 ns |  77.599 ns |  8,071.3 ns |
       ApplySingle1 |  8,555.2 ns | 183.373 ns | 508.126 ns |  8,268.9 ns |
     ApplyMultiple2 | 28,933.1 ns | 252.589 ns | 236.272 ns | 28,937.1 ns |
     ApplyMultiple1 | 29,388.9 ns | 269.263 ns | 251.868 ns | 29,296.0 ns |

This appears to save 0.5-1ms per binding applied. It is also somewhat
concerning that this shows a complex binding takes ~30ms on mono? I
will look into that further.

Benchmarks running on Windows/.NET framework, allow us to see the
memory usage as well (memory usage not implemented in BDN on mono):

    BenchmarkDotNet=v0.11.3, OS=Windows 10.0.18362
    Intel Core i9-9900K CPU 3.60GHz, 1 CPU, 16 logical and 8 physical cores
      [Host]     : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.8.4075.0
      DefaultJob : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.8.4075.0
             Method |       Mean |      Error |     StdDev | Allocated Memory/Op |
    --------------- |-----------:|-----------:|-----------:|--------------------:|
        CtorSingle2 |   122.6 ns |  0.5047 ns |  0.4721 ns |               369 B |
        CtorSingle1 |   156.3 ns |  0.5229 ns |  0.4636 ns |               421 B |
      CtorMultiple2 |   337.7 ns |  2.5286 ns |  2.3652 ns |               857 B |
      CtorMultiple1 |   435.4 ns |  1.0472 ns |  0.9796 ns |              1017 B |
             Clone2 |   667.0 ns |  2.5739 ns |  2.0095 ns |              1715 B |
             Clone1 |   890.6 ns |  9.1459 ns |  8.5551 ns |              2035 B |
       ApplySingle2 | 1,512.4 ns |  9.0686 ns |  7.0802 ns |               521 B |
       ApplySingle1 | 1,655.3 ns | 31.1960 ns | 35.9253 ns |               573 B |
     ApplyMultiple2 | 4,501.1 ns | 21.8014 ns | 20.3930 ns |              1394 B |
     ApplyMultiple1 | 4,510.7 ns | 25.4709 ns | 22.5793 ns |              1554 B |

This looks like it saves ~160 bytes of allocations per binding applied.

I also tested the Blank Forms app template after adding 100 `Label`
with a single binding:

    Before:
    01-13 16:23:09.406  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +746ms
    01-13 16:23:13.103  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +716ms
    01-13 16:23:16.888  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +732ms
    01-13 16:23:20.656  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +728ms
    01-13 16:23:24.390  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +726ms
    01-13 16:23:28.192  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +723ms
    01-13 16:23:31.910  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +725ms
    01-13 16:23:35.660  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +726ms
    01-13 16:23:39.410  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +728ms
    01-13 16:23:43.126  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +724ms
    Average(ms): 727.4
    Std Err(ms): 2.44585817704589
    Std Dev(ms): 7.73448267321236

    After:
    01-13 16:26:21.557  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +732ms
    01-13 16:26:25.294  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +716ms
    01-13 16:26:29.042  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +736ms
    01-13 16:26:32.760  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +721ms
    01-13 16:26:36.490  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +722ms
    01-13 16:26:40.223  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +722ms
    01-13 16:26:43.957  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +724ms
    01-13 16:26:47.726  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +718ms
    01-13 16:26:51.476  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +722ms
    01-13 16:26:55.224  1473  1503 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +724ms
    Average(ms): 723.7
    Std Err(ms): 1.90933379888262
    Std Dev(ms): 6.0378436180109

In this scenario the changes seems to save ~3.7ms to overall startup.
The code for this project is here:

https://github.com/jonathanpeppers/Xamarin.Forms/commit/a319b6709894379b5d08703f80238e5ef5a92ba0

I timed a Release build running on a Pixel 3 XL.

* Fixed the rounding issue when the stepper value is incremented. (#7383)

* Fixed the rounding issue when the stepper value is incremented and the increment value is small like say 0.5 per step. This is due to Double being used as the value so when it's unboxed from the binding object precision is lost.

* Updated so that it's not using Math.Round as this will limit the number of decimal places in code, this version will use an internal counter to track the number of clicks the user makes and calculate a clean value using the counter times the increment.  Tests updated as well to test for stepping away from and back to zero...

* fixed issue with tests failing which was caused by the use of (int) causing a rounding down error...

* Update Xamarin.Forms.Core/Stepper.cs

Co-Authored-By: Gerald Versluis <github@geraldversluis.nl>
* Updated to use nameof() instead of strings in teh creation of the new BindableProperties...

* Changed the Bindable StepperPositionProperty from being public to private so that there is not an API change with this PR as suggested by Sam Houts.Once this PR is accepted it may be an idea to revert this change so that the Positon Property can be controled and used as it's an int saves the need to work with doubles for calculating the position...

Co-authored-by: Samantha Houts <samhouts@users.noreply.github.com>
Co-authored-by: Gerald Versluis <github@geraldversluis.nl>
fixes #5168

* Fixed the build issue

* Avoid NRE removing WeakReferences (and remove null ones) (#9195) fixes #9183

* [CSS] reapply Stylesheet on StyleClass changes (#9157)

- fixes #2678

* [HR] complement the sourceinfo with assemblyname (#9294)

4 years agoFix XamlParseException (PopupEntry not found) (#156)
안주원/Common Platform Lab(SR)/Principal Engineer/삼성전자 [Thu, 19 Mar 2020 09:45:31 +0000 (18:45 +0900)]
Fix XamlParseException (PopupEntry not found) (#156)

4 years agoFixed to use ElmSharp preloaded window in Forms preload method (#155)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 19 Mar 2020 04:03:47 +0000 (13:03 +0900)]
Fixed to use ElmSharp preloaded window in Forms preload method (#155)

* Fixed to use ElmSharp preloaded window in Forms preload method

* Fixed local variables name

4 years agoWrite the temporary spec file (#154)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 18 Mar 2020 12:09:10 +0000 (21:09 +0900)]
Write the temporary spec file (#154)

4 years ago[XStopWatch] Optimized sample app (#153)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 18 Mar 2020 08:17:56 +0000 (17:17 +0900)]
[XStopWatch] Optimized sample app (#153)

* Fixed to 1 page
* Fixed to load image sync
* Changed CircleProgressBarSurfaceItem BackgroundColor to transparent

4 years agoRevert "Remove Controls" (#152)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 18 Mar 2020 07:25:18 +0000 (16:25 +0900)]
Revert "Remove Controls" (#152)

* Revert "Remove the TargetIdiom and Profile (#137)"

This reverts commit 7461c01c17e3bad6edefa4f904f33547cfee0141.

* Revert "Remove MasterDetialPage (#136)"

This reverts commit 810091904c2491b6c3b7f0610aacd71eee4c72a8.

* Revert "Remove the unused code in NavigationPage (#134)"

This reverts commit 2c3e047eafc060585233a78a0a360d8b4e0d9a2b.

* Revert "Remove SearchBar (#131)"

This reverts commit 4044c3dc779c3c2532b7b7375223f6aa841cf5ff.

* Revert "Remove Picker,DatePicker,TimePicker (#130)"

This reverts commit 9ac5e590b496e33a3fa70c4816e085d1d3686d30.

* Revert "Remove TabbedPage (#129)"

This reverts commit 1ee705f6fef0623d2fa71c564d59806893e37d77.

* Revert "Remove CheckBox (#125)"

This reverts commit 08f37db3a156e3cd15adcd50a7ee0eb160e7e9d3.

* Revert "Remove the unused properties (#121)"

This reverts commit 49cac3c31f396932b4066ebb1338d74edd0d449e.

4 years agoChanged the signature of Preload method for Forms (#150)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 18 Mar 2020 04:38:35 +0000 (13:38 +0900)]
Changed the signature of Preload method for Forms (#150)

4 years agoFixed the crash issue (#149)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 9 Mar 2020 04:08:01 +0000 (13:08 +0900)]
Fixed the crash issue (#149)

4 years agoPrecreate the CircleListView (#148)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 17 Feb 2020 06:55:19 +0000 (15:55 +0900)]
Precreate the CircleListView (#148)

4 years agoAdd HeartRateMonitor app (#147)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 14 Feb 2020 02:24:54 +0000 (11:24 +0900)]
Add HeartRateMonitor app (#147)

4 years agoAdd the Calculator App (#145)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 6 Feb 2020 08:06:56 +0000 (17:06 +0900)]
Add the Calculator App (#145)

* Add the Calculator App

* Modify sln file

4 years agoAdd Weather Sample app and remove unnecessary codes in Voicememo app (#146)
안주원/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 6 Feb 2020 08:00:25 +0000 (17:00 +0900)]
Add Weather Sample app and remove unnecessary codes in Voicememo app (#146)

4 years agoAdd the NativeCirclePage and factory for native object (#144)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 31 Jan 2020 05:37:10 +0000 (14:37 +0900)]
Add the NativeCirclePage and factory for native object (#144)

4 years agoAdd Voicememo app (#142)
안주원/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 20 Jan 2020 04:38:25 +0000 (13:38 +0900)]
Add Voicememo app (#142)

4 years ago[Tizen] Load image synchronously (#140)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 16 Jan 2020 02:07:23 +0000 (11:07 +0900)]
[Tizen] Load image synchronously (#140)

* [Tizen] Load image synchronously (#9025)

* [Tizen] Load image synchronously

4 years ago[Tizen] Creates the GestureDetector on demand (#141)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 16 Jan 2020 01:34:45 +0000 (10:34 +0900)]
[Tizen] Creates the GestureDetector on demand (#141)

4 years agoAdd Alarm app (#139)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 15 Jan 2020 05:32:28 +0000 (14:32 +0900)]
Add Alarm app (#139)

4 years agoChange assembly name (#138)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 15 Jan 2020 04:21:07 +0000 (13:21 +0900)]
Change assembly name (#138)

4 years agoRemove the TargetIdiom and Profile (#137)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 14 Jan 2020 08:16:17 +0000 (17:16 +0900)]
Remove the TargetIdiom and Profile (#137)

4 years agoAdd the factory for native object (#133)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 14 Jan 2020 06:56:00 +0000 (15:56 +0900)]
Add the factory for native object (#133)

* Add the factory for native object

* Call the Hide method

4 years agoRemove MasterDetialPage (#136)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 14 Jan 2020 06:17:03 +0000 (15:17 +0900)]
Remove MasterDetialPage (#136)

4 years agoRemove the unused code in NavigationPage (#134)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 14 Jan 2020 05:26:44 +0000 (14:26 +0900)]
Remove the unused code in NavigationPage (#134)

4 years agoRemove SearchBar (#131)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 10 Jan 2020 06:31:00 +0000 (15:31 +0900)]
Remove SearchBar (#131)

4 years agoDelete unnecessary directories for XSF (#132)
안주원/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 10 Jan 2020 00:06:24 +0000 (09:06 +0900)]
Delete unnecessary directories for XSF (#132)

4 years agoRemove Picker,DatePicker,TimePicker (#130)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 9 Jan 2020 05:42:39 +0000 (14:42 +0900)]
Remove Picker,DatePicker,TimePicker (#130)

4 years agoRemove TabbedPage (#129)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 9 Jan 2020 01:10:00 +0000 (10:10 +0900)]
Remove TabbedPage (#129)

4 years agorestruct project directory (#128)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 8 Jan 2020 10:15:50 +0000 (19:15 +0900)]
restruct project directory (#128)

4 years agoRemove other platform specific in Xamarin.Forms.Core (#126)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 8 Jan 2020 06:52:56 +0000 (15:52 +0900)]
Remove other platform specific in Xamarin.Forms.Core (#126)

4 years agoRemove CheckBox (#125)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 8 Jan 2020 06:31:41 +0000 (15:31 +0900)]
Remove CheckBox (#125)

4 years agoRemove reflection code for precreate Window (#123)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 7 Jan 2020 05:36:39 +0000 (14:36 +0900)]
Remove reflection code for precreate Window (#123)

- remove reflecton code for ElmSharp.PreloadedWindow, only use Xamarin PreloadedWindow.
- add locale system setting property get() and LocaleLanguageChanged  event handler for
reducing launching time.

4 years agoRemove GitInfo on build (#122)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 7 Jan 2020 05:13:51 +0000 (14:13 +0900)]
Remove GitInfo on build (#122)

4 years agoChange Label instance to type in font size for the little performance
pius.lee [Tue, 7 Jan 2020 02:36:25 +0000 (11:36 +0900)]
Change Label instance to type in font size for the little performance

4 years agoRemove the unused properties (#121)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 3 Jan 2020 04:21:22 +0000 (13:21 +0900)]
Remove the unused properties (#121)

* Remove unused property

* Remove the comment

* Change a file mode for SearchHandler

* Apply for the comment

4 years agoAdd Optional feature in InitializeOption (#120)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 27 Dec 2019 08:04:14 +0000 (17:04 +0900)]
Add Optional feature in InitializeOption (#120)

* Add Optional feature in InitializeOption

- add Optional feature of Shell/Style/Visual in InitializeOption class.
- add more static constructor type
- add OptionalFeatureValues class in TizenSpeciffic

* Fix CustomRenderer not applied issue

4 years agoAdd Forms.Init and static Ctors to Forms.Preload (#119)
이비오/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 20 Dec 2019 06:50:21 +0000 (15:50 +0900)]
Add Forms.Init and static Ctors to Forms.Preload (#119)

create new FormsApplication subclass for linked to lazy lifecycle.
now user can use Interface for lifecycle to implement application
lifecycle.

4 years agoMerge remote-tracking branch 'Xamarin.Forms/master'
Jeongkyun [Thu, 12 Dec 2019 10:26:17 +0000 (19:26 +0900)]
Merge remote-tracking branch 'Xamarin.Forms/master'

4 years ago[Tizen] Provides PlatformType on Init (#338)
허강호/Common Platform Lab(SR)/Principal Engineer/삼성전자 [Wed, 11 Dec 2019 07:36:50 +0000 (16:36 +0900)]
[Tizen] Provides PlatformType on Init (#338)

* [Tizen] Provides PlatformType on Init

* Update Xamarin.Forms.Platform.Tizen/Forms.cs

Co-Authored-By: kangho-hur <kangho.hur@samsung.com>
4 years agoMerge branch '4.4.0'
Samantha Houts [Mon, 9 Dec 2019 20:56:54 +0000 (12:56 -0800)]
Merge branch '4.4.0'

4 years agoAdded Converter to simplify the use of Layouts in the CarouselView (#8665)
Javier Suárez Ruiz [Mon, 9 Dec 2019 19:57:38 +0000 (20:57 +0100)]
Added Converter to simplify the use of Layouts in the CarouselView (#8665)

fixes #7813

4 years agoRemove unnecessary Lazy loading (#8798)
Jay Cho [Mon, 9 Dec 2019 15:17:26 +0000 (00:17 +0900)]
Remove unnecessary Lazy loading (#8798)

4 years agoMerge branch '4.4.0'
Rui Marinho [Mon, 9 Dec 2019 10:55:33 +0000 (10:55 +0000)]
Merge branch '4.4.0'

4 years agoMerge branch '4.3.0' into 4.4.0
Rui Marinho [Mon, 9 Dec 2019 10:54:24 +0000 (10:54 +0000)]
Merge branch '4.3.0' into 4.4.0

4 years ago[Tizen] Enhances the Static Registrar (#8775)
Kangho Hur [Fri, 6 Dec 2019 19:58:53 +0000 (11:58 -0800)]
[Tizen] Enhances the Static Registrar (#8775)

4 years agoPrevent ObjectDisposed exception when updating binding for item ejected from recycler...
E.Z. Hart [Fri, 6 Dec 2019 19:33:44 +0000 (12:33 -0700)]
Prevent ObjectDisposed exception when updating binding for item ejected from recycler pool; (#8768) fixes #8435

4 years agoPlatform specific on iOS for setting CanBecomeFirstResponder (#8740) fixes #2136
Shane Neuville [Fri, 6 Dec 2019 19:32:02 +0000 (12:32 -0700)]
Platform specific on iOS for setting CanBecomeFirstResponder (#8740)  fixes #2136

* add ability for visual elements to become first responder

* cleanup page renderer

* added sample code

* Revert "cleanup page renderer"

This reverts commit 7429fd1debf68776a167aef117912c7a38d412e9.

* editor button becomes first responder

* remove extra declaration

* add mobile tag

* - add instructions to UI Test

4 years agoPut SwipeView behind experimental flag (#8786)
Shane Neuville [Fri, 6 Dec 2019 19:00:35 +0000 (12:00 -0700)]
Put SwipeView behind experimental flag (#8786)

* Put SwipeView behind experimental flag

* Update Xamarin.Forms.ControlGallery.Android/FormsAppCompatActivity.cs

4 years agoFixed 5749 - Issue with disabling horizontal scroll on Android (#8105)
Durgesh Khandal [Fri, 6 Dec 2019 17:23:13 +0000 (22:53 +0530)]
Fixed 5749 - Issue with disabling horizontal scroll on Android (#8105)

fixes #5749

4 years ago[iOS] CollectionView crashes on iOS 12 for repeated adds (#8761)
Javier Suárez Ruiz [Fri, 6 Dec 2019 16:58:44 +0000 (17:58 +0100)]
[iOS] CollectionView crashes on iOS 12 for repeated adds (#8761)

* Added repro sample

* Added instructions to the test

4 years agoMerge branch '4.4.0'
Samantha Houts [Fri, 6 Dec 2019 04:21:52 +0000 (20:21 -0800)]
Merge branch '4.4.0'

4 years agoMerge branch '4.3.0' into 4.4.0
Samantha Houts [Fri, 6 Dec 2019 04:21:20 +0000 (20:21 -0800)]
Merge branch '4.3.0' into 4.4.0

4 years agoAdd VSM Setter TargetName (#8144)
Gerald Versluis [Fri, 6 Dec 2019 04:10:08 +0000 (05:10 +0100)]
Add VSM Setter TargetName (#8144)

* Added the ability to Target a bindable object for Setters

Include unit and xaml unit tests
corrected naming to prevent issues
Updating xamlc is still outstanding

* Resolve xamlc compiler with new Target property

* Added ability to find target element via Name

* Remove Target for simplicity

* Additional target type for flexibility while not introducing complexity

* [Core] Remove inline comment

* Added gallery page

* Last bits

* Fixed unit tests

* Update Setter.cs
fixes #4924
closes #5034
closes #5622

4 years ago[Android] Center elements in CarouselView (#8733)
Javier Suárez Ruiz [Fri, 6 Dec 2019 04:08:09 +0000 (05:08 +0100)]
[Android] Center elements in CarouselView (#8733)

* Added repro sample and fix on Android

* Added changes to centered all the items from the CarouselView on Android

* Fixed build error in the added Issue8525

* Renamed issue file

* Fixed build error

* Renamed Issue8525 to Issue8636

* Fixed issues centering carousel items using PeekAreaInsets on Android
fixes #8225
fixes #8638

4 years ago[X] send tree changed events on parenting (#8760)
Stephane Delcroix [Fri, 6 Dec 2019 04:04:49 +0000 (05:04 +0100)]
[X] send tree changed events on parenting (#8760)

so thye will be triggered in all cases

4 years agoMerge branch '4.4.0'
Shane Neuville [Thu, 5 Dec 2019 23:03:41 +0000 (16:03 -0700)]
Merge branch '4.4.0'

4 years agoSdk Extras netcore 2 fix (#8771)
Shane Neuville [Thu, 5 Dec 2019 22:07:26 +0000 (15:07 -0700)]
Sdk Extras netcore 2 fix (#8771)

4 years agoMerge branch '4.3.0' into 4.4.0
Shane Neuville [Thu, 5 Dec 2019 20:37:01 +0000 (13:37 -0700)]
Merge branch '4.3.0' into 4.4.0

# Conflicts:
# Xamarin.Forms.Platform.Android/Xamarin.Forms.Platform.Android.csproj

4 years agoRevert back to VS 2017 (#8770)
Shane Neuville [Thu, 5 Dec 2019 20:35:13 +0000 (13:35 -0700)]
Revert back to VS 2017 (#8770)

4 years agoRebase from 4.3.0 branch
Javier Suárez Ruiz [Thu, 5 Dec 2019 20:32:43 +0000 (21:32 +0100)]
Rebase from 4.3.0 branch

4 years agoFix dynamic heights for iOS Flyout Item Templates (#8531) fixes #8290
Shane Neuville [Thu, 5 Dec 2019 12:00:14 +0000 (05:00 -0700)]
Fix dynamic heights for iOS Flyout Item Templates (#8531) fixes #8290

* Fix dynamic heights for iOS Flyout

* - fix default height used

* Apply suggestions from code review

4 years agoAdd name of key in INameScope.RegisterName ArgumentException (#8702)
Gerald Versluis [Thu, 5 Dec 2019 11:24:56 +0000 (12:24 +0100)]
Add name of key in INameScope.RegisterName ArgumentException (#8702)

- fixes #7540

* Update NameScope.cs

* Update Xamarin.Forms.Core/Internals/NameScope.cs

Co-Authored-By: Stephane Delcroix <stephane@delcroix.org>
4 years agoUwp thread to task fixes (#8639)
Shane Neuville [Wed, 4 Dec 2019 17:39:53 +0000 (10:39 -0700)]
Uwp thread to task fixes (#8639)

* Convert usages of thread in gallery to Task

* - swap thread for task

* - couple more thread to task fixes

* - remove call to start

4 years agoPrevent UWP NullReferenceException when calling SavePropertiesAsync method off the...
Tomáš Ondřej [Wed, 4 Dec 2019 16:56:23 +0000 (17:56 +0100)]
Prevent UWP NullReferenceException when calling SavePropertiesAsync method off the main thread (#8696)

* Fix Issue 8682

* Rename UI test method

Co-Authored-By: Samantha Houts <samhouts@users.noreply.github.com>
* Return FallbackDispatcher with null-coalescing

4 years agofix #5518 | Frame Tap Gesture not working when using Visual="Material" in iOS (#7988)
Ken Nguyen [Wed, 4 Dec 2019 16:52:52 +0000 (23:52 +0700)]
fix #5518 | Frame Tap Gesture not working when using Visual="Material" in iOS (#7988)

* fix #5518

* - small changes to ui tests

* - fix automationid and ui test

* - fix null ref

4 years ago[iOS] Fixes crash in CollectionViews when using DataTemplateSelector as a DataTemplat...
Mario van Zeist [Wed, 4 Dec 2019 12:52:43 +0000 (13:52 +0100)]
[iOS] Fixes crash in CollectionViews when using DataTemplateSelector as a DataTemplate when used in GroupHeaders and or GroupFooters (#8674)

- fixes #8647

* Added repro and partial fix

* Removed some code in Templated cell to prevent an extension method being called twice.
Modified ItemsViewController to call different bind function. (Removed older one)
Added checks for Header/Footer in groupableItemsViewController.
Some code cleanup

* Removed unittest as I could not get it to run Due to missing Provisioningprofile

* Revert unintended change

* Cleanup some code

4 years ago Fix crash on iOS adding items (ObservableCollection) (#7711) fixes #7678
Javier Suárez Ruiz [Wed, 4 Dec 2019 12:44:09 +0000 (13:44 +0100)]
 Fix crash on iOS adding items (ObservableCollection) (#7711) fixes #7678

4 years agoReverse the order of assigning the Current Items on Shell (#8630)
Shane Neuville [Tue, 3 Dec 2019 21:18:03 +0000 (14:18 -0700)]
Reverse the order of assigning the Current Items on Shell (#8630)

* Failing Unit test for #8624

* - Set Current Item from the bottom up

4 years agoRemove private modifier (#8631)
Youssef Victor [Tue, 3 Dec 2019 18:16:34 +0000 (20:16 +0200)]
Remove private modifier (#8631)

* Remove private modifier

* Update SystemParameters2.cs

* Update SystemParameters2.cs

* Update NativeMethods.cs

* Update ImageCell.cs

* Update TextCell.cs

* Update EntryCell.cs

* Update DatePicker.cs

4 years ago[Tizen] Enhancement EntryRenderer (#8686)
Seungkeun Lee [Tue, 3 Dec 2019 10:37:39 +0000 (19:37 +0900)]
[Tizen] Enhancement EntryRenderer (#8686)

* Enhancement EntryRenderer on Tizen

 - Support ClearButtonVisibility
 - Support ReturnType.Next
 - Limitation No support clearButtonVisibility on TV

* Update ClearButton color

* Remove redundant line

* Remove init value on IsTextBlockFoused

4 years ago[Tizen] Add RefreshView for Tizen (#8697)
Seungkeun Lee [Tue, 3 Dec 2019 10:37:19 +0000 (19:37 +0900)]
[Tizen] Add RefreshView for Tizen (#8697)

* Add RefreshViewRenderer in Tizen

* RefreshView support ListView

* Support RefreshView on WebView

* Review updated

* Fix async method naming

* Update to handle ItemsViewRenderer

* Fix Reload window

4 years ago[Android] Add guard and add missing unsubscribe on MasterDetailPageRenderer (#8704)
Kevin Petit [Tue, 3 Dec 2019 10:36:55 +0000 (11:36 +0100)]
[Android] Add guard and add missing unsubscribe on MasterDetailPageRenderer (#8704)

4 years ago[UITests] Update Xamarin.UITests packages (#8725)
Rui Marinho [Tue, 3 Dec 2019 10:36:34 +0000 (10:36 +0000)]
[UITests] Update Xamarin.UITests packages (#8725)

4 years ago[Android] Better ListViewRenderer dispose (#8705)
Kevin Petit [Tue, 3 Dec 2019 09:56:54 +0000 (10:56 +0100)]
[Android] Better ListViewRenderer dispose (#8705)

4 years agoMerge branch '4.4.0'
Samantha Houts [Tue, 3 Dec 2019 02:20:34 +0000 (18:20 -0800)]
Merge branch '4.4.0'

4 years agoMerge branch '4.3.0' into 4.4.0
Samantha Houts [Tue, 3 Dec 2019 02:17:59 +0000 (18:17 -0800)]
Merge branch '4.3.0' into 4.4.0

4 years agoUpdate MacDeviceInfo.cs (#8561) fixes #8559
Gerald Versluis [Tue, 19 Nov 2019 11:05:18 +0000 (12:05 +0100)]
Update MacDeviceInfo.cs (#8561) fixes #8559

4 years agoWPF GTK Set flags (#8446)
VladislavAntonyuk [Mon, 2 Dec 2019 21:09:43 +0000 (23:09 +0200)]
WPF GTK Set flags (#8446)

* WPF GTK Set flags

* Remove collection view flag

4 years agoMerge branch '4.3.0' into 4.4.0
Rui Marinho [Mon, 2 Dec 2019 19:58:50 +0000 (19:58 +0000)]
Merge branch '4.3.0' into 4.4.0

4 years agoMerge branch '4.2.0' into 4.3.0
Rui Marinho [Mon, 2 Dec 2019 19:20:47 +0000 (19:20 +0000)]
Merge branch '4.2.0' into 4.3.0

4 years agoUpdate nuget release number (#8726)
Rui Marinho [Mon, 2 Dec 2019 19:17:09 +0000 (19:17 +0000)]
Update nuget release number (#8726)

4 years agoFix issue 6878 | [Bug] ShellItem.Items.Clear() crashes when the ShellItem has bottom...
Felipe Baltazar [Mon, 2 Dec 2019 17:35:11 +0000 (14:35 -0300)]
Fix issue 6878 | [Bug] ShellItem.Items.Clear() crashes when the ShellItem has bottom tabs (#8215)

* Fix issue 6878

* Code review ♻

4 years ago[Android] Fix crash adding items to the CollectionView (#7670)
Javier Suárez Ruiz [Mon, 2 Dec 2019 16:20:03 +0000 (17:20 +0100)]
[Android] Fix crash adding items to the CollectionView (#7670)

* Fixed 7510 - Crash adding items to the CollectionView on Android

* Removed code used for testing

4 years ago[Bug] FontImageSourse doesn't work on macOS (#8590) fixes #8469
VladislavAntonyuk [Mon, 2 Dec 2019 10:38:05 +0000 (12:38 +0200)]
[Bug] FontImageSourse doesn't work on macOS (#8590) fixes #8469

* [Bug] FontImageSourse doesn't work on macOS

* revert VS changes

* ExportImageSourceHandler

* Revert info.plist

4 years agoMerge branch '4.4.0'
Stephane Delcroix [Mon, 2 Dec 2019 10:25:47 +0000 (11:25 +0100)]
Merge branch '4.4.0'

4 years agoMerge branch '4.3.0' into 4.4.0
Stephane Delcroix [Mon, 2 Dec 2019 10:24:02 +0000 (11:24 +0100)]
Merge branch '4.3.0' into 4.4.0

4 years agoMerge branch '4.2.0' into 4.3.0
Stephane Delcroix [Mon, 2 Dec 2019 10:22:59 +0000 (11:22 +0100)]
Merge branch '4.2.0' into 4.3.0

4 years ago[iOS] Additional Preserve Attributes (#8721)
Shane Neuville [Sun, 1 Dec 2019 18:37:40 +0000 (11:37 -0700)]
[iOS] Additional Preserve Attributes (#8721)

4 years agoIOS Linker fixes inside Xamarin.Forms (#8001)
Shane Neuville [Sun, 1 Dec 2019 01:55:09 +0000 (18:55 -0700)]
IOS Linker fixes inside Xamarin.Forms (#8001)

* Mark iOS platform as linker safe
- remove UIWebView references

* - move linker safe to platform

* Update Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj

* - preserve constructors

* - gallery updates

4 years agoCall the application OnResume, on Android Resume instead of Restart. (#7477) Fixes...
Kevin Petit [Thu, 28 Nov 2019 11:53:41 +0000 (12:53 +0100)]
Call the application OnResume, on Android Resume instead of Restart. (#7477) Fixes #7400

4 years agoAdded defensive code (#8666)
Gerald Versluis [Thu, 28 Nov 2019 10:15:00 +0000 (11:15 +0100)]
Added defensive code (#8666)

4 years agoFix-7167-UWP-ListViewRenderer-ScrollToTop-when-NotifyCollectionChangedAction.Reset...
Brayan Khosravian [Thu, 28 Nov 2019 08:12:23 +0000 (09:12 +0100)]
Fix-7167-UWP-ListViewRenderer-ScrollToTop-when-NotifyCollectionChangedAction.Reset (#7279)

* - created test view in control gallery for issue 7167
- wrote view, vm, and "ImprovedObservableCollection" for testing purpose
- reproduced the bug without using any external nugets like "System.Reactive"
- added onitemselected of listview to test itemselections
- fixed by changing the implementation of Xamarin.Forms.Platform.UWP.ListViewRenderer.ReloadData
- single commit which is useful for cherry picks
- if itemsource and collectionviewsource.source (_collection) are the same the collectionviewsource is not being reinstantioated again
- wrote ui test.

* - changed controlgalery.projitems manually after cherrypick

* - made testcase uitestable

* - fixed uitesting exception

* - made view, vm ui-testable
- (TODO) modified uitest. (assert is missing)

* - created test view in control gallery for issue 7167
- wrote view, vm, and "ImprovedObservableCollection" for testing purpose
- reproduced the bug without using any external nugets like "System.Reactive"
- added onitemselected of listview to test itemselections
- fixed by changing the implementation of Xamarin.Forms.Platform.UWP.ListViewRenderer.ReloadData
- single commit which is useful for cherry picks
- if itemsource and collectionviewsource.source (_collection) are the same the collectionviewsource is not being reinstantioated again
- wrote ui test.

* - changed controlgalery.projitems manually after cherrypick

* - made testcase uitestable

* - fixed uitesting exception

* - made view, vm ui-testable
- (TODO) modified uitest. (assert is missing)

* - wrote uitest, formetted

* - updated comments

* - uitest are only being executed for UWP

* - removed comments (PR feedback)

4 years ago[macOS] Implement slider min/max/thumb color (#8098)
Konrad Müller [Wed, 27 Nov 2019 19:04:48 +0000 (20:04 +0100)]
[macOS] Implement slider min/max/thumb color (#8098)

* Add slider min/max/thumb color to macOS

* Use forms slider; make custom cell internal

* Remove private modifier

4 years ago[Core,iOS,Android] Remove NumberOfSideItems (#8614)
Rui Marinho [Wed, 27 Nov 2019 17:52:46 +0000 (17:52 +0000)]
[Core,iOS,Android] Remove NumberOfSideItems (#8614)

* [Core,iOS,Android] Remove number of side items

* [Controls] Fix IndicadorCodeGallery

4 years ago[Tizen] Use pre-created window at initailzation time (#8685)
Kangho Hur [Wed, 27 Nov 2019 16:54:42 +0000 (08:54 -0800)]
[Tizen] Use pre-created window at initailzation time (#8685)

4 years ago[Tizen] Add SwipeViewRenderer on Tizen (#8542)
Seungkeun Lee [Wed, 27 Nov 2019 15:04:13 +0000 (00:04 +0900)]
[Tizen] Add SwipeViewRenderer on Tizen (#8542)

* Add SwipeViewRenderer on Tizen

* Update SwipeItemWidth and Height to PX

* Rebase to 4.4.0

 - Fix build error
 - Fix async method naming

* Update StaticRegistrar

4 years ago[Tizen] Provides Static Registrar (#331)
허강호/Common Platform Lab(SR)/Principal Engineer/삼성전자 [Wed, 27 Nov 2019 05:11:09 +0000 (14:11 +0900)]
[Tizen] Provides Static Registrar (#331)

* [Tizen] Provides Static Registrar

* Adds Lookup handler instead of fallback mechanism