Fix failing UI tests for Android FormsApplicationActivity (#1141)

* Fix broken test for 57910 when using FormsApplicationActivity

* Fix NRE when removing a page during OnAppearing using FormsApplicationActivity

* Update 45926 test to work correctly with FormsApplicationActivity

* Update 32830 test so it doesn't crash on FormsApplicationActivity

* Longer wait before refreshing appearing messages (to work with FormsApplicationActivity)

* Fix input transparency issue with old FrameRenderer

* Remove extraneous using directive

* Just ignore test 32830 on FormsApplicationActivity

* [Controls] Add missing directive
This commit is contained in:
E.Z. Hart 2017-09-15 08:37:09 -06:00 коммит произвёл Rui Marinho
Родитель 0314360850
Коммит fc6d571e8a
6 изменённых файлов: 51 добавлений и 4 удалений

Просмотреть файл

@ -533,15 +533,27 @@ namespace Xamarin.Forms.ControlGallery.Android
// } // }
// } // }
public class NoFlashTestNavigationPage : Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer public class NoFlashTestNavigationPage
#if FORMS_APPLICATION_ACTIVITY
: Xamarin.Forms.Platform.Android.NavigationRenderer
#else
: Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer
#endif
{ {
#if !FORMS_APPLICATION_ACTIVITY
protected override void SetupPageTransition(global::Android.Support.V4.App.FragmentTransaction transaction, bool isPush) protected override void SetupPageTransition(global::Android.Support.V4.App.FragmentTransaction transaction, bool isPush)
{ {
transaction.SetTransition((int)FragmentTransit.None); transaction.SetTransition((int)FragmentTransit.None);
} }
#endif
} }
public class QuickCollectNavigationPage : Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer public class QuickCollectNavigationPage
#if FORMS_APPLICATION_ACTIVITY
: Xamarin.Forms.Platform.Android.NavigationRenderer
#else
: Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer
#endif
{ {
bool _disposed; bool _disposed;
NavigationPage _page; NavigationPage _page;

Просмотреть файл

@ -133,6 +133,8 @@ namespace Xamarin.Forms.Controls.Issues
[Test] [Test]
public void Bugzilla32830Test() public void Bugzilla32830Test()
{ {
IgnoreFormsApplicationActivity();
RunningApp.WaitForElement(q => q.Marked(BottomLabel)); RunningApp.WaitForElement(q => q.Marked(BottomLabel));
RunningApp.WaitForElement(q => q.Marked(Button1)); RunningApp.WaitForElement(q => q.Marked(Button1));
RunningApp.Tap(q => q.Marked(Button1)); RunningApp.Tap(q => q.Marked(Button1));
@ -140,6 +142,16 @@ namespace Xamarin.Forms.Controls.Issues
RunningApp.Tap(q => q.Marked(Button2)); RunningApp.Tap(q => q.Marked(Button2));
RunningApp.WaitForElement(q => q.Marked(BottomLabel)); RunningApp.WaitForElement(q => q.Marked(BottomLabel));
} }
static void IgnoreFormsApplicationActivity()
{
#if __ANDROID__
if (AppSetup.IsFormsApplicationActivity)
{
Assert.Ignore("This test only applies to FormsAppCompatActivity.");
}
#endif
}
#endif #endif
} }
} }

Просмотреть файл

@ -1,5 +1,6 @@
using System; using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks;
using Xamarin.Forms.CustomAttributes; using Xamarin.Forms.CustomAttributes;
using Xamarin.Forms.Internals; using Xamarin.Forms.Internals;
@ -66,9 +67,12 @@ namespace Xamarin.Forms.Controls.Issues
RunningApp.WaitForElement (q => q.Marked ("New Page")); RunningApp.WaitForElement (q => q.Marked ("New Page"));
RunningApp.Tap (q => q.Marked ("New Page")); RunningApp.Tap (q => q.Marked ("New Page"));
RunningApp.WaitForElement (q => q.Marked ("Second Page #1"));
RunningApp.Back(); RunningApp.Back();
RunningApp.WaitForElement (q => q.Marked ("Intermediate Page"));
RunningApp.Back(); RunningApp.Back();
RunningApp.Tap(q => q.Marked("Do GC")); RunningApp.Tap(q => q.Marked("Do GC"));
RunningApp.Tap(q => q.Marked("Do GC"));
RunningApp.Tap(q => q.Marked("Send Message")); RunningApp.Tap(q => q.Marked("Send Message"));
RunningApp.Tap(q => q.Marked("Do GC")); RunningApp.Tap(q => q.Marked("Do GC"));
@ -81,6 +85,10 @@ namespace Xamarin.Forms.Controls.Issues
[Preserve(AllMembers = true)] [Preserve(AllMembers = true)]
public class _45926IntermediatePage : ContentPage public class _45926IntermediatePage : ContentPage
{ {
public _45926IntermediatePage()
{
Content = new Label { Text = "Intermediate Page" };
}
} }
[Preserve(AllMembers = true)] [Preserve(AllMembers = true)]

Просмотреть файл

@ -109,7 +109,8 @@ namespace Xamarin.Forms.Controls
protected override void OnAppearing () protected override void OnAppearing ()
{ {
base.OnAppearing (); base.OnAppearing ();
Device.StartTimer (new TimeSpan (200), () => {
Device.StartTimer (TimeSpan.FromMilliseconds(750), () => {
_listMessages.ItemsSource = App.AppearingMessages; _listMessages.ItemsSource = App.AppearingMessages;
return false; return false;
}); });

Просмотреть файл

@ -1,6 +1,7 @@
using System.ComponentModel; using System.ComponentModel;
using Android.Graphics; using Android.Graphics;
using Android.Graphics.Drawables; using Android.Graphics.Drawables;
using Android.Views;
using AButton = Android.Widget.Button; using AButton = Android.Widget.Button;
using ACanvas = Android.Graphics.Canvas; using ACanvas = Android.Graphics.Canvas;
using GlobalResource = Android.Resource; using GlobalResource = Android.Resource;
@ -10,6 +11,7 @@ namespace Xamarin.Forms.Platform.Android
public class FrameRenderer : VisualElementRenderer<Frame> public class FrameRenderer : VisualElementRenderer<Frame>
{ {
bool _disposed; bool _disposed;
readonly MotionEventHelper _motionEventHelper = new MotionEventHelper();
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
@ -22,6 +24,14 @@ namespace Xamarin.Forms.Platform.Android
} }
} }
public override bool OnTouchEvent(MotionEvent e)
{
if (base.OnTouchEvent(e))
return true;
return _motionEventHelper.HandleMotionEvent(Parent, e);
}
protected override void OnElementChanged(ElementChangedEventArgs<Frame> e) protected override void OnElementChanged(ElementChangedEventArgs<Frame> e)
{ {
base.OnElementChanged(e); base.OnElementChanged(e);
@ -30,6 +40,7 @@ namespace Xamarin.Forms.Platform.Android
{ {
UpdateBackground(); UpdateBackground();
UpdateCornerRadius(); UpdateCornerRadius();
_motionEventHelper.UpdateElement(e.NewElement);
} }
} }

Просмотреть файл

@ -287,7 +287,10 @@ namespace Xamarin.Forms.Platform.Android
} }
s_currentAnimation = null; s_currentAnimation = null;
tcs.TrySetResult(true); tcs.TrySetResult(true);
((Platform)Element.Platform).NavAnimationInProgress = false; if (Element?.Platform != null)
{
((Platform)Element.Platform).NavAnimationInProgress = false;
}
} }); } });
} }
} }