유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 16 Jun 2020 07:44:58 +0000 (16:44 +0900)]
Update the ibc file (#241)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 16 Jun 2020 07:23:43 +0000 (16:23 +0900)]
Enhance the Preloading Precedure and Fixed the issue to throw InvalideOperationException if SetFlags is called (#240)
* Enhance the Preloading Precedure and Fixed the
issue to throw InvalideOperationException if SetFlags is called
* [HR] register sourceinfo before triggering change (#10933)
- fixes #10803
* [Tizen] Enhance the Page.ToolbarItem (#11015)
* [Tizen] Fix initialize of Device Independent Pixel option (#435)
* [Tizen] Ensure the update of color after theme style changing (#436)
* Enhance the Page renderer (#324)
* Change the file mode
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 5 Jun 2020 01:25:16 +0000 (10:25 +0900)]
Improve the Cell performance (#239)
* Update NamedPlatformColor.cs (#10677)
* [Tizen] Make ActiveBezemElement as readonly (#10655)
* Use FlyoutBehavior on Shell if user sets it (#10456)
* Fire OnBackButtonPressed on the currently Displayed Page (#10860) fixes #7072
* Fire OnBackButtonPressed on the currently Displayed Page
* - don't run Page BackButton code when used with Shell
* Prevent styled element creation off the main thread from crashing the application (#10568)
Fixes #10561
* [Bug] Disabled Expander doesn't change its visual appearance (#10461) fixes #10362
* #10362 changed visual appearance of disabled expander
* Update Xamarin.Forms.Core/Expander.cs
* Added test case
* [C/X] Clean API and impl of OnAppTheme (#10592) fixes #10395
* [C/X] Clean API and impl of OnAppTheme
* [C] User override for app theme
- fixes #10395
* fix tests
* Update Xamarin.Forms.Core/Application.cs
Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
Co-authored-by: Rui Marinho <me@ruimarinho.net>
Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
* [Tizen] Fix TableViewRenderer on Tizen wearable device (#10911)
* [Tizen] Update the CellRenderer for extensibility (#427)
* Fix ListView Footer bug (#428)
* Synchronize between master branch of Tizen.CircularUI.Form and XSF
* Meets the alignment
* [Tizen] Improve the Switch Cell performance (#429)
CircularUI PR : #318, #319, #321
* Update the ibc file
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 26 May 2020 11:30:03 +0000 (20:30 +0900)]
Update the ibc file (#238)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 25 May 2020 06:45:55 +0000 (15:45 +0900)]
Fix TwoButtonPage overlap issue (#237)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 20 May 2020 07:58:47 +0000 (16:58 +0900)]
Update the ibc file (#232)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 20 May 2020 07:04:02 +0000 (16:04 +0900)]
Fix the issue that Context is null in case of standalone mode and Synchronize with 4.6.0 branch of X.F (#231)
* Fixed the issue that Context is null in case of standalone mode
* Fix Shell NavigationView (#420)
* [Tizen] Fix IndicatorView (#419)
* [Tizen] Fix Indicator center
* [Tizen] Hide CarouselView scroll bar
* [Tizen] Fix ViewHolder for CarouselView
* Fix collectionview focus issue (#421)
* Fix Page Focus issue (#422)
* [Tizen] Fix ListView header padding on watch (#423)
* Fixed the aligment
* Synchronize with 4.6.0 branch of X.F
* Update NamedPlatformColor.cs (#10677)
* Fix flag check for theme (#10714)
fixes #10712
* Fix Native.ListView Header/Footer padding issue (#424)
* [Tizen] Load image sync in case of FileImageSource (#425)
* Update the WatchListView with PR #311 (https://github.com/Samsung/Tizen.CircularUI/pull/311)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 18 May 2020 03:03:56 +0000 (12:03 +0900)]
Fix svace issue (#230)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 15 May 2020 08:20:26 +0000 (17:20 +0900)]
Fix CheckRendererer to avoid registerPropertyhandler issue (#227)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 15 May 2020 07:55:56 +0000 (16:55 +0900)]
Modified NativeFactory for Xamarin.Forms 4.6.0 and CircularUI 1.5.0 (#226)
* Modified NativeFactory for Xamarin.Forms 4.6.0 and CircularUI 1.5.0
* Remove Annotation
* Fixed NativeFactory
* Delete unused code
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 14 May 2020 12:37:12 +0000 (08:37 -0400)]
Support new features of CircularUI based on 1.5.0 branch (#225)
* Fix SVACE issues (#274)
* Fix SVACE issues
* Add guard for null exceptions
* Make PageRenderer even better (#279)
* Add WheelAppeared and WheelDisappeared events in CircleStepper (#282)
* Fix IndexPage CurrentPage issue (#285)
* Fix rotary event activation issue (#286)
* Fix rotary event issue
* Add TC
* Add BezelInteractionPage (#298)
* Add BezelInteractionPage
* Apply code review
* Deprecate the legacy APIs
* Refactoring CircularShell Renderer
* Update bezel interaction behavior (#299)
* Refactoring CircularShell Renderer
* Update bezel interaction behavior
* Update OnMoreOptionOpened/Closed
* Update CircleScrollViewRenderer (#300)
* Update CircleScrollViewRenderer
* Obsolete BarColor property in CircleScrollView
* Update the CircleScrollViewRenderer (#301)
* Update CircleStepperRenderer and CircleDateTimeSelectorRenderer (#296)
* Update ActiveBezelInteractionElement on Activate bezel interaction (#302)
* Update CircleListViewRenderer (#303)
* Update CircleListViewRenderer
* Apply Review comment
* Remove unused ListViewCache
* Update Bezel Intercation behavior on closing dialog (#304)
* Merge 1.5.0 branch of CircularUI
* Update Renderer to use disable rotary event on IBezelInteractionRoutor (#305)
* Fix ExportRenderer (#306)
* Meets alignment for all cs files
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 14 May 2020 04:48:43 +0000 (13:48 +0900)]
Support new features of Xamarin.Forms based on 4.6.0 branch (#222)
* Fix RTL on Shell to correctly propagate FlowDirection through the UIView Stack (#9237)
* Shell iOS RTL fixes
* - simplify
* - change flow direction to use os settings when not specified
* - check for flags
* - unit test fixes
* - rebase fixes
* - remove device default
* - remove explicit parent
fixes #6227
fixes #6342
* AppTheme fix NRE (#10327)
* Various fixes
* Back to basics
* Meets alignment for Xamarin.Forms.Core
* [Tizen] Add material renderers for Editor and Picker (#9384)
* [Tizen] Fix PickerRenderers to disable cursor
* [Tizen] Add material style Editor and Pickers
* [Tizen] Fix typo and modify the event invoking methods
* RadioButton Experimental Flag (#10370)
* RadioButton Experimental Flag
* - check IsDesignerMode
* Give elements inside flyout a namescope for VSM (#10383)
* Give elements inside flyout a namescope for VSM
* - set binidings through vsm
fixes #10382
* [iOS] Shell fix clear of ShellSection (#10253)
* Fix clear of ShellSection on iOS
* - additional unit tests
* Update Xamarin.Forms.Core/Shell/ShellSection.cs
* - fix removed items
* - fix check
* - uitests
* - additional clear fixes
* - make get items from shell elements immutable
- pre create all pages before actively adding them to top tabs
* - fix android not setting page if item is removed
* - remove wait
* - add check to make sure you're on correct item before setting content
* Propagate StyleClass from Items correctly (#10381)
* Propagate StyleClass from Items correctly
* - fix uwp to use correct method for flyout
* Expander + CollectionView issues (#10283) fixes #10230
https://github.com/xamarin/Xamarin.Forms/issues/10230
* Fix has VSM check to not use IsSet (#10459)
* Fix has VSM check to not use IsSet
* - fix left over param
* - make test more accurate
fixes #10040
* Indicator shows # of indicators = MaximumVisible even when there are fewer items (#10401)
* Fix iOS & Android
* Moved coerce to renderers
* Moved logic to renderers
fixes #9826
* Fix Collection selection using SwipeView (#9638)
* Fix Collection selection using SwipeView
* Move SwipeView IsOpen property to ISwipeViewController
* Added comment to added ViewCellContainer constructor
* Minor changes based on PR feedback
* Updated SwipeView GestureRecognizers samples to cover all the cases
* Modified ItemContentView ClickOn method to be internal
fixes #9467
fixes #8774
fixes #8903
fixes #9089
fixes #9466
fixes #9027
fixes #10056
* feat!: make managed cookies opt-in, re #10318 (#10474)
* Get rid of pointless Spacing property in Expander (#10460) fixes #10449
* Runtime updating of AppTheme values (#10442)
* Make things BindingBase
* Update OnAppTheme.cs
* Runtime updating
* Fixed
* Cleanup
* Update VisualElement.cs
* Update Application.cs
* Fix NRE for unit tests
* Review feedback
* Update Application.cs
fixes #10391
* If Shell Element is already wrapped up just return the implicit parent (#10418) fixes #10308
* [Tize] Provide way to handle when MoreOption was opened/closed (#10553)
* Set Current Item correctly after items cleared (#10515)
* Set Current Item correctly after items cleared
* - fix disposes
* - null check
* - ios fixes
* - fix pager
* - enough if statements will solve any problem
* - more ifs
* Make cookie handling consistent and non destructive (#10571) fixes #10318
* Make cookie handling consistent and non destructive
* - fix ios
* - ios fixes
* - sync fixes
* - ios fixes
* - fix ui tests
* - fix uwp
* - move buttons around
* - update comments
* - ios10 adjustments
* - use host for key not full url
* Fix TemplatedItemsList incorrect grouped collection range removal (#7891) fixes #7890
* fix
* test added
* uitest added
* ui test fix
Co-authored-by: melimion <Evlentev@molot.net>
* [Tizen] Update ShellRenderer for extend (#10587)
* Fixed wrong namespace in FontFile class (#10496) fixes #10495
* [Tizen] Adds ActiveBezelElement to Application (#10644)
* Added IsOpen property in SwipeEndedEventArgs (#10467)
* Added IsOpen property in SwipeEndedEventArgs (Android and iOS)
* Fixed build error
* [Tizen] Adds ActiveBezelInteractionElement to Application (#412)
* [Tizen] Adds RotaryFocusView to Application
* Update Xamarin.Forms.Platform.Tizen/Renderers/ViewRenderer.cs
Co-Authored-By: 이승근/Common Platform Lab(SR)/Staff Engineer/삼성전자 <sngn.lee@samsung.com>
* Make ActiveBezelElement as readonly binadable property
* [Tizen] Enhance Stepper for watch (#410)
* Create wearable_app_requirement.md
* [Tizen] Enhance Stepper for watch
* [Tizen] Modify event names
* [Tizen] Change parent of WatchDateTimePicker (#413)
* [Tizen] Update native controls of Date/TimePicker for watch
* [Tizen] Update DateTimePickerRenderer
* [Tizen] Update WatchScroller for extension (#415)
* [Tizen] Update ListView native controls for extension (#416)
* [Tizen] Adds more SwitchStyles (#417)
* [Tizen] Adds Switch.Color as Platform Specifc API (#418)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 13 May 2020 02:49:04 +0000 (11:49 +0900)]
Fixed the issue that X.F app creates two windows (#219)
* Fixed the issue that X.F app creates two windows
* Move the position of calling factory method of native object
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 11 May 2020 23:07:42 +0000 (08:07 +0900)]
Update README.md
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 11 May 2020 08:21:27 +0000 (17:21 +0900)]
Revert "Remove symbolic link (#215)" (#221)
This reverts commit
bba84318f0eea9c248a6cf681f41c471a018e3c2.
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 11 May 2020 04:59:43 +0000 (13:59 +0900)]
Create NuGet.Config (#220)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 6 May 2020 11:48:54 +0000 (20:48 +0900)]
Update the ibc file (#218)
This PR is for fixing urgent issue.
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 6 May 2020 07:17:41 +0000 (16:17 +0900)]
Enhance the factory of native and unrealize the unused native object (#217)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 29 Apr 2020 06:10:47 +0000 (15:10 +0900)]
Move show code in Preload to OnPreCreate (#216)
* Move show code in Preload to OnPreCreate
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 29 Apr 2020 03:28:03 +0000 (12:28 +0900)]
Remove symbolic link (#215)
최종헌/Common Platform Lab(SR)/Engineer/삼성전자 [Wed, 29 Apr 2020 03:10:22 +0000 (12:10 +0900)]
Rename XSF.preload file with two digit number prefix (#214)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 28 Apr 2020 03:02:01 +0000 (12:02 +0900)]
Add the symbolic link for libSkiaSharp and libHarfBuzzSharp (#213)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 28 Apr 2020 00:21:12 +0000 (20:21 -0400)]
Add the XSF.ibc file for MPGO (#212)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 24 Apr 2020 01:56:06 +0000 (10:56 +0900)]
Support new features(RadialProgress) of Tizen.CircularUI (#210)
* [Tizen] Fix dependency service registration correctly (#10287)
* [Bug] [Core+WPF] Grid + ListView -> first row height not correct + width not correct + ArgumentOutOfRangeException when tapped (#8440) fixes #6436 fixes #8039 fixes #9029 fixes #5682 fixes #6842
* [Bug] [WPF] Grid + ListView -> first row height not correct
* Fix indention
* DynamicResource for listview colors
* Fix indention, use tabs instead of spaces
* Fix cell control
* Fix renderer, update ListViewSelectionColor
* Fix cell is not displayed
* Fix invalid cell width 9029
* Cell_Appearing
* Update controlgallery
* Fix 6842 - invalid layout after windows maximized
* Remove unused using
* Get children from InternalChildren
* Fix for grid layout in listview cell
* Fix ListView selection issue
* [Tizen] Adds OverlayContent to Application (#10310)
* [SwipeView] Added IsEnabled and IsVisible properties to SwipeItem (#9949)
* Added IsEnabled and IsVisible properties to SwipeItem
* Fixed wrong animation value
* Removed GetVisibleSwipeItemsByDirection to avoid create unnecessary SwipeItems instance
fixes #9881
* Applying proper style on SwitchCell depending on target idiom (#403)
* Protect corner case of updating OverlayContent (#404)
* [Tizen] Add Shell renderer for watch (#393)
* Update ColorTypeConverter to support HSVA (#398)
* Create wearable_app_requirement.md
* Adds Color.FromHsva (#397)
* Update ColorTypeConverter to support HSVA
* [Tizen] Adds RadioButton (#402)
* [Tizen] Activate IRotaryActionWidget when it has focus (#396)
* [Tizen] Activate IRotaryActionWidget when it has focus
* [Tizen] Add IRotaryInteraction and WatchList
* [Tizen] Change callback name
* [Tizen] Add WatchScroller
* [Tizen] Support scrollbar visibility properties of ListView
* [Tizen] Add IndicatorView (#357)
* [Tizen] Enable Page.ToolbarItem on wearable (#401)
* [Tizen] Invoke ItemsView Scrolled event
* [Tizen] Changed CarouselView scroll logic
* [Tizen] Add IndicatorView
* [Tizen] Add Shell renderer for watch
* [Tizen] Modify ExportRendererAttribute
* [Tizen] Enable rotary event on Shell
* [Tizen] Fix scroll event issue on ShellSection
* [Tizen] Update NavigationView of ShellRenderer
* [Tizen] Modify the property for rotary focused object
* [Tizen] Remove TargetProfile enum
* [Tizen] Modify callbacks for rotary event to allow to override
* Update Xamarin.Forms version to 4.6.0-pre4 (#270)
* Adds ICircleSurfaceProvider and ICircleSurfaceConsumer (#261)
* Merged branch `dev` (#271)
* Add FlatViewCell (#260)
* Adds OverlayContent to Application (#262)
* Add rotary event manager (#259)
* Add rotary event manager
* Change internal event to delegate
* Remove unused using statements
* Change class name to RotaryEventManager
* Update using directive
* Update CircularUI.cs
* Revert "Adds OverlayContent to Application (#262)"
This reverts commit
1d101475e93ce201f3c44c086a9c90ba819acdac.
Co-authored-by: Jay Cho <chojoong@gmail.com>
* Merge branch `add-circularui-chart` (#273)
* Adds CircularUI.Chart
* Add RadialProgress (#272)
* Add RadialProgress
* remove unused solution file
* Change namespace of FormsCircularUI
* Fix RadialProgress namespace
* Update FormsCircularUI.Init()
Co-authored-by: Seungkeun Lee <sngn.lee@samsung.com>
* meets alignment for Tizen.Wearable.CircularUI.Forms
* Meets alignment for Tizen.Wearable.CircularUI.Forms.Renderer
* Meets alignment for Xamarin.Forms
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 23 Apr 2020 04:36:58 +0000 (13:36 +0900)]
Fixed theme file path and spec file for XSF (#209)
* Fixed theme file path and spec file for XSF
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 23 Apr 2020 02:16:26 +0000 (11:16 +0900)]
Support new features of Xamari.Forms (#208)
* Fix Flyout item updated (#265)
* Add circular-ui theme (#266)
* Fix Year display issue in latest Tizen 5.5 binary (#269)
* [core] Profile is off by default, save 56KB of allocations (#8963)
Profiling a Blank Forms app template with allocations on Android:
adb shell setprop debug.mono.profile log:calls,alloc
I saw something worrying:
Allocation summary
Bytes Count Average Type name
32064 2 16032 Xamarin.Forms.Internals.Profile.Datum[]
24032 1 24032 Xamarin.Forms.Internals.Profile[]
This appears to be ~56KB of objects that are allocated at startup.
`Profile` in general looks like it should be useful, but it shouldn't
impact startup in customer's apps!
The `Profile` struct is a public API, so we can't use `#if` or
`[Conditional]`. I'm thinking a new flag is need to enable the
`Profile` class:
Forms.SetFlags("Profile");
To make everything work, I had to add two public members to `Profile`:
* Profile.Enable()
* Profile.IsEnabled
They can't be `internal`, since `Forms` is in each platform-specific
assembly. I added `[EditorBrowsable(EditorBrowsableState.Never)]`.
Additionally, there was one place in `Registrar.cs`:
Profile.FrameBegin(assembly.GetName().Name);
`Assembly.GetName()` for every assembly would be expensive, so I check
if `Profile.IsEnabled` is False and use "Assembly" instead.
One last improvement was the handling of:
public static partial class Forms
{
public static IReadOnlyList<string> Flags
...
There were some weird `.ToList().AsReadonly()` calls. `string[]`
implements `IReadOnlyList`, so we can just `Clone()` the input or use
`new string[0]` by default.
~~ Results ~~
I saw a small improvement to startup on a Pixel 3 XL:
Before:
12-18 16:51:16.427 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +586ms
12-18 16:51:20.133 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +567ms
12-18 16:51:23.863 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +573ms
12-18 16:51:27.581 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +571ms
12-18 16:51:31.362 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +577ms
12-18 16:51:35.095 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +575ms
12-18 16:51:38.846 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +578ms
12-18 16:51:42.576 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +570ms
12-18 16:51:46.324 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +569ms
12-18 16:51:50.056 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +576ms
Average(ms): 574.2
Std Err(ms): 1.
74355957741627
Std Dev(ms): 5.
51361950083609
After:
12-18 16:55:04.122 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +571ms
12-18 16:55:07.805 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +570ms
12-18 16:55:11.553 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +569ms
12-18 16:55:15.303 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +574ms
12-18 16:55:19.020 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +572ms
12-18 16:55:22.766 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +576ms
12-18 16:55:26.500 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +573ms
12-18 16:55:30.264 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +582ms
12-18 16:55:33.981 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +571ms
12-18 16:55:37.697 1490 1517 I ActivityTaskManager: Displayed com.xamarin.forms.helloforms/crc6450e568c951913723.MainActivity: +571ms
Average(ms): 572.9
Std Err(ms): 1.
19675487140108
Std Dev(ms): 3.
78447119452933
* Fix navigating/navigated events and add ".." navigation (#10048)
* Fix hot reload when modifying AppShell file (#10064)
* Ensure that Visual is available to EmptyView when renderers are created (#10022) fixes #8766
* Parent the EmptyView long enough to get the correct Visual
* Temporarily parent empty views on Android to get correct Visual
Fixes #8766
* Make instructions more explicit
* Propagate the visual without a parent
* Clean up last parenting clause
* Fix route removal to keep one default if needed (#10156)
* Inverse Parent/Child fields for VisualDiagnostics.SendVisualTreeChanged (#10072)
* Inverse Parent/Child fields for VisualDiagnostics.SendVisualTreeChanged
The Parent/Child relationship for what's being sent for SendVisualTreeChanged needs to be flipped. With `VisualDiagnostics.SendVisualTreeChanged(this, value);` you end up with, say, a Button being a parent of a StackPanel, even though the button is _inside_ the StackPanel.
* Inverse Parent/Child fields for VisualDiagnostics.SendVisualTreeChanged
The Parent/Child relationship for what's being sent for SendVisualTreeChanged needs to be flipped. In the case of `XamlLoader`, the root XAML page is the "ultimate" parent of all the elements below it, so it should be sent as the "Parent" rather than as a "Child."
* Revert SendVisualTreeChanged for XamlLoader
* Remove VisualTreeChanged event call from XamlLoader
* Revert "Remove VisualTreeChanged event call from XamlLoader"
This reverts commit
2cbeda2d11393ee1f4b57676d2d7929b04c83e49.
* Revert Whitespace
* Fix query string for ".." and renavigating (#10176)
* Fix query string for .. and renavigating
* - pass null if query string is removed
* - fix setting initial value
* [GH-9440] - Fix Flyout remains open on FlyoutItem double click (#9719)
* fix commit
* Update Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue9440.cs
* fixed UITest
* - OnDrawerStateChanged
* Update Shell.cs
Co-authored-by: Pedro Jesus <pedro.jesus@arctouch.com>
Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
* Cross-Platform OS Theme APIs (#9958)
* Implement OnAppTheme
* Implement AppThemeColor
* Added tests
* Finishing up
* Implement UWP
* Xcode 11 and additional test
* Update Forms.cs
* Update ViewRenderer.cs
* Update ViewRenderer.cs
* Remove IAppThemeProvider
* Implemented RequestedThemeChanged
* Update WindowsBasePlatformServices.cs
* Bindable props and Android invalidate
* Update DefaultBindableProperties.cs
* Updates at runtime
* Review feedback part 1
* Implement VisualElement.OnRequestedThemeChanged
* UWP Dispatcher
* Add experimental flag
* ControlGallery restructure
* Update ViewRenderer.cs
* Update WindowsBasePlatformServices.cs
* iOS pre-13 fix
* Propagating StyleClass on ShellElements to Flyout templates (#9886)
* Propagating StyleClass to Flyout templates
* - fix style propagation
* - UWP flyout item templating implementation
* - fix find parent code
* - visual states and styling
* - add styleclass to MenuItem
* - default styles
* - make style classes discoverable
* [Tizen] Enable Page.ToolbarItem on Watch (#10145)
* Add GetNamedColor for platform specific colors (#10008)
* Implementation
* Implement UWP
* Update MockPlatformServices.cs
* Added to ColorTypeConverter
* Update WPFPlatformServices.cs
* Added Android
Co-authored-by: Samantha Houts <samhouts@users.noreply.github.com>
* Remove ButtonSource API (#9967)
fixes #9948
* fix modal onappearing and hardware back button (#10189)
* [Enhancement] Expander control (#9044)
* Expander initial commit
* updated Expander
* tab fixes
* added spacing property
* added sample gallery page
* removed useless class
* updated sample
* cleaned code
* Update Xamarin.Forms.Core/Expander.cs
Co-Authored-By: Gerald Versluis <github@geraldversluis.nl>
* updated sample
* UITest ExpanderView (#3)
* removed empty line
* - expander flag
Co-authored-by: Gerald Versluis <github@geraldversluis.nl>
Co-authored-by: Guido Neele <guido.neele@xs4all.nl>
Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
* Remove controller from UINavigationController stack when page is removed (#10140)
* Remove controller from UINavigationController stack when page is removed
* - add uitest
* - remove extra code
* Inverse Parent/Child fields for VisualDiagnostics.SendVisualTreeChanged (#10072)
* Inverse Parent/Child fields for VisualDiagnostics.SendVisualTreeChanged
The Parent/Child relationship for what's being sent for SendVisualTreeChanged needs to be flipped. With `VisualDiagnostics.SendVisualTreeChanged(this, value);` you end up with, say, a Button being a parent of a StackPanel, even though the button is _inside_ the StackPanel.
* Inverse Parent/Child fields for VisualDiagnostics.SendVisualTreeChanged
The Parent/Child relationship for what's being sent for SendVisualTreeChanged needs to be flipped. In the case of `XamlLoader`, the root XAML page is the "ultimate" parent of all the elements below it, so it should be sent as the "Parent" rather than as a "Child."
* Revert SendVisualTreeChanged for XamlLoader
* Remove VisualTreeChanged event call from XamlLoader
* Revert "Remove VisualTreeChanged event call from XamlLoader"
This reverts commit
2cbeda2d11393ee1f4b57676d2d7929b04c83e49.
* Revert Whitespace
* [Core] Stylesheets on page level now always override parent stylesheets (#6772) fixes #5812
* To fix issue #5812 I moved the responsibility for apply a stylesheet to child elements to the Element class.
It would be weird for a stylesheet to get all parent stylesheets of an element and call Apply on them too. I think it's a good thing that StyleSheet.Apply(Element) really only applies it on the given Element? The main issue was that when the ApplyParentStyleSheets was called, the stylesheet of the element itself wasn't applied, so you could never override parent style elements
* Added unit test for subview styling
* Removed .concat linq call
* Revert autosave formatting
* Update MergedStyle.cs
Co-authored-by: chris <chris@careconnections.nl>
Co-authored-by: Samantha Houts <samantha.houts@xamarin.com>
Co-authored-by: Samantha Houts <samhouts@users.noreply.github.com>
* Embedded font's now cache lookup to prevent double setups. fixes #10208 (#10227)
* Embedded font loader can now register twice on iOS
* FontRegistrar caches lookups
* [Tizen] Changed CarouselView scroll logic according to the Core change. (#10235)
* [Tizen] Invoke ItemsView Scrolled event
* [Tizen] Changed CarouselView scroll logic
* [Tizen] Add IndicatorView
* [Tizen] Enhances ListView on Tizen (#10236)
* [Tizen] Activate IRotaryActionWidget when it has focus
* [Tizen] Add IRotaryInteraction and WatchList
* [Tizen] Change callback name
* [Tizen] Add WatchScroller
* [Tizen] Support scrollbar visibility properties of ListView
* https://github.com/xamarin/Xamarin.Forms/issues/10229 (#10247)
fixes #10229
* Fix default Shell flyout item templates (#10252)
* Fix default shell menu templates
* - fix default styles
* - centralize code for picking flyout template
fixes #10238
* [Tizen] Adds RadioButton (#10237)
* Change StateTriggerBase OnAttached and OnDetached methods to be public (#9888)
* Change OnAttached and OnDetached to be public
* Fixed build error
* Removed unnecessary virtual methods
* Fixed build error
* AppTheme to OSAppTheme (#10302)
* Change file mode from 644 to 755
* Change file mode from 644 to 755 for CollectionView.cs
최종헌/Common Platform Lab(SR)/Engineer/삼성전자 [Wed, 22 Apr 2020 06:27:28 +0000 (15:27 +0900)]
Add the .preload file required for preloading in the launcher (#193)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 20 Apr 2020 07:52:18 +0000 (03:52 -0400)]
Support the SkiaSharp (#202)
Head Commit :
commit
6a3f6cdbacc8bb6f7425a8087eefdf5a7b0563e3 (origin/master, origin/HEAD)
Author: Immo Landwerth <immo@landwerth.net>
Date: Wed Apr 8 02:00:42 2020 -0700
Link Code of Conduct (#1216)
libSkiaSharp version : 1.68.2
libHarfBuzz : 2.6.1
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 20 Apr 2020 03:05:49 +0000 (12:05 +0900)]
Remove the ApplicationLifecycle (#204)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 16 Apr 2020 08:08:11 +0000 (17:08 +0900)]
Fixed circle ci config file to deploy source code to spin tizen_wearable branch (#203)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 14 Apr 2020 05:46:28 +0000 (14:46 +0900)]
Fixed circle ci config file to deploy source code from spin to public git (#201)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 14 Apr 2020 01:37:03 +0000 (10:37 +0900)]
Fixed ci config file for source sync job (#200)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 14 Apr 2020 00:44:34 +0000 (09:44 +0900)]
Fixed ci file (#199)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 13 Apr 2020 10:36:46 +0000 (19:36 +0900)]
Update circle ci file to sync between dev branch and master branch (#198)
This PR is for CI test.
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 13 Apr 2020 04:17:33 +0000 (13:17 +0900)]
Delete test code. Original code moved to dev branch. (#194)
We should develop on dev branch first and merge to master branch.
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 13 Apr 2020 04:01:51 +0000 (13:01 +0900)]
Register the circular ui render to static register (#192)
* Register the circular ui rendereres to static register
* Add the registration for circular ui
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 8 Apr 2020 02:15:10 +0000 (11:15 +0900)]
Fixed License information (#191)
Wonyoung Choi [Tue, 7 Apr 2020 22:59:13 +0000 (07:59 +0900)]
[Build] Add checkout step to deploy job
Wonyoung Choi [Tue, 7 Apr 2020 22:41:31 +0000 (07:41 +0900)]
[Build] Hot fix for deploy job
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 7 Apr 2020 22:35:21 +0000 (07:35 +0900)]
[Build] Push build info to artifacts (#190)
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 7 Apr 2020 07:23:05 +0000 (16:23 +0900)]
Update README.md
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 7 Apr 2020 07:21:42 +0000 (16:21 +0900)]
Create README.md
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 6 Apr 2020 09:17:50 +0000 (18:17 +0900)]
Suppot the ElottieSharp (#189)
* Suppot the ElottieSharp
* Add the ElottieFormsGallery
* change the path of lib
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 6 Apr 2020 05:52:06 +0000 (14:52 +0900)]
Support new features of Tizen.CircularUI (#188)
* Use Forms's GetHandler (#228)
* Fix ActionButton geometry calculation (#237)
* Fix the issue that text and bg color in PopupEntry is not changed while edit text (#239)
* Fix issue of unsupporting special character in Bottom button (#244)
* Fix issue that newline and ampersand are not supported in Information&TwoButton Popup (#250)
* Adds CircleSurfaceView (#258)
* Merge branch 'circular-shell' (#264)
* Add appium test for CircularShell (#241)
* Add Appium unit testcase
* Update Shell UI Tests (#236)
Co-authored-by: shmin <shmin.dev@gmail.com>
* Update Icon Images (#245)
* Update WearableUIGallery to use Shell (#252)
* Fix TwoButtonPage issue on shell (#255)
Co-authored-by: shyun.min <shyun.min@samsung.com>
Co-authored-by: Seungkeun Lee <sngn.lee@samsung.com>
Co-authored-by: shmin <shmin.dev@gmail.com>
Co-authored-by: shyun.min <shyun.min@samsung.com>
* Add new ContentButton (#263)
* Add new ContentButton
* Change Renderer inheritance and fix typo
* Restructure ContentButton and ContentButtonRenderer
* Fix layout issue
* Remove OnLayoutUpdate method
* Fix typo
* Support the CircularShell
This commit refers to these commits
* Update CircularShell (#229)
* Update X.Forms version to 4.4.0.991537 (#227)
* Add CircularShell (#226)
by Seungkeun Lee <sngn.lee@samsung.com>, shmin <shmin.dev@gmail.com>, Kangho Hur <rookiejava+github@gmail.com>
* Fixed the invalid resource stream
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 3 Apr 2020 02:29:09 +0000 (11:29 +0900)]
[Build] Add "clean all" command to build.sh (#187)
- Remove all obj/bin directories under test
- Remove XSF.Build.Tasks assemblies in .nuspec/net*
- Remove generated XSF NuGet packages in root directory
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 3 Apr 2020 02:22:14 +0000 (11:22 +0900)]
Support new features of Xamari.Forms (#186)
* do not throw exeption when target of WeakReference was collected (#9542) fixes #6698
- in TypedBinding.Apply return instead of throwing an InvalidOperationException
- add a null-check in BindingExpression
- add a ControlGallery page to reproduce the issue
- fix #6698
Co-authored-by: Stephane Delcroix <stephane@delcroix.org>
* Fix ObjectDisposedException issues for renderers OnElementPropertyChanged (#9764)
* Update GitInfo.txt
* Fix ObjectDisposedException issues for renderers when they are saved
from garbage collection by a weak referenced property changed handler
Fixes #9431; Fixes #5560; Fixes #8607; Fixes #6587; Fixes #9412;
* Add disposed check for legacy renderers
* Add visual indication that the app is running with legacy renderers
* Revert gitinfo
* Add disposed check to VisualElementTracker
* Asyncify double dispose test
Co-authored-by: Samantha Houts <samhouts@users.noreply.github.com>
* [X] consume trailing spaces in markup (#9850)
- fixes #9212
* [iOS|Android] Fix screen reader order (#9702)
* add nifty test page
* TabIndexes will not skip layouts; will skip disabled/unfocusable views
* [iOS|Android] Standardize logic, don't duplicate TabIndex logic
* fix test case
* [iOS] Make Frame a tab stop
* Update ShellFlyoutRenderer.cs
* [iOS] Hide Master page from Accessibilty when not presented
fixes #4220
* final test case should work without so much explict tabindexing!
* [iOS] Single or no TabIndex = default page order
* No tabindex? No problem!
* [Android] Single or no TabIndex = default page order
* [iOS] Return elements depth first
* copypastestackoverflowofshame
* review comments
* [Android] Let OS handle FocusSearch if we haven't specified more than one TabIndex group
* [Android] Let OS handle FocusSearch if we haven't specified more than one TabIndex group
fixes #9653
fixes #4220
fixes #9191
fixes #8613
fixes #9137
fixes #8691
fixes #7606
fixes #4270
fixes #5879
* [XamlC] use XmlReader for detecting XAML and x:Class (#9922)
Context: https://www.jetbrains.com/profiler/
I was profiling Xamarin.Android project builds with `dotTrace`, and
noticed an `IsXaml` method from XamlC taking time:
0.07% IsXaml • 40/0 ms • Xamarin.Forms.Build.Tasks.CecilExtensions.IsXaml(EmbeddedResource, ModuleDefinition, out String)
0.07% Execute • Xamarin.Forms.Build.Tasks.XamlCTask.Execute(out IList)
0.07% Execute • Xamarin.Forms.Build.Tasks.XamlTask.Execute
In this build, I had changed only XAML and the netstandard project was
using `<ProduceReferenceAssembly>True</ProduceReferenceAssembly>`.
The project is here:
https://github.com/xamarin/xamarin-android/tree/master/tests/Xamarin.Forms-Performance-Integration
Reviewing `IsXaml`, it uses `XmlDocument` to parse every
`EmbeddedResource` with a `.xaml` extension. The problem with this, is
that `XmlDocument` loads the entire XML file into memory and parses
it. This is a step before the actual work of XamlC, so it is currently
parsing every file twice.
If we switch this code to use `XmlReader` instead, we can read to the
first XML element and stop there to get the information needed. We
don't need to parse the entire file at this step.
The results of building the Xamarin.Forms.Controls project on
Windows:
Before:
1973 ms XamlCTask 1 calls
After:
1917 ms XamlCTask 1 calls
The same project running on Mono / macOS:
Before:
6785 ms XamlCTask 1 calls
After:
6224 ms XamlCTask 1 calls
My Mac is a slightly slower machine than my PC, but the big difference
is Mono vs .NET Framework.
* Apply fix from #9195 to Style.cs (#9921) Fixes #9656
Fixes #9656
* Fix SwipeItem cast issue on SwipeView (#9907)
* Fixed SwipeItem parent casting issue
* Recover unnecessary removed line in ControlGallery project
* Added missing onproperty changed
* Add a way to open SwipeView programmatically (#9635)
- fixes #9413
* Implemented programmatically Open method in SwipeView
* Fixed direction validation programmatically opening the SwipeView
* Hide internal SwipeView OpenRequested event
* * #8183 Fix Base Class Selector with Descendent Selection
* #8183 Unit Tests
* #8183 Additional Base Class Selector Tests
* [X] register asm in sourceinfo for xamlc (#10001)
see #9294
* [iOS,Android, UWP] Set Position and CurrentItem when ItemsSource items change (#9854) fixes #9322 fixes #9401 fixes #9432 fixes #9771
* [Android] Update CurrentItem on CarouselView when the ItemSource changed
* Fix sample
* [iOS] Update CurrentItem when ItemSource changess
* [Controls] Fix sample
* [iOS] Fix setting initial CurrentItem
* [UITests] Add UITest for CurrentItem change
* [UItests] Fix iOS test
* [Core] If we keep in the same item we still might need to update the position
* [Controls] Add repo for issue #9322
* [Controls] Fix tests
* [iOS,Android] Use NotifyCollectionChangedEventHandler
* [iOS,Android,Controls] Fix rebase
* [Controls] Fix tests
* [iOS] Fix scrolling to initial position
* [Android] Fix set Currentitem
* [Android] Don't try set a current item if we cleared the collection
* [Controls] Updata sample for issue #9401
* [Android] Reset the ItemDecorations when adding/removing the last index
* [Android] UpdateVisualStates when updating CurrentItem
* [Core] If the position of CurrentItem is the same no need to scroll
* [Controls] Update sample
* [Android] Set new currentitem e position from renderer
* [iOS] Update position from renderer
* [iOS] Add hack for position
* [Tests] Comment test for position, this is done on the platform now
* Set correct content offset when removing previous Carousel slides (#9828)
Co-authored-by: E.Z. Hart <hartez@users.noreply.github.com>
* [Controls] Fix sample
* [iOS] Update CurrentItem
* [UWP] Set Item/position from renderer
* [UWP] Fix NRE when disposing IndicatorView
* [UWP] Fix CurrentItem on collection changes
* Update App.cs
* [Android] Move to internal the NotifyCollectionChangedEventHandler
* [iOS] Fix rebase
* [Android] Don't try set position if no items
* [Controls] Add sample for #9771
* [iOS] Fix issue when collection is empty
* [Controls] Update sample to fix uitests on API19
* [Tests] Remove old unit tests
* [Android] Recycler extension method for center item
* [UWP] Fix extra padding on items
* [UWP] Refactor validate position
{UWP] Don't set position if there's no items
* [Controls] Update samples for CarouselView
* [Android] Fix set position on collection reset
* [iOS] Fix set position on collection reset
* [Android] Fix visual states on android
* [UITests] Wait for gallery button
* [UWP] Handle Scrolled event on CarouselViewRenderer
* [Android] Validate set position out of bounds
[Android] Reset _goToPostio flag when reset source
* [Android] Reset snap when item count changes
* [Android] If we request ScrollTo we should reset the CurrentTargetPosition
* [Android] Small refactor, reset _goToPosition when ItemsSource changes
* [Android] Better fix for issue with SingleSnapHelper
* [Core] Add AnimatePositionChanges and AnimateCurrentItemChanges to CarouselView
* [Android] Add AnimateChanges usage to CarouselViewRenderer
* [UWP] Add AnimateChanges usage to CarouselViewRenderer
* [iOS] Add AnimateChanges to CarouselViewController
Co-authored-by: E.Z. Hart <hartez@users.noreply.github.com>
* [Core] Adds Color.FromHsva (#10054)
* Fixed SwipeView regression issue on iOS (#9464) fixes #9417
* Remove all uses of md5 (#10028)
* Remove all uses of md5
* - fix unit tests
* - fix dualscreen tests
* Update ColorTypeConverter to support HSVA (#10065)
* [Tizen] Provides global Circle Surface for wearable (#10083)
* Embedded fonts fix (#9194)
* Android should use the new FontStuff
* iOS font loading is now more resilant. It returns the loaded font name from the embedded resource!
* iOS now loads any font!
* Font Aliases now work on iOS, Android
* Optimized for Alias, making all the lookups faster
* UWP now works with Font Aliases
* Enable Scrolled event on ListView (#399)
* Enable Scrolled event on ListView
* Fixing logic to get current region
* Applying DIP convert to Scrolled event arguments
* Update syntax
* Removing unnecessary property
* Fix CirclePage.BackgroundImageSource (#214)
* Change protection level for CircleScrollViewRenderer (#222)
* Add IsWrapEnabled Property in CircleStepper (#224)
* Add IsWrapEnabled Property in CircleStepper
* change CreateAttached() to create()
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 2 Apr 2020 01:52:40 +0000 (10:52 +0900)]
Fixed the black screen before LoadingPage appears (#184)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 2 Apr 2020 01:46:19 +0000 (10:46 +0900)]
Add source deployment to spin git in CircleCI (#185)
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 1 Apr 2020 05:17:14 +0000 (14:17 +0900)]
Delete CODEOWNERS
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 1 Apr 2020 05:15:23 +0000 (14:15 +0900)]
[Build] Remove unnecessary version.txt in ci config (#183)
Wonyoung Choi [Tue, 31 Mar 2020 06:14:21 +0000 (15:14 +0900)]
[Build] Fix release name
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 31 Mar 2020 05:47:22 +0000 (14:47 +0900)]
Merge pull request #179 from wy80-choi/setup-circleci
Setup CircleCI
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 31 Mar 2020 00:42:26 +0000 (20:42 -0400)]
Refactoring the UA app (#180)
* Refeactoring the MapMyRun app
* Remove Console.WriteLine statements
Wonyoung Choi [Mon, 30 Mar 2020 04:49:25 +0000 (13:49 +0900)]
Setup CircleCI
- Build test for every commits and pull requests
- Publish nightly nuget packages for master branch
- Publish release nuget packages by a tag starting with /v[0-9]+/
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 30 Mar 2020 00:01:51 +0000 (09:01 +0900)]
Refactoring the UA app (#177)
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 27 Mar 2020 06:24:18 +0000 (15:24 +0900)]
Change version policy (#176)
- change the main version to 5.5.0
- generate pre-release nuget package by default
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 27 Mar 2020 04:47:38 +0000 (13:47 +0900)]
[UA App] Fixed MapMyRun and changed to sync image load (#175)
Modify main() to use static registrar in UA app (#169)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 26 Mar 2020 22:29:11 +0000 (18:29 -0400)]
Remove --nologo option (#171)
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 26 Mar 2020 09:14:08 +0000 (18:14 +0900)]
Merge pull request #170 from rina6350-you/EmbeddingControl_st2
Support the EmbeddingControls of MediaPlayer
Rina You [Thu, 26 Mar 2020 16:50:53 +0000 (12:50 -0400)]
Remove the old files related to xaml version's EmbeddingControls
Rina You [Thu, 26 Mar 2020 16:20:08 +0000 (12:20 -0400)]
Support the EmbeddingControls of MediaPlayer
Add Under Armour sample app (#166)
* Add Under Armour sample app
* Change the file mode
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 26 Mar 2020 06:45:13 +0000 (15:45 +0900)]
Build net461 assembly with dotnet-cli (#168)
The Microsoft.NETFramework.ReferenceAssemblies can be used to build .NETFramework
assemblies with dotnet-cli. We don't need to use Mono for building net461 assembly
of XSF.Build.Tasks anymore.
So commands of ./build.sh are changed as following:
- ./build.sh msbuild --> Removed
- ./build.sh dotnet --> ./build.sh build
최원영/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 26 Mar 2020 05:28:01 +0000 (14:28 +0900)]
Add missing nuget packages for GBS environment (#167)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 25 Mar 2020 08:10:45 +0000 (17:10 +0900)]
Add splash screen to XStopWatch (#165)
Update sample apps to use XSF single assembly (#164)
최원영/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
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.
유리나/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
유리나/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)
Fix XamlParseException (PopupEntry not found) (#156)
윤정현/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
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 18 Mar 2020 12:09:10 +0000 (21:09 +0900)]
Write the temporary spec file (#154)
윤정현/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
유리나/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.
유리나/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)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 9 Mar 2020 04:08:01 +0000 (13:08 +0900)]
Fixed the crash issue (#149)
유리나/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 17 Feb 2020 06:55:19 +0000 (15:55 +0900)]
Precreate the CircleListView (#148)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 14 Feb 2020 02:24:54 +0000 (11:24 +0900)]
Add HeartRateMonitor app (#147)
유리나/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
안주원/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)
유리나/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)
안주원/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Mon, 20 Jan 2020 04:38:25 +0000 (13:38 +0900)]
Add Voicememo app (#142)
윤정현/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
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 16 Jan 2020 01:34:45 +0000 (10:34 +0900)]
[Tizen] Creates the GestureDetector on demand (#141)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 15 Jan 2020 05:32:28 +0000 (14:32 +0900)]
Add Alarm app (#139)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 15 Jan 2020 04:21:07 +0000 (13:21 +0900)]
Change assembly name (#138)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 14 Jan 2020 08:16:17 +0000 (17:16 +0900)]
Remove the TargetIdiom and Profile (#137)
유리나/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
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 14 Jan 2020 06:17:03 +0000 (15:17 +0900)]
Remove MasterDetialPage (#136)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Tue, 14 Jan 2020 05:26:44 +0000 (14:26 +0900)]
Remove the unused code in NavigationPage (#134)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 10 Jan 2020 06:31:00 +0000 (15:31 +0900)]
Remove SearchBar (#131)
안주원/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Fri, 10 Jan 2020 00:06:24 +0000 (09:06 +0900)]
Delete unnecessary directories for XSF (#132)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 9 Jan 2020 05:42:39 +0000 (14:42 +0900)]
Remove Picker,DatePicker,TimePicker (#130)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Thu, 9 Jan 2020 01:10:00 +0000 (10:10 +0900)]
Remove TabbedPage (#129)
부정균/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 8 Jan 2020 10:15:50 +0000 (19:15 +0900)]
restruct project directory (#128)
윤정현/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)
윤정현/Common Platform Lab(SR)/Staff Engineer/삼성전자 [Wed, 8 Jan 2020 06:31:41 +0000 (15:31 +0900)]
Remove CheckBox (#125)
부정균/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.