);
// NOTE: Currently the ability to programmatically enable/disable mixed content only exists on Android
+ // NOTE: Currently the ability to programmatically enable/disable zoom only exists on Android
if (Device.RuntimePlatform == Device.Android)
{
var mixedContentTestPage = "https://mixed-content-test.appspot.com/";
Url = mixedContentTestPage
};
+ var enableZoomControlsWebView = new WebView() { HeightRequest = 200 };
+ enableZoomControlsWebView.On<Android>().SetEnableZoomControls(true);
+ enableZoomControlsWebView.On<Android>().SetDisplayZoomControls(false);
+ enableZoomControlsWebView.Source = new UrlWebViewSource
+ {
+ Url = "https://www.xamarin.com"
+ };
+
+ var displayZoomControlsWebView = new WebView() { HeightRequest = 200 };
+ displayZoomControlsWebView.On<Android>().SetEnableZoomControls(true);
+ displayZoomControlsWebView.On<Android>().SetDisplayZoomControls(true);
+ displayZoomControlsWebView.Source = new UrlWebViewSource
+ {
+ Url = "https://www.xamarin.com"
+ };
+
var mixedContentDisallowedContainer = new ViewContainer<WebView>(Test.WebView.MixedContentDisallowed,
mixedContentDisallowedWebView);
var mixedContentAllowedContainer = new ViewContainer<WebView>(Test.WebView.MixedContentAllowed,
mixedContentAllowedWebView);
+ var enableZoomControlsContainer = new ViewContainer<WebView>(Test.WebView.EnableZoomControls,
+ enableZoomControlsWebView);
+ var displayZoomControlsWebViewContainer = new ViewContainer<WebView>(Test.WebView.DisplayZoomControls,
+ displayZoomControlsWebView);
+
Add(mixedContentDisallowedContainer);
Add(mixedContentAllowedContainer);
+ Add(enableZoomControlsContainer);
+ Add(displayZoomControlsWebViewContainer);
}
}
[Test]
+ public void TestEnableZoomControls()
+ {
+ var defaultWebView = new WebView();
+
+ var enableZoomControlsWebView = new WebView();
+ enableZoomControlsWebView.On<Android>().SetEnableZoomControls(true);
+
+ Assert.AreEqual(defaultWebView.On<Android>().EnableZoomControls(), false);
+ Assert.AreEqual(enableZoomControlsWebView.On<Android>().EnableZoomControls(), true);
+ }
+
+ [Test]
+ public void TestDisplayZoomControls()
+ {
+ var defaultWebView = new WebView();
+
+ var displayZoomControlsWebView = new WebView();
+ displayZoomControlsWebView.On<Android>().SetDisplayZoomControls(false);
+
+ Assert.AreEqual(defaultWebView.On<Android>().DisplayZoomControls(), true);
+ Assert.AreEqual(displayZoomControlsWebView.On<Android>().DisplayZoomControls(), false);
+ }
+
+ [Test]
public void TestWindowsSetAllowJavaScriptAlertsFlag()
{
var defaultWebView = new WebView();
SetMixedContentMode(config.Element, value);
return config;
}
+
+ public static readonly BindableProperty EnableZoomControlProperty = BindableProperty.Create("EnableZoomControls", typeof(bool), typeof(FormsElement), false);
+
+ public static bool GetEnableZoomControls(FormsElement element)
+ {
+ return (bool)element.GetValue(EnableZoomControlProperty);
+ }
+
+ public static void SetEnableZoomControls(FormsElement element, bool value)
+ {
+ element.SetValue(EnableZoomControlProperty, value);
+ }
+
+ public static bool EnableZoomControls(this IPlatformElementConfiguration<Android, FormsElement> config)
+ {
+ return GetEnableZoomControls(config.Element);
+ }
+
+ public static IPlatformElementConfiguration<Android, FormsElement> SetEnableZoomControls(this IPlatformElementConfiguration<Android, FormsElement> config, bool value)
+ {
+ SetEnableZoomControls(config.Element, value);
+ return config;
+ }
+
+ public static readonly BindableProperty DisplayZoomControlsProperty = BindableProperty.Create("DisplayZoomControls", typeof(bool), typeof(FormsElement), true);
+
+ public static bool GetDisplayZoomControls(FormsElement element)
+ {
+ return (bool)element.GetValue(DisplayZoomControlsProperty);
+ }
+
+ public static void SetDisplayZoomControls(FormsElement element, bool value)
+ {
+ element.SetValue(DisplayZoomControlsProperty, value);
+ }
+
+ public static bool DisplayZoomControls(this IPlatformElementConfiguration<Android, FormsElement> config)
+ {
+ return GetDisplayZoomControls(config.Element);
+ }
+
+ public static IPlatformElementConfiguration<Android, FormsElement> SetDisplayZoomControls(this IPlatformElementConfiguration<Android, FormsElement> config, bool value)
+ {
+ SetDisplayZoomControls(config.Element, value);
+ return config;
+ }
}
}
MixedContentDisallowed,
MixedContentAllowed,
JavaScriptAlert,
- EvaluateJavaScript
+ EvaluateJavaScript,
+ EnableZoomControls,
+ DisplayZoomControls
}
public enum UrlWebViewSource
newElementController.ReloadRequested += OnReloadRequested;
UpdateMixedContentMode();
+ UpdateEnableZoomControls();
+ UpdateDisplayZoomControls();
}
Load();
case "MixedContentMode":
UpdateMixedContentMode();
break;
+ case "EnableZoomControls":
+ UpdateEnableZoomControls();
+ break;
+ case "DisplayZoomControls":
+ UpdateDisplayZoomControls();
+ break;
}
}
}
}
+ void UpdateEnableZoomControls()
+ {
+ var value = Element.OnThisPlatform().EnableZoomControls();
+ Control.Settings.SetSupportZoom(value);
+ Control.Settings.BuiltInZoomControls = value;
+ }
+
+ void UpdateDisplayZoomControls()
+ {
+ Control.Settings.DisplayZoomControls = Element.OnThisPlatform().DisplayZoomControls();
+ }
+
class JavascriptResult : Java.Lang.Object, IValueCallback
{
TaskCompletionSource<string> source;