Skip to content
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

Merge net8.0 into release/8.0.1xx-preview1 #13441

Merged
merged 158 commits into from
Feb 18, 2023
Merged

Conversation

Redth
Copy link
Member

@Redth Redth commented Feb 18, 2023

Picks up the rest of the net8.0 changes for the release branch for net8 preview1.

Importantly this brings in the NuGet changes to move more parts of MAUI back into NuGet packages, as well as the implicit reference to the compat package which fixes Live Visual Tree until VS is updated to account for the possible non-existence of the reference.

jsuarezruiz and others added 30 commits November 29, 2022 10:54
…s for Android (#12264)

* Android 12 has a new Bluetooth (runtime) permission scheme
* there are three different flavours; we request those that are present in the manifest
* add Microsoft.Maui.ApplicationModel.Permissions.Bluetooth
# Conflicts:
#	src/Controls/src/Core/IOpenGlViewController.cs
#	src/Controls/src/Core/OpenGLView.cs
### Description of Change

Correctly render ContentPage brushes background on iOS/Catalyst.

<img width="346" alt="Captura de pantalla 2022-11-29 a las 10 55 29"
src="https://user-images.githubusercontent.com/6755973/204498173-44fee04c-2e26-4233-9c3c-bc6423bdc129.png">
<img width="464" alt="Captura de pantalla 2022-11-29 a las 10 45 23"
src="https://user-images.githubusercontent.com/6755973/204498190-9f0c8f81-ad80-4e83-a898-914c6dc640ec.png">

### Issues Fixed

Fixes #11714
### Description of Change

`OpenGLView` was deprecated for net7, let's remove it for net8
To supporting user theming of app icons I've added the monochrome element to the AdaptiveIconDrawableXml
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Removing references to handler PRs, since those have been done for ages.
…uild main-47a1df7b6911dc30b52164766984d3ed3c4f004e-1

Microsoft.Android.Sdk.Windows
 From Version 34.0.0-preview.1.147 -> To Version 34.0.0-preview.2.148
* Fixes Windows DatePicker format

* Fixes 'ddd' day format

* Fixes test

---------

Co-authored-by: Andrés Giudici <agiudici@tpssa.com.ar>
### Description of Change

Disable codeQL to try see if it's related with failures we saw on main
on DevDiv

```
/Users/builder/azdo/_work/1/s/tools/NuGet.CommandLine.5.8.1/tools/NuGet.exe is a .NET Framework executable, you might need to install Mono for it to execute successfully.
Executing: /Users/builder/azdo/_work/1/s/tools/NuGet.CommandLine.5.8.1/tools/NuGet.exe install "_NativeAssets.windows" -OutputDirectory "/Users/builder/azdo/_work/1/s/artifacts/additional-assets" -Version "0.0.0-commit.193b587552cb0ed39372a049d7e6c692db98c267.483" -ExcludeVersion -Source "[https://aka.ms/skiasharp-eap/index.json"](https://aka.ms/skiasharp-eap/index.json%22) -NonInteractive
An error occurred when executing task 'dotnet-pack-additional'.
Error: System.AggregateException: One or more errors occurred. (An error occurred trying to start process '/Users/builder/azdo/_work/1/s/tools/NuGet.CommandLine.5.8.1/tools/NuGet.exe' with working directory '/Users/builder/azdo/_work/1/s'. Exec format error)
```
…11710)

* (#11641) Added support for ResponseDecoder passed in the options.

* (#11641) Added CallbackUri as an optional property of the WebAuthenticatorResult

* (#11641) Added to Public API

* (#11641) Added IWebAuthenticatorResponseDecoder to public API

* (#11641) Added changes to WebAuthenticatorOptions to public API.

* (#11641) Split the ctor for WebAuthenticatorResult so there is no breaking change in public API.

* (#11641) Added public API definition for tizen

* Update src/Essentials/src/WebAuthenticator/WebAuthenticator.shared.cs

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>

* Update src/Essentials/src/WebAuthenticator/WebAuthenticatorResult.shared.cs

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>

* Update src/Essentials/src/PublicAPI/net-android/PublicAPI.Unshipped.txt

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>

* Update src/Essentials/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>

* Update src/Essentials/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>

* Update src/Essentials/src/PublicAPI/net-tizen/PublicAPI.Unshipped.txt

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>

* Update src/Essentials/src/PublicAPI/net-windows/PublicAPI.Unshipped.txt

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>

* Update src/Essentials/src/PublicAPI/net/PublicAPI.Unshipped.txt

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>

* Update src/Essentials/src/PublicAPI/netstandard/PublicAPI.Unshipped.txt

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>

* (#11641) Moved docs into XML comments.

* (#11641) docs to XML comments

* (#11641) Removed XML docs for WebAuthenticator

* (#11641) Correct runfails for included xml fragments

---------

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>
BioTurboNick and others added 20 commits February 16, 2023 14:32
…ner (#13153) Fixes #13152

* At a minimum, call the base method

* Copy pattern from elsewhere in MAUI

* Implement requested changes
* Clarify test

* - fix spelling
### Description of Change

Weekly merge of main to net8.0 branch
Bumps Microsoft.Web.WebView2 from 1.0.1518.46 to 1.0.1587.40.

---
updated-dependencies:
- dependency-name: Microsoft.Web.WebView2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
) Fixes #12219

* Fix crash adding items to CollectionView on Android navigating

* Changes in test
* [iOS] Don't update the offset if there's no space available

* [iOS] Use the MauiLabel to set a label with insets

Using the constrains was keeping the UITextView from scrolling
* Fix issue using Shell FlyoutBackground on Windows

* Changes based on PR feedback

* Changes based on PR feedback

* Updated test

* Update src/Controls/tests/DeviceTests/Elements/Shell/ShellTests.Windows.cs

Co-authored-by: Manuel de la Pena <mandel@microsoft.com>

* Add missing ;

---------

Co-authored-by: Manuel de la Pena <mandel@microsoft.com>
Fixes: #12039
Fixes: #10560
Context: https://github.com/Vroomer/MAUI-master-detail-memory-leak
Context: https://github.com/symbiogenesis/Maui.DataGrid/tree/memory-leak

In investigating various MAUI samples, I found the following object
leaking:

    WeakPropertyChangedProxy (referenced by ->)
        TypedBinding
        Binding

In ~2016, I contributed a fix to Xamarin.Forms:

xamarin/Xamarin.Forms@f6febd4

Back then, this solved the follow case:

1. You have a long-lived `ViewModel` class. Could be a singleton, etc.

2. Data-bind a `View` to this `ViewModel`.

3. The `ViewModel` indefinitely held on to any object that subscribed
   to `PropertyChanged`.

At the time, this solved a huge memory leak, because a data-bound
`View` would have a reference to its parent, then to its parent, etc.
Effectively this was leaking entire `Page`'s at the time.

Unfortunately, there was still a flaw in this change...
`WeakPropertyChangedProxy` hangs around forever instead! I could
reproduce this problem in unit tests, by accessing various internal
members through reflection -- asserting they were alive or not.

We do have another layer of indirection, where other objects are GC'd
that can free the `WeakPropertyChangedProxy`, such as:

    // Regular Binding
    ~BindingExpressionPart() => _listener?.Unsubscribe();
    // TypedBinding
    ~PropertyChangedProxy() => Listener?.Unsubscribe();

This means it would take two GC's for these objects to go away, but it
is better than the alternative -- they *can* actually go away now.

After testing apps with this change, sometimes I would get an
`InvalidOperationException` in `WeakReference<T>`:

https://source.dot.net/#System.Private.CoreLib/src/libraries/System.Private.CoreLib/src/System/WeakReference.T.cs,103

So I added a parameter to `Unsubscribe(finalizer: true)`, to skip
`WeakReference<T>.SetTarget()` from finalizers.

After this change, I still found an issue! In my new unit test, the
following would hold onto a `ViemModel` object forever:

    VisualElement.BackgroundProperty.DefaultValue

This held the value of `Brush.Default`, in which
`Brush.Default.BindingContext` was the `ViewModel`!

My first thought was for `Brush.Default` to return `ImmutableBrush`:

    public static Brush Default => defaultBrush ??= new ImmutableBrush(null);

Because anyone could do `Brush.Default.Color = Colors.Red` if they liked.

When this didn't fix it, I found the underlying `_inheritedContext` is
what held a reference to my `ViewModel` object. I changed this value
to a `WeakReference`.

The types of leaks this fixes:

* Bindings to application-lifetime, singleton `ViewModel`s

* Scrolling `CollectionView`, `ListView`, etc. with data-bindings.

* Styles that were used on a `View` or `Page` that is now removed from
  the screen via navigation, de-parenting, etc.

Ok, I really think the leaks are gone now. Maybe?
…e. (#13417)

Fix missing paths, this should be the last changes that are path related
🤞
Add path to missing missing ignored path and to the source folder.
Ultimately we want this to be an implicit reference which is not included by default and opt-in, however visual studio's Live Visual tree currently depends on the assembly existing and being loaded so we cannot yet remove it.

The default property assignment can be removed once VS is ready for this.
* Add shell pages via controller instead of handler

* Auto-format source code

* - cleanup

* - add wait

* - push test into modal to isolate better

---------

Co-authored-by: GitHub Actions Autoformatter <autoformat@example.com>
* Use and clear a local nuget cache

* more
#13336)

* Have Frame use MinimumHeight/Width for minimums instead of constraints
Fixes #13074

* Auto-format source code

* Adjust test for other screen sizes/densities

* Update src/Controls/src/Core/Compatibility/Handlers/Android/FrameRenderer.cs

Co-authored-by: Manuel de la Pena <mandel@microsoft.com>

* Make legacy min Frame size a constant

* Auto-format source code

* Make Frame test less awkward

* Auto-format source code

---------

Co-authored-by: GitHub Actions Autoformatter <autoformat@example.com>
Co-authored-by: Manuel de la Pena <mandel@microsoft.com>
### Description of Change

Merge main into net8 to bring a number of CI fixes to test the unified
pipeline in net 8.
Brings especially in, the fix for adding an implicit reference to the
Combat package.
@Redth Redth requested a review from a team as a code owner February 18, 2023 19:23
@Redth Redth removed the request for review from a team February 18, 2023 19:26
@Redth Redth enabled auto-merge February 18, 2023 19:36
@Redth Redth merged commit 445f9a9 into release/8.0.1xx-preview1 Feb 18, 2023
@Redth Redth deleted the net8-release8p1 branch February 18, 2023 20:49
@samhouts samhouts added the area-infrastructure CI, Maestro / Coherency, upstream dependencies/versions label Jul 19, 2023
@github-actions github-actions bot locked and limited conversation to collaborators Dec 13, 2023
@samhouts samhouts added the fixed-in-8.0.0-preview.1.7762 Look for this fix in 8.0.0-preview.1.7762! label Aug 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-infrastructure CI, Maestro / Coherency, upstream dependencies/versions fixed-in-8.0.0-preview.1.7762 Look for this fix in 8.0.0-preview.1.7762!
Projects
None yet
Development

Successfully merging this pull request may close these issues.