Skip to content

[main][Tizen] Replace Tizen Backend engine #9619

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 266 commits into from
Aug 26, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
266 commits
Select commit Hold shift + click to select a range
654ed22
Remove comment
myroot Jul 1, 2021
634a7ea
Remove image resource on Tizen project
myroot Jul 1, 2021
3125f78
Remove space
myroot Jul 1, 2021
12637d2
Fix compatibility issue (#41)
myroot Jul 2, 2021
8bfb581
Bump to latest
rookiejava Jul 6, 2021
4f6a099
[SingleProject] Fix Issues (#50)
JoonghyunCho Jul 9, 2021
9f4168e
Bumt to latest
rookiejava Jul 14, 2021
9898581
Add Microsoft.Maui.Graphics.Skia as PackageReference
rookiejava Jul 14, 2021
0185ef8
Add Essentials.Samples.Tizen (#24)
sung-su Jul 20, 2021
f3622e3
Fix build error (#60)
myroot Jul 20, 2021
d299c22
Update referenced Tizen.UIExtensions version (#61)
rookiejava Jul 21, 2021
97a59da
Add BlazorWebView skeleton code (#62)
myroot Jul 21, 2021
0e7725a
Bump to latest (#71)
rookiejava Aug 4, 2021
17d0116
Remove IPage on Tizen (#72)
rookiejava Aug 4, 2021
f2f8e16
Add Blazor webview (#67)
myroot Aug 4, 2021
78d2803
Fix entry cursor error (#68)
Aug 4, 2021
975fbdf
Fix nullable issue (#77)
JoonghyunCho Aug 4, 2021
d3c1bdd
Fix Image loading (#78)
rookiejava Aug 6, 2021
51cfa93
Fix nested layout issue (#79)
myroot Aug 6, 2021
283eece
Fix issues caused by bump up (#75)
JoonghyunCho Aug 6, 2021
46c052d
Fix unmatched partial method (#84)
JoonghyunCho Aug 6, 2021
50c65eb
Fixes incorrect parameter type for ILayoutManager.ArrangeChildren (Re…
rookiejava Aug 9, 2021
9eb22f4
Make the HandlerToRendererShim simple
rookiejava Aug 11, 2021
13f127a
Revert "Fixes incorrect parameter type for ILayoutManager.ArrangeChil…
rookiejava Aug 12, 2021
a90d32c
Refactor the LayoutHandler (#99)
rookiejava Aug 12, 2021
a000c96
Fix layout measure issue (#100)
myroot Aug 13, 2021
ddf4e8d
Fix LayoutHandler Update issue (#103)
myroot Aug 20, 2021
9afce5d
Add InitializationOptions (#107)
JoonghyunCho Aug 23, 2021
44f1701
Fix SKClipperView to have proper size (#115)
JoonghyunCho Aug 23, 2021
381069f
Fix Essentials sample (#108)
sung-su Aug 23, 2021
d033d84
Add ShellHandler (#64)
shyunMin Aug 23, 2021
a5e4ac5
MAUI workload for Tizen (#66)
rookiejava Aug 26, 2021
20c15ba
Fix build and runtime error after bumping to latest code
rookiejava Aug 26, 2021
9453039
Fix HandlerToRendererShim dispose (#127)
myroot Aug 26, 2021
a816554
Add ShellSearchView (#121)
shyunMin Aug 26, 2021
78db18f
Fix scaling issue on Clip (#130)
myroot Aug 26, 2021
b9239ac
Fix DisplayResolutionUnit sync issue (#134)
myroot Aug 26, 2021
6b4b9e7
Fix build error (#137)
myroot Aug 30, 2021
7717240
Replace SkiaGraphicsView with local patch (#135)
myroot Aug 30, 2021
7c662c4
Support Min/Max Height/Width on IView and applying MauiApp/MauiAppBui…
rookiejava Aug 31, 2021
a907a42
Fix Tizen Templates (#144)
rookiejava Sep 1, 2021
f5f09a0
Fix webview break caused by updated dependency (#143)
JoonghyunCho Sep 1, 2021
812d623
Update the Tizen.UIExtension.ElmSharp version (#145)
rookiejava Sep 1, 2021
306ed66
Reomve internal UIExtensions compoments for Shell (#147)
shyunMin Sep 1, 2021
5b030ff
Adds missing implementation after bumping to latest main
rookiejava Sep 2, 2021
9c72865
[Tizen] Adds BoxView Handler
rookiejava Sep 3, 2021
330fab4
[Tizen] Implement ProgressColor property in ProgressBarHandlers
rookiejava Sep 7, 2021
34af028
[Tizen] Handle ContentViews and templated content in new layout system
rookiejava Sep 8, 2021
8824f3a
Bump to latest (rc1)
rookiejava Sep 23, 2021
332930a
[Tizen] Apply graphics related code review feedback
rookiejava Sep 24, 2021
bae03e2
[Tizen] Port H/V TextAlignment to Editor/Picker Handler
rookiejava Sep 30, 2021
ba74c05
[Tizen] Add TVShellView (#183)
shyunMin Oct 1, 2021
8c0bd1c
Refactor WrapperView to draw drawable features (#186)
JoonghyunCho Oct 5, 2021
f5dfb02
[Tizen] Adds ApplicationHandler
rookiejava Oct 6, 2021
5b211df
Fix Background issue of Frame (#193)
shyunMin Oct 8, 2021
e194447
Fix UpdateBackground (#194)
sung-su Oct 12, 2021
3ad355c
[Tizen] Fix build error on PageHandler
rookiejava Oct 12, 2021
721c921
[Tizen] Apply ITextButton related changes
rookiejava Oct 25, 2021
2e9a956
[Tizen] Add Shadows (#233)
JoonghyunCho Oct 28, 2021
5568c52
[Tizen] Add BorderDrawable (#224)
sung-su Oct 29, 2021
8b4df1b
[Tizen] Fix entry cursor issue (#222)
shyunMin Nov 3, 2021
9ed555a
[Tizen] Remove TVNavigationDrawer TVNavigationView (#223)
shyunMin Nov 3, 2021
747cff0
[Tizen] Initial Multi Window support
rookiejava Nov 5, 2021
6a781c1
[Tizen] Fix MauiContext
rookiejava Nov 5, 2021
0c34844
[Tizen] Refactor Border by defining MauiDrawable (#248)
JoonghyunCho Nov 15, 2021
4ca192e
[Tizen] Obsolete AndExpand & Remove IsolatedStorage
rookiejava Nov 15, 2021
cd7a29e
Fix tizen solution (.sln) correctly
rookiejava Nov 17, 2021
a3645b1
[Tizen] Add VerticalTextAlignment
rookiejava Nov 17, 2021
289cffb
[Tizen] Fix Scoping of MauiContext
rookiejava Nov 19, 2021
751249f
[Tizen] Use CoreApplication as native app type
rookiejava Nov 22, 2021
8d16642
[Tizen] Applying upstream changes
rookiejava Dec 3, 2021
9c73cd1
[Tizen] Add ContainerView to Layout if it's present
rookiejava Dec 3, 2021
019e7a8
[Tizen] Initial Reloadyfy support
rookiejava Dec 3, 2021
005dd5e
[Tizen] Initial IVisualDiagnosticOveraly support
rookiejava Dec 3, 2021
d6d2a98
[Tizen] Move types in the Platform folder into the Platform namespaces
rookiejava Dec 6, 2021
35bdcb0
Fix CollectionView layout issue (#288)
sung-su Dec 6, 2021
2fad74e
[Tizen] ZIndex proof-of-concept
rookiejava Dec 6, 2021
6d1678d
Fix ScrollView ContentSize and Padding margin (#291)
myroot Dec 6, 2021
99402e5
Implements WindowOverlay and VisualDiagnosticsOverlay (#294)
myroot Dec 8, 2021
0a49bf4
[Tizen] Fix Image Handler
rookiejava Dec 9, 2021
033c6ff
Remove GetDesiredSize (#295)
sung-su Dec 9, 2021
69c163a
[Tizen] Fix ButtonHandler
rookiejava Dec 10, 2021
b4ca897
[Tizen] Organize and centralize HandlerExtensions
rookiejava Dec 10, 2021
e4d8612
Refactor WrapperView and Fix Issue (#302)
JoonghyunCho Dec 13, 2021
115bb2c
Fix essentials sample for Tizen (#305)
sung-su Dec 13, 2021
71d532e
[Tizen] Fix NativeView casting issue
rookiejava Dec 14, 2021
e9eb454
Fix BlazorWebview binary resource issue (#317)
myroot Dec 23, 2021
1fa4f92
[Tizen] Handle query strings in Blazor static assets by trimming them…
rookiejava Dec 24, 2021
5c10a7b
Refactor MauiContext (#330)
myroot Jan 3, 2022
30461ef
[Tizen] Adds PaintExtensions
rookiejava Jan 3, 2022
c57e0de
[Tizen] Implement CursorPosition in IEditor/ITextInput Handlers
rookiejava Jan 14, 2022
8d06c4b
[Tizen] Remove GetNative
rookiejava Jan 17, 2022
e61a78c
[Tizen] Update Microsoft.NET.Sdk.Maui/WorkloadManifest
rookiejava Jan 18, 2022
30622a1
[Tizen] Bump to latest
rookiejava Jan 19, 2022
3e6b0fb
[Tizen] Use legacy compat renderers temporarily
rookiejava Jan 21, 2022
b4a66d3
[Tizen] Implement IPlatformApplication.Current
rookiejava Jan 27, 2022
3457dbf
[Tizen] Fix INativeViewHandler to return more expected NativeView
rookiejava Feb 4, 2022
5fe1157
[Tizen] Remove legacy TFMs
rookiejava Feb 4, 2022
fca50e7
[Tizen] Remove `IPlatformInvalidate` and `Device.Invalidate()
rookiejava Feb 8, 2022
b976b89
[Tizen] Fix Essential sample build error
rookiejava Feb 10, 2022
c72411c
[Tizen] Refactor Essential's implementations
rookiejava Feb 21, 2022
ec7eedd
[Tizen] Renaming public APIs Native -> Platform
rookiejava Feb 21, 2022
efa6e99
[Tizen] Interfaced Handler for Label, Page, NavigationView, Picker,
rookiejava Feb 24, 2022
26e0287
[Tizen] Moved GetPlatformSize logic into a new service
rookiejava Feb 25, 2022
df3cda9
[Tizen] Interfaced handler for Switch, TimePicker, WebView, Slider,
rookiejava Feb 25, 2022
23094a2
[Tizen] Fix build error after rebasing
rookiejava Feb 28, 2022
0042858
[Tizen] Move TabbedPageHandler to TabbedViewHandler
rookiejava Mar 2, 2022
bbfc78b
[Tizen] Backport p14 changes
rookiejava Mar 4, 2022
77c7313
[Tizen] Loaded/Unloaded events and propagate Window
rookiejava Mar 7, 2022
939f8d8
[Tizen] Implement FillRule property in Polygon/PolylineHandler
rookiejava Mar 10, 2022
3ff0cc6
[Tizen] Add install tizen to provision.yml
rookiejava Mar 10, 2022
e6c9e6b
[Tizen] Move package version into Versions.props
rookiejava Mar 11, 2022
8b67266
Adds the Tizen backend
rookiejava May 17, 2021
b139331
[Tizen] Add Resizetizer Tizen Implementation
JoonghyunCho Apr 23, 2021
2ef55f1
Bump to latest and fix build error
rookiejava May 31, 2021
6f7f7fc
Bump to latest
rookiejava Jun 21, 2021
3847cd3
Bump to latest
rookiejava Jun 29, 2021
f9deaa5
Bump to latest
rookiejava Jul 6, 2021
ace4a0f
Bumt to latest
rookiejava Jul 14, 2021
8d0ad8d
Fix build error (#60)
myroot Jul 20, 2021
3d238cf
Bump to latest (#71)
rookiejava Aug 4, 2021
13aaf49
Bump to latest
rookiejava Aug 20, 2021
0d5459d
Fix Essentials sample (#108)
sung-su Aug 23, 2021
6a1fe15
Add ShellHandler (#64)
shyunMin Aug 23, 2021
301e269
MAUI workload for Tizen (#66)
rookiejava Aug 26, 2021
2f16797
Fix build and runtime error after bumping to latest code
rookiejava Aug 26, 2021
d97428b
Fix Essentials (#146)
sung-su Sep 1, 2021
ef9fd0f
Adds missing implementation after bumping to latest main
rookiejava Sep 2, 2021
1e80199
Bump to latest (rc1)
rookiejava Sep 23, 2021
8f976fb
Refactor WrapperView to draw drawable features (#186)
JoonghyunCho Oct 5, 2021
1238aa2
[Tizen] Adds ApplicationHandler
rookiejava Oct 6, 2021
19737ff
Fix UpdateBackground (#194)
sung-su Oct 12, 2021
4cff3f2
[Tizen] Add BorderDrawable (#224)
sung-su Oct 29, 2021
385da07
[Tizen] Refactor Border by defining MauiDrawable (#248)
JoonghyunCho Nov 15, 2021
c4b7a11
[Tizen] Fix Scoping of MauiContext
rookiejava Nov 19, 2021
ab870c7
[Tizen] Applying upstream changes
rookiejava Dec 3, 2021
cb0987e
[Tizen] Move types in the Platform folder into the Platform namespaces
rookiejava Dec 6, 2021
afe2205
[Tizen] Fix ButtonHandler
rookiejava Dec 10, 2021
2d1ba6f
[Tizen] Organize and centralize HandlerExtensions
rookiejava Dec 10, 2021
c41f055
Refactor MauiContext (#330)
myroot Jan 3, 2022
661b6fa
Add NUI handler
myroot Oct 13, 2021
b4085dc
[Tizen] Refactor MauiApplication and MauiContext (#216)
rookiejava Oct 18, 2021
f684fd3
Add AlertManager (#214)
myroot Oct 18, 2021
74623e0
Code clean up (#218)
myroot Oct 19, 2021
3f25d3d
Fix build error on Controls.Sample (#225)
myroot Oct 25, 2021
fac16a6
[Tizen] Initail CollectionViewHandler for NUI
rookiejava Oct 25, 2021
a51ac6d
Fix PlatformEffect NativeView type (#231)
myroot Oct 25, 2021
f7584df
Fix Control.Sample correctly (#234)
rookiejava Oct 26, 2021
77feed1
Fix NamedSize (#242)
myroot Nov 5, 2021
7ef2535
Update NavigationPageRenderer (#238)
myroot Nov 5, 2021
0b39434
Fix build errors and apply upstream changes
rookiejava Nov 8, 2021
b7b8201
Refactoring Window and modal (#246)
myroot Nov 10, 2021
ec66ea6
Obsolete AndExpand & fix build eror
rookiejava Nov 16, 2021
2c6008d
[NUI] Implement BlazorWebView (#259)
myroot Nov 18, 2021
94bbbec
Bump to latest
rookiejava Nov 22, 2021
b5ebd45
Fix MinimumWidth/Height MaximumWidth/Height (#270)
myroot Nov 26, 2021
34852ab
[NUI] Add GestureManager (#272)
myroot Nov 26, 2021
ccda245
Remove unnessary EFL code in ScrollViewHandler (#274)
rookiejava Dec 1, 2021
9cc1a07
Add TabbedPage Renderer (#275)
myroot Dec 2, 2021
e8e2b73
[NUI] Implement WrapperView enabling Border and Shadow (#273)
JoonghyunCho Dec 2, 2021
7e6c14d
[NUI] Add Picker handler (#276)
myroot Dec 2, 2021
03ae706
Update Picker on touch (#293)
myroot Dec 7, 2021
4c8b6a2
Fix NeedsContainer (#306)
myroot Dec 14, 2021
f8ebfbb
Update FrameRenderer to support Brush (#309)
myroot Dec 15, 2021
a1066fd
Fix minor layout issue (#314)
myroot Dec 22, 2021
4a1c39b
Fix build error
myroot Dec 28, 2021
1df45c8
Fix ScrollView ContentSize (#324)
myroot Dec 28, 2021
e0b01b7
Refactor Maui context (#328)
myroot Dec 30, 2021
4564401
Fix build error after bumping to latest
myroot Jan 5, 2022
cad00f8
[Tizen] Add ImageButtonHandler (#334)
rookiejava Jan 12, 2022
e5af673
[NUI] Implement Editor/Entry handler (#335)
myroot Jan 13, 2022
b34f6ff
Fix Editor/Entry CursorPosition issue (#336)
myroot Jan 13, 2022
71cdeb7
[NUI] Add CollectionViewHandler (#352)
myroot Jan 26, 2022
066888e
Add SearchBar handler (#354)
myroot Jan 27, 2022
0d7600b
Implement Clip (#384)
myroot Feb 22, 2022
4558c44
Bump to latest
myroot Feb 23, 2022
57e66de
[NUI] Add TimePickerHandler (#390)
shyunMin Feb 25, 2022
1f5a400
Clean up code after rebase (#399)
myroot Mar 2, 2022
013b6e5
Fix TabbedPage to use Controls.Grid instead Compatibility.Grid (#400)
myroot Mar 2, 2022
20f65d7
Fix Controls MapText (#406)
myroot Mar 3, 2022
7a6f437
Fix focus management (#407)
myroot Mar 4, 2022
0cc273c
Update WrapperView (#409)
myroot Mar 7, 2022
ee03676
Update Tizen platform to tizen10.0 (#416)
myroot Mar 10, 2022
ec1320e
Update WebView handler and MauiWebView handler (#417)
myroot Mar 10, 2022
e120f6b
Update Label shadow (#420)
myroot Mar 10, 2022
000b269
Fix build error after rebase
myroot Mar 11, 2022
854a98e
Fix InputTransparent (#424)
myroot Mar 14, 2022
7261242
Implement CarouselView handler (#428)
myroot Mar 16, 2022
b0c5234
Fix GestureManager crash issue (#432)
myroot Mar 18, 2022
20920c1
Update WebView EvaluateJavaScript async (#435)
myroot Mar 21, 2022
6d7e27d
Fix CascadeInputTransparent (#442)
myroot Mar 29, 2022
5fef2da
Add NavigationView handler (#449)
myroot Apr 8, 2022
5a2d6fc
Update WindowOverlay handler (#452)
myroot Apr 8, 2022
c26cdaf
Update ViewExtensions (#455)
myroot Apr 12, 2022
37a6268
Update ImageSourceService (#454)
myroot Apr 14, 2022
13f2bfe
Fix MauiSearchBar IsEnabled property (#458)
myroot Apr 18, 2022
64647d4
Add SwipeView handler (#460)
myroot Apr 24, 2022
cfeb90d
Clean code after rebase
myroot Apr 26, 2022
a6e9870
Fix GetPath to return a correct path (#465)
myroot Apr 28, 2022
5fd60db
Update for focus navigation (#459)
myroot May 3, 2022
5b5d109
Cleanup code after rebase
myroot May 3, 2022
34c6f13
Fix build error after rebase
myroot May 16, 2022
0213058
Implement UpdateBackgroundImageSourceAsync extensions method (#479)
myroot May 18, 2022
a49a7cd
[NUI] Update SliderHandler with NUI slider component (#487)
shyunMin May 26, 2022
9a5a877
Fix GetPlatformViewBounds as Pixel coordinate (#488)
myroot May 26, 2022
627347c
Fix ScrollView content size update issue (#492)
myroot May 30, 2022
aae8b5b
Implement Controls.Compatibility for tizen (#493)
myroot May 31, 2022
78613ba
Optimize Layout Measure (#495)
myroot Jun 7, 2022
ec1d7bf
Code cleanup after code rebase
myroot Jun 7, 2022
b4eaa3e
Fix z-order on Layout (#497)
myroot Jun 8, 2022
2aab70c
[NUI] Update StepperHandler (#498)
myroot Jun 10, 2022
636ed9d
Fix Frame measure (#501)
myroot Jun 15, 2022
26b791a
Fix BorderView (#500)
myroot Jun 15, 2022
ed157f7
Add RadioButton handler (#499)
myroot Jun 15, 2022
dbde98c
Fix CollectionView Item measure (#502)
myroot Jun 17, 2022
2929642
Fix Measure contraint convert (#504)
myroot Jun 17, 2022
fe4ae8c
Fix WrapperView measure (#507)
myroot Jun 20, 2022
96e5f2d
Implement Missing mapper (#509)
myroot Jun 21, 2022
360bfa9
Fix WrapperView Width/HeightSpecification (#510)
myroot Jun 21, 2022
375c330
Fix ShapeView (#511)
myroot Jun 22, 2022
d6057fc
Optimize View measure (#513)
myroot Jun 28, 2022
bc98c69
Fix NavigationPage disposing pages (#514)
myroot Jun 28, 2022
c881312
Fix build error after rebase
myroot Jul 1, 2022
973d6ec
Fix WebView (#515)
myroot Jul 1, 2022
54c98c3
Fix TableView (#516)
myroot Jul 4, 2022
cf930c2
Fix Compatibility Cell templates (#517)
myroot Jul 5, 2022
2c8c1df
[NUI] Add IndicatorViewHandler (#518)
myroot Jul 6, 2022
b3d410a
Fix ListViewRenderer (#519)
myroot Jul 6, 2022
15e8d9c
Fix Binding error on CollectionView (#520)
myroot Jul 7, 2022
88ecdee
Fix layout issue when view was shown from hide (#522)
myroot Jul 7, 2022
868ba09
[NUI] Fix ImageButton Clicked (#523)
myroot Jul 12, 2022
56cc2ba
Fix BlazorWebView RequestIntercept issue (#524)
myroot Jul 14, 2022
50359e2
Fix Layout size issue (#525)
myroot Jul 19, 2022
0bc0d3b
Fix build error after rebase
myroot Jul 21, 2022
ec4b27b
[NUI] Add DatePicker Handler (#528)
JoonghyunCho Aug 2, 2022
48f7b18
Fix GetBoundingBox/OverlayWindow touch point coordinate to DP (#529)
myroot Aug 2, 2022
805cb19
Fix CollectionView EmptyView HeaderFooter (#530)
myroot Aug 4, 2022
80fe531
Update DateTimePicker width on horizontal (#531)
myroot Aug 4, 2022
71199f3
Fix DisconnectHandler (#532)
myroot Aug 4, 2022
79c0378
Update Page default background color (#533)
myroot Aug 4, 2022
cab97c2
Clean up NuGet.config (#535)
rookiejava Aug 4, 2022
2b11ffe
[NUI] Update font size (#536)
myroot Aug 8, 2022
8c7ebb8
Add RefreshViewHandler (#490)
myroot Aug 8, 2022
87ce3c1
[Tizen] Refactor compat renderers (#538)
rookiejava Aug 12, 2022
aded2ad
[Tizen] Refactor the TabbedPageRenderer (#541)
rookiejava Aug 18, 2022
ad48274
[Tizen] Add FlyoutViewHandler (#540)
JoonghyunCho Aug 18, 2022
21393ca
[Tizen] Add MauiPicker (#543)
rookiejava Aug 19, 2022
b00531c
Add MenuIcon to Toolbar (#542)
JoonghyunCho Aug 19, 2022
f22b6c1
[Tizen] Add ShellHandler (#539)
shyunMin Aug 23, 2022
fb8a7a6
Fix build error after rebase
myroot Aug 23, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 0 additions & 1 deletion .nuspec/Microsoft.Maui.Controls.MultiTargeting.targets
Original file line number Diff line number Diff line change
Expand Up @@ -113,5 +113,4 @@
<PropertyGroup Condition=" $(TargetFramework.StartsWith('uap10.0')) ">
<DefineConstants>WINDOWS_UWP;$(DefineConstants)</DefineConstants>
</PropertyGroup>

</Project>
2 changes: 1 addition & 1 deletion .nuspec/Microsoft.Maui.Controls.SingleProject.targets
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@
BeforeTargets="_MauiInjectXamlCssAdditionalFiles;GenerateMSBuildEditorConfigFileShouldRun"
Condition=" '$(EnableDefaultItems)' == 'true' and '$(SingleProject)' == 'true' ">

<!-- Removals -->
<!-- Removals -->
<ItemGroup>
<!-- Remove everything that isn't part of this platform -->
<Compile
Expand Down
2 changes: 1 addition & 1 deletion eng/Microsoft.Extensions.targets
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@
Version="$(MicrosoftCodeAnalysisPublicApiAnalyzersVersion)"
/>
<PackageReference
Update="Tizen.UIExtensions.ElmSharp"
Update="Tizen.UIExtensions.NUI"
Version="$(TizenUIExtensionsVersion)"
/>
<PackageReference
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,9 @@ Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection
Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection.JSComponents.get -> Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore!
Microsoft.AspNetCore.Components.WebView.Maui.RootComponentsCollection.RootComponentsCollection(Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! jsComponents) -> void
Microsoft.AspNetCore.Components.WebView.Maui.TizenWebViewManager
Microsoft.AspNetCore.Components.WebView.Maui.TizenWebViewManager.TizenWebViewManager(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! blazorMauiWebViewHandler, Tizen.WebView.WebView! webview, System.IServiceProvider! provider, Microsoft.AspNetCore.Components.Dispatcher! dispatcher, Microsoft.Extensions.FileProviders.IFileProvider! fileProvider, Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! jsComponents, string! contentRootRelativeToAppRoot, string! hostPageRelativePath) -> void
Microsoft.AspNetCore.Components.WebView.Maui.TizenWebViewManager.TizenWebViewManager(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! blazorMauiWebViewHandler, Tizen.NUI.BaseComponents.WebView! webview, System.IServiceProvider! provider, Microsoft.AspNetCore.Components.Dispatcher! dispatcher, Microsoft.Extensions.FileProviders.IFileProvider! fileProvider, Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! jsComponents, string! contentRootRelativeToAppRoot, string! hostPageRelativePath) -> void
override Microsoft.AspNetCore.Components.WebView.Maui.TizenWebViewManager.NavigateCore(System.Uri! absoluteUri) -> void
override Microsoft.AspNetCore.Components.WebView.Maui.TizenWebViewManager.SendMessage(string! message) -> void
Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer
Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer.WebViewContainer(ElmSharp.EvasObject! parent) -> void
Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer.WebView.get -> Tizen.WebView.WebView!
Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs
Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.Url.get -> System.Uri!
Microsoft.AspNetCore.Components.WebView.UrlLoadingEventArgs.UrlLoadingStrategy.get -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy
Expand All @@ -51,13 +48,13 @@ Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.CancelLoad = 2 -> Mic
Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenExternally = 0 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy
Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy.OpenInWebView = 1 -> Microsoft.AspNetCore.Components.WebView.UrlLoadingStrategy
Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions
override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.CreatePlatformView() -> Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer!
override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.ConnectHandler(Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer! platformView) -> void
override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.DisconnectHandler(Microsoft.AspNetCore.Components.WebView.Maui.WebViewContainer! platformView) -> void
override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.CreatePlatformView() -> Tizen.NUI.BaseComponents.WebView!
override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.ConnectHandler(Tizen.NUI.BaseComponents.WebView! platformView) -> void
override Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.DisconnectHandler(Tizen.NUI.BaseComponents.WebView! platformView) -> void
static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.MapHostPage(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! handler, Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView! webView) -> void
static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.MapRootComponents(Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler! handler, Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView! webView) -> void
static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddBlazorWebViewDeveloperTools(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
static Microsoft.Extensions.DependencyInjection.BlazorWebViewServiceCollectionExtensions.AddMauiBlazorWebView(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Components.WebView.Maui.IMauiBlazorWebViewBuilder!
static Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler.BlazorWebViewMapper -> Microsoft.Maui.PropertyMapper<Microsoft.AspNetCore.Components.WebView.Maui.IBlazorWebView!, Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebViewHandler!>!
virtual Microsoft.AspNetCore.Components.WebView.Maui.BlazorWebView.CreateFileProvider(string! contentRootDir) -> Microsoft.Extensions.FileProviders.IFileProvider!
~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs.WebView.get -> Tizen.WebView.WebView
~Microsoft.AspNetCore.Components.WebView.BlazorWebViewInitializedEventArgs.WebView.get -> Tizen.NUI.BaseComponents.WebView
150 changes: 77 additions & 73 deletions src/BlazorWebView/src/Maui/Tizen/BlazorWebViewHandler.Tizen.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Maui;
using Microsoft.Maui.Dispatching;
using Microsoft.Maui.Handlers;
using Tizen.WebView;
using TChromium = Tizen.WebView.Chromium;
using TWebView = Tizen.WebView.WebView;
using Tizen.NUI;
using NWebView = Tizen.NUI.BaseComponents.WebView;

namespace Microsoft.AspNetCore.Components.WebView.Maui
{
/// <summary>
/// The Tizen <see cref="ViewHandler"/> for <see cref="BlazorWebView"/>.
/// </summary>
public partial class BlazorWebViewHandler : ViewHandler<IBlazorWebView, WebViewContainer>
public partial class BlazorWebViewHandler : ViewHandler<IBlazorWebView, NWebView>
{
private const string BlazorWebViewIdentifier = "BlazorWebView:";
private const string UserAgentHeaderKey = "User-Agent";
private const string AppOrigin = "http://0.0.0.0/";
private const string BlazorInitScript = @"
window.__receiveMessageCallbacks = [];
Expand All @@ -42,53 +44,99 @@ public partial class BlazorWebViewHandler : ViewHandler<IBlazorWebView, WebViewC
})();
";

private TizenWebViewManager? _webviewManager;
private WebViewExtensions.InterceptRequestCallback? _interceptRequestCallback;
static private Dictionary<string, WeakReference<BlazorWebViewHandler>> s_webviewHandlerTable = new Dictionary<string, WeakReference<BlazorWebViewHandler>>();

private TWebView PlatformWebView => PlatformView.WebView;
private TizenWebViewManager? _webviewManager;

private bool RequiredStartupPropertiesSet =>
//_webview != null &&
HostPage != null &&
Services != null;

/// <inheritdoc />
protected override WebViewContainer CreatePlatformView()
protected override NWebView CreatePlatformView()
{
TChromium.Initialize();
MauiApplication.Current.Terminated += (s, e) => TChromium.Shutdown();

return new WebViewContainer(PlatformParent);
return new NWebView()
{
MouseEventsEnabled = true,
KeyEventsEnabled = true,
};
}

/// <inheritdoc />
protected override void ConnectHandler(WebViewContainer platformView)
protected override void ConnectHandler(NWebView platformView)
{
_interceptRequestCallback = OnRequestInterceptCallback;
PlatformWebView.LoadFinished += OnLoadFinished;
PlatformWebView.AddJavaScriptMessageHandler("BlazorHandler", PostMessageFromJS);
PlatformWebView.SetInterceptRequestCallback(_interceptRequestCallback);
PlatformWebView.GetSettings().JavaScriptEnabled = true;
platformView.PageLoadFinished += OnLoadFinished;
platformView.Context.RegisterHttpRequestInterceptedCallback(OnRequestInterceptStaticCallback);
platformView.AddJavaScriptMessageHandler("BlazorHandler", PostMessageFromJS);
platformView.UserAgent += $" {BlazorWebViewIdentifier}{GetHashCode()}";
s_webviewHandlerTable[GetHashCode().ToString()] = new WeakReference<BlazorWebViewHandler>(this);
}

/// <inheritdoc />
protected override void DisconnectHandler(WebViewContainer platformView)
protected override void DisconnectHandler(NWebView platformView)
{
PlatformWebView.LoadFinished -= OnLoadFinished;
platformView.PageLoadFinished -= OnLoadFinished;
base.DisconnectHandler(platformView);
s_webviewHandlerTable.Remove(GetHashCode().ToString());
}


private void PostMessageFromJS(string message)
{
_webviewManager!.MessageReceivedInternal(new Uri(PlatformView.Url), message);
}

private void PostMessageFromJS(JavaScriptMessage message)
private void OnLoadFinished(object? sender, WebViewPageLoadEventArgs e)
{
if (message is null)
//FocusManager.Instance.SetCurrentFocusView(NativeView);
var url = PlatformView.Url;

if (url == AppOrigin)
PlatformView.EvaluateJavaScript(BlazorInitScript);
}

private static void OnRequestInterceptStaticCallback(WebHttpRequestInterceptor interceptor)
{
if (interceptor.Headers.TryGetValue(UserAgentHeaderKey, out var agent))
{
throw new ArgumentNullException(nameof(message));
var idx = agent.IndexOf(BlazorWebViewIdentifier);
if (idx >= 0)
{
var webviewKey = agent.Substring(idx + BlazorWebViewIdentifier.Length);
if (s_webviewHandlerTable.TryGetValue(webviewKey, out var weakHandler)
&& weakHandler.TryGetTarget(out var handler))
{
handler.OnRequestInterceptCallback(interceptor);
return;
}
}
}
interceptor.Ignore();
}

if (message.Name.Equals("BlazorHandler", StringComparison.Ordinal))
private void OnRequestInterceptCallback(WebHttpRequestInterceptor interceptor)
{
var url = interceptor.Url;
if (url.StartsWith(AppOrigin))
{
_webviewManager!.MessageReceivedInternal(new Uri(PlatformWebView.Url), message.GetBodyAsString());
var allowFallbackOnHostPage = url.EndsWith("/");
url = QueryStringHelper.RemovePossibleQueryString(url);
if (_webviewManager!.TryGetResponseContentInternal(url, allowFallbackOnHostPage, out var statusCode, out var statusMessage, out var content, out var headers))
{
var header = $"HTTP/1.0 200 OK\r\n";
foreach (var item in headers)
{
header += $"{item.Key}:{item.Value}\r\n";
}
header += "\r\n";
MemoryStream memstream = new MemoryStream();
content.CopyTo(memstream);
interceptor.SetResponse(header, memstream.ToArray());
return;
}
}
interceptor.Ignore();
}

private void StartWebViewCoreIfPossible()
Expand All @@ -105,14 +153,14 @@ private void StartWebViewCoreIfPossible()

// We assume the host page is always in the root of the content directory, because it's
// unclear there's any other use case. We can add more options later if so.
var contentRootDir = Path.GetDirectoryName(HostPage!) ?? string.Empty;
var hostPageRelativePath = Path.GetRelativePath(contentRootDir, HostPage!);
var contentRootDir = System.IO.Path.GetDirectoryName(HostPage!) ?? string.Empty;
var hostPageRelativePath = System.IO.Path.GetRelativePath(contentRootDir, HostPage!);

var fileProvider = VirtualView.CreateFileProvider(contentRootDir);

_webviewManager = new TizenWebViewManager(
this,
PlatformWebView,
PlatformView,
Services!,
new MauiDispatcher(Services!.GetRequiredService<IDispatcher>()),
fileProvider,
Expand All @@ -125,7 +173,7 @@ private void StartWebViewCoreIfPossible()
VirtualView.BlazorWebViewInitializing(new BlazorWebViewInitializingEventArgs());
VirtualView.BlazorWebViewInitialized(new BlazorWebViewInitializedEventArgs
{
WebView = PlatformWebView,
WebView = PlatformView,
});

if (RootComponents != null)
Expand All @@ -139,50 +187,6 @@ private void StartWebViewCoreIfPossible()
_webviewManager.Navigate("/");
}

private void OnRequestInterceptCallback(IntPtr context, IntPtr request, IntPtr userdata)
{
if (request == IntPtr.Zero)
{
return;
}

var url = PlatformWebView.GetInterceptRequestUrl(request);

if (url.StartsWith(AppOrigin))
{
var allowFallbackOnHostPage = url.EndsWith("/");
url = QueryStringHelper.RemovePossibleQueryString(url);
if (_webviewManager!.TryGetResponseContentInternal(url, allowFallbackOnHostPage, out var statusCode, out var statusMessage, out var content, out var headers))
{
var header = $"HTTP/1.0 200 OK\r\n";
foreach (var item in headers)
{
header += $"{item.Key}:{item.Value}\r\n";
}
header += "\r\n";

using (MemoryStream memstream = new MemoryStream())
{
content.CopyTo(memstream);
var body = memstream.ToArray();
PlatformWebView.SetInterceptRequestResponse(request, header, body, (uint)body.Length);
}
return;
}
}

PlatformWebView.IgnoreInterceptRequest(request);
}

private void OnLoadFinished(object? sender, EventArgs e)
{
PlatformWebView.SetFocus(true);
var url = PlatformWebView.Url;

if (url == AppOrigin)
PlatformWebView.Eval(BlazorInitScript);
}

internal IFileProvider CreateFileProvider(string contentRootDir)
{
return new TizenMauiAssetFileProvider(contentRootDir);
Expand Down
8 changes: 4 additions & 4 deletions src/BlazorWebView/src/Maui/Tizen/TizenWebViewManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using System.Text.Encodings.Web;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.Extensions.FileProviders;
using TWebView = Tizen.WebView.WebView;
using NWebView = Tizen.NUI.BaseComponents.WebView;

namespace Microsoft.AspNetCore.Components.WebView.Maui
{
Expand All @@ -17,7 +17,7 @@ public class TizenWebViewManager : WebViewManager
private const string AppOrigin = "http://0.0.0.0/";

private readonly BlazorWebViewHandler _blazorMauiWebViewHandler;
private readonly TWebView _webview;
private readonly NWebView _webview;
private readonly string _contentRootRelativeToAppRoot;

/// <summary>
Expand All @@ -31,7 +31,7 @@ public class TizenWebViewManager : WebViewManager
/// <param name="jsComponents">Describes configuration for adding, removing, and updating root components from JavaScript code.</param>
/// <param name="contentRootRelativeToAppRoot">Path to the directory containing application content files.</param>
/// <param name="hostPageRelativePath">Path to the host page within the fileProvider.</param>
public TizenWebViewManager(BlazorWebViewHandler blazorMauiWebViewHandler, TWebView webview, IServiceProvider provider, Dispatcher dispatcher, IFileProvider fileProvider, JSComponentConfigurationStore jsComponents, string contentRootRelativeToAppRoot, string hostPageRelativePath)
public TizenWebViewManager(BlazorWebViewHandler blazorMauiWebViewHandler, NWebView webview, IServiceProvider provider, Dispatcher dispatcher, IFileProvider fileProvider, JSComponentConfigurationStore jsComponents, string contentRootRelativeToAppRoot, string hostPageRelativePath)
: base(provider, dispatcher, new Uri(AppOrigin), fileProvider, jsComponents, hostPageRelativePath)
{
_blazorMauiWebViewHandler = blazorMauiWebViewHandler ?? throw new ArgumentNullException(nameof(blazorMauiWebViewHandler));
Expand All @@ -58,7 +58,7 @@ protected override void NavigateCore(Uri absoluteUri)
protected override void SendMessage(string message)
{
var messageJSStringLiteral = JavaScriptEncoder.Default.Encode(message);
_webview.Eval($"__dispatchMessageCallback(\"{messageJSStringLiteral}\")");
_webview.EvaluateJavaScript($"__dispatchMessageCallback(\"{messageJSStringLiteral}\")");
}

internal void MessageReceivedInternal(Uri uri, string message)
Expand Down
42 changes: 0 additions & 42 deletions src/BlazorWebView/src/Maui/Tizen/WebViewContainer.cs

This file was deleted.

Loading