From 8288b05f05842969e8b11a74ef394890a15de746 Mon Sep 17 00:00:00 2001 From: "aron.yu" Date: Tue, 3 Oct 2017 09:56:49 +0200 Subject: [PATCH] Added fix for Facebook redirecting the webview to e.g. javascript app pages after the dialog has been closed. This had the potential to lock the UI Thread due to javascript exceptions. --- winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml | 2 +- .../winsdkfb/winsdkfb.Shared/FacebookDialog.xaml.cpp | 11 +++++++++++ .../winsdkfb/winsdkfb.Shared/FacebookDialog.xaml.h | 7 ++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml b/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml index d9c4bb0..1e40b20 100644 --- a/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml +++ b/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml @@ -28,7 +28,7 @@ MinWidth="0" MinHeight="0" Width="30" Height="30" Style="{StaticResource CircleWithCrossButtonKey}" Click="CloseDialogButton_OnClick" FontFamily="Segoe UI Symbol" Margin="0,0,0,5" Foreground="White" /> - + \ No newline at end of file diff --git a/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml.cpp b/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml.cpp index 381af95..8912d21 100644 --- a/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml.cpp +++ b/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml.cpp @@ -604,6 +604,17 @@ void FacebookDialog::dialogWebView_NavCompleted( } } +void winsdkfb::FacebookDialog::dialogWebBrowser_CancelClosedRedirects( + Windows::UI::Xaml::Controls::WebView^ sender, + Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ args + ) +{ + if (!_popup || !_popup->IsOpen) { // ignore if Facebook tries to redirect webview after we have been closed + args->Cancel = true; + } +} + + void FacebookDialog::CloseDialogButton_OnClick( Object^ sender, RoutedEventArgs^ e diff --git a/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml.h b/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml.h index 59b3000..317c9bc 100644 --- a/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml.h +++ b/winsdkfb/winsdkfb/winsdkfb.Shared/FacebookDialog.xaml.h @@ -128,6 +128,11 @@ namespace winsdkfb Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs^ e ); + void dialogWebBrowser_CancelClosedRedirects( + Windows::UI::Xaml::Controls::WebView^ sender, + Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs^ args + ); + void CloseDialogButton_OnClick( Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e @@ -161,5 +166,5 @@ namespace winsdkfb Windows::UI::Xaml::Controls::Grid^ _grid; Windows::UI::Xaml::Controls::Primitives::Popup^ _popup; concurrency::task_completion_event _dialogResponse; - }; +}; }