From 69ad9585e53b11df10cf43265c82a2aa78de6424 Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Sun, 21 Jul 2024 16:39:21 +0200 Subject: [PATCH 1/2] Page.IsBusy activity idicator --- .../AlertManager/AlertManager.Android.cs | 2 +- .../Issues/Issue23674.xaml.cs | 47 +++++++++++++++++++ .../Tests/Issues/Issue23674.cs | 27 +++++++++++ 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 src/Controls/tests/TestCases.HostApp/Issues/Issue23674.xaml.cs create mode 100644 src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue23674.cs diff --git a/src/Controls/src/Core/Platform/AlertManager/AlertManager.Android.cs b/src/Controls/src/Core/Platform/AlertManager/AlertManager.Android.cs index f04234b87f71..3a843b1fafd7 100644 --- a/src/Controls/src/Core/Platform/AlertManager/AlertManager.Android.cs +++ b/src/Controls/src/Core/Platform/AlertManager/AlertManager.Android.cs @@ -97,7 +97,7 @@ public void ResetBusyCount() void OnPageBusy(IView sender, bool enabled) { // Verify that the page making the request is part of this activity - if (!PageIsInThisContext(sender)) + if (!PageIsInThisContext(sender) && enabled) { return; } diff --git a/src/Controls/tests/TestCases.HostApp/Issues/Issue23674.xaml.cs b/src/Controls/tests/TestCases.HostApp/Issues/Issue23674.xaml.cs new file mode 100644 index 000000000000..d0f6ab5a9fe2 --- /dev/null +++ b/src/Controls/tests/TestCases.HostApp/Issues/Issue23674.xaml.cs @@ -0,0 +1,47 @@ +namespace Maui.Controls.Sample.Issues +{ + [XamlCompilation(XamlCompilationOptions.Compile)] + [Issue(IssueTracker.Github, 23674, "Page.IsBusy activity indicators gets stuck/causes multiple to be displayed", PlatformAffected.Android)] + public class Issue23674 : NavigationPage + { + public Issue23674() : base(new Issue23674Page1()){ } + + class Issue23674Page1 : ContentPage + { + public Issue23674Page1() + { + Content = new Button() + { + AutomationId = "button1", + VerticalOptions = LayoutOptions.Start, + Text = "Navigate to page 1", + HeightRequest = 100, + Command = new Command(async ()=> + { + await Navigation.PushAsync(new Issue23674Page2()); + }) + }; + } + } + + class Issue23674Page2 : ContentPage + { + public Issue23674Page2() + { + IsBusy = true; + Content = new Button() + { + AutomationId = "button2", + VerticalOptions = LayoutOptions.Start, + Text = "Navigate to page 2", + HeightRequest = 100, + Command = new Command(() => + { + Navigation.PopAsync(); + }) + }; + IsBusy = true; + } + } + } +} \ No newline at end of file diff --git a/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue23674.cs b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue23674.cs new file mode 100644 index 000000000000..ec9584ced97d --- /dev/null +++ b/src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue23674.cs @@ -0,0 +1,27 @@ +using NUnit.Framework; +using UITest.Appium; +using UITest.Core; + +namespace Microsoft.Maui.TestCases.Tests.Issues +{ + public class Issue23674 : _IssuesUITest + { + public override string Issue => "Page.IsBusy activity indicators gets stuck/causes multiple to be displayed"; + + public Issue23674(TestDevice device) : base(device) { } + + [Test] + [Category(UITestCategories.Page)] + public void Issue23674Test() + { + App.WaitForElement("button1"); + App.Click("button1"); + App.WaitForElement("button2"); + App.Click("button2"); + App.WaitForElement("button1"); + + // The test passes if activity indicator is not visible + VerifyScreenshot(); + } + } +} From 371d6f94fb508b81d71e995d3313f4622918c607 Mon Sep 17 00:00:00 2001 From: Jakub Florkowski Date: Wed, 30 Oct 2024 12:37:02 +0100 Subject: [PATCH 2/2] Added snapshots --- .../snapshots/android/Issue23674Test.png | Bin 0 -> 8995 bytes .../snapshots/windows/Issue23674Test.png | Bin 0 -> 6373 bytes .../snapshots/ios/Issue23674Test.png | Bin 0 -> 6671 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/Controls/tests/TestCases.Android.Tests/snapshots/android/Issue23674Test.png create mode 100644 src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/Issue23674Test.png create mode 100644 src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/Issue23674Test.png diff --git a/src/Controls/tests/TestCases.Android.Tests/snapshots/android/Issue23674Test.png b/src/Controls/tests/TestCases.Android.Tests/snapshots/android/Issue23674Test.png new file mode 100644 index 0000000000000000000000000000000000000000..c3a06e6547cde8250f50dbdcee7eab794be9ba94 GIT binary patch literal 8995 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 literal 0 HcmV?d00001 diff --git a/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/Issue23674Test.png b/src/Controls/tests/TestCases.WinUI.Tests/snapshots/windows/Issue23674Test.png new file mode 100644 index 0000000000000000000000000000000000000000..915a468195fa0e9d00ab8c6fa26aa23847435658 GIT binary patch literal 6373 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 literal 0 HcmV?d00001 diff --git a/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/Issue23674Test.png b/src/Controls/tests/TestCases.iOS.Tests/snapshots/ios/Issue23674Test.png new file mode 100644 index 0000000000000000000000000000000000000000..809fe29af14644626a1d91f225da4a7831360ce5 GIT binary patch literal 6671 zcmeHMcTg1D(jOErK?G3|1PQAb1DOQ{34#O>FG;dQfh9>2iGqZyAWBvwCy}I*T;h_w zNLaFffUpDsVF^o=ocdd>@1=V6{(rB^nW;Hv`gHf{`Az@&Ox1a&p{8_%mX#JkkR!@B z6f_Zp5`!Sr3)Bb65^t1~G`ZojxS^?vAYSJX#6JK*w#g#@X#{Z-LXg=z2qF=OAk6oY zDsD+3$bnG}6>UWTC@Lyi*@XUCc+m(){shDeq!VCu3x?;x<~_XahJiWw_!ZW+;pihs zXo0O=2&{#nd1xF18b9cph1wCASb_uI;8g)%=0Nx*)PDt$XxQF`TN!Z32SyiwHxd$C zfz}VaD`002a(du#4SZXMvH^%~hJ|&|%7lXtp)Vjt3B5D0u>+esFuMvtAAmrD(g6so zhqiC9y9Zwvp@INOt?=|ONb7)^RhVA~;tGV<1GWzedI1#z_;HA8g1<(ADG;W=L+dx- ze-6oQkkSUP+5wXfgCwwi4^+P3Sq_Ykf%ysS??dqykcOn_J{C?vz#Q20Cp7a~9{9q9aFY!P&_fZ7+h z!@#lteh&i*Z|Il=rBvVwf$T1L-U#%6!lN3v7y&M&a54}~b3r#79#+DgT;Pd>sTF9S z1jQ6E$pOw_kcflMDTu*?UN*e$1gipYEP|eC(9QzGx1jnO?w7!gS5P+!#yM~o3oo0X zY6!ZB;9LTvH4uz~Q$aAk1XmM4J{hhh!M$R5(+%!85RC?gM-bTn8K1zZ7z+Er;4O?S zfNL4N>jD32s2PTc2H<-RnV&!-1DeL+*$N*FEdg|7FpBm>Yd6M(1(p z!`y(=!inqQtP5xS+1uHaA~>Y8EQS-uE0W7xUtuTYs3(HFB_tzhD(h<-je{y_S=^n% zyWSJ(*WD_eRE2*zj=4(^0+QVt)6Q@SBH6nKxLIG!{zkj4?LVcyx`MT-sPz-kR+g!(JOV!Hkg_;{1;*+kRA?f!d zH}{(HB;0OV3pKHEeX%K(82G+e|3Tvxv#12Wq}c;^v)ub$KK)orvBr^j#nxao&J;aqS?|#Pv*;U>%roF z&)CuXt(h|q$6}_n!m9grZ%x~VaPPL?h~>19R4bUpY#^gfP*k z{zCbUGam0x&ylj-%s#%-lHdR$#bD2)BNQ(S3;}m+J(KY+^ zgQ}M(7bogenYZQE+fBRs#X`jHmXhAjkL5PyEZ)+^3pPp%+Hm&?gdGo@q8N0k>cGb_ zp8eWVzO^!58=QFAJ$ATn!vD+W992RXm4&9!sE-#Gt>f%8*Re`-5F1%8AFVAJRA7)5hB`EgiKYZYbPMiF$BhpD>~y$5Q5(SH3cb;%jyK^8`xdtmD4dfJ5DEsd}te zXg|lP^X>FwWA_WR#!H=C*Yeg`LWw6w`Na5Zd16Gfi{xqJm0G5nv7Jv)H{T`8oAyqU z*{O)fSd4e`Tl8qE;zPsxQCr<5D5(TN{;SdfO)Cv&Fj@5rMD1;9ljG<~PX|=g)iZvt zhwS>lNY&&xl{7IrZ@p+Ko%3QJ;x)_`P+bhJt=gFvQ&cW-na=t7ap>Yn&A3eu+cax@ zTl|hEBdvOaRCDUlE#0BDnTM8)=$Y#cdc4xvt90?RWbZDf_S&i5gxcFWiFYHMnkH?d z9h!pHsUEQE#%#E<^)x#1JoajE$Ga+{IFFpqC@IX;PYpAV6|+ ze=cX`n3=3;v9bNn?h8*HL`iL^7~&rikC*9jxYz~CNnrZ3QfKbYyqu~ygGpg9b6e9R z8PUX#Oq2w+jRpxYdqf-0FO$plJHiNOnNL}feD3ClyE_ZGo{%-}-j1|_+52+8y||0V zjE01j>B&z$V@sgwCiQyw)*eF_nZF8sDx=rHZ!Ox-g!&#BE)o)EiT@nhe-cgA)Yu*T z#j_@dbT`6tXtbuP(BayUyQy^$3tCKYLHu3@S2CC?7x0!&YQMqi-9cafMji<+u5szoDqe{J4(QaTGpfXHO znIcpB)7bLD9BECi)4BsO0&XYW+;5=1Yi9b~p{`^%{zu?5)bW$4jw5L-sRojPOP*NU zZkOmt<<7?aKiqFqr-xjc?5FM4^D?pVQFiXypX@1go5;jpNa>Jq_M%pI%qQc1f_n1( zKn4?PsJ9mt*fv;LZkKagPjmSHK_|PnkJx4B+0rX?q8rOKZ`Dd;MK4ot_pg%n>>3i# zm=v`|HE}VShWJgR3-VcxRou?Y=?zbqZ0X9^KP$(%Z?7Gym-ey`mf!pK#>!&Q z5k+!U(hItd-z{F-95$P=jm65VVIArBv}2E>BV7YkCY+0`@EP)Rug)@C4^*A+INal> zc_e-nXCRg2ru3Yy%JYhbGn$4VRf|-9m){YkA9rTpe6iNoHBoXt zc8cA1DJ!LtD0nP&qp#7>mrB?7UEy2b;7dQ2LIu36-#Pw@osu$#R%GT-tWtFQ;PRB9 zzLsrRh1;0msFdIIbAnfBviSU@&f#;PNeMwJu1$5E{0RiC^LH&$9C(lfuR;V}5X)nSI0YNmI;|ws3K(SGH!`RZ~+Bx8kz9kBkR?H10kb z^i$3)t+M_+R$p{wthc2>e3e z7XrT!_=UhP1pbE+uvY>GYie!fXSH-V@@ptq>ML8RsvsAtc0a?LGf51`bXbTdN2E*}zER<1Mnmg}=|>YU^O>;%eq_ z??2ld790;J+no4eW9eyYC80>ZsasjOSh^x2;(T0P>+G%MakjsYYuI{P+UqNjJv+MC tIyoZ3!e~)GF5zO&qJLMr{SP&?sK{kLE_stZZn7Gptf;1tFL&qB{{e?}#=-yq literal 0 HcmV?d00001