blob: d441f4b844fccaf6951ecf331ad4905b3397cc0c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
namespace Xamarin.Forms.Core.UnitTests
{
[TestFixture]
public class WebViewUnitTests : BaseTestFixture
{
[Test]
public void TestSourceImplicitConversion ()
{
var web = new WebView ();
Assert.Null (web.Source);
web.Source = "http://www.google.com";
Assert.NotNull (web.Source);
Assert.True (web.Source is UrlWebViewSource);
Assert.AreEqual ("http://www.google.com", ((UrlWebViewSource)web.Source).Url);
}
[Test]
public void TestSourceChangedPropagation ()
{
var source = new UrlWebViewSource {Url ="http://www.google.com"};
var web = new WebView { Source = source };
bool signaled = false;
web.PropertyChanged += (sender, args) => {
if (args.PropertyName == WebView.SourceProperty.PropertyName)
signaled = true;
};
Assert.False (signaled);
source.Url = "http://www.xamarin.com";
Assert.True (signaled);
}
[Test]
public void TestSourceDisconnected ()
{
var source = new UrlWebViewSource {Url="http://www.google.com"};
var web = new WebView { Source = source };
web.Source = new UrlWebViewSource {Url="Foo"};
bool signaled = false;
web.PropertyChanged += (sender, args) => {
if (args.PropertyName == WebView.SourceProperty.PropertyName)
signaled = true;
};
Assert.False (signaled);
source.Url = "http://www.xamarin.com";
Assert.False (signaled);
}
class ViewModel
{
public string HTML { get; set; } = "<html><body><p>This is a WebView!</p></body></html>";
public string URL { get; set; } = "http://xamarin.com";
}
[Test]
public void TestBindingContextPropagatesToSource ()
{
var htmlWebView = new WebView {
};
var urlWebView = new WebView {
};
var htmlSource = new HtmlWebViewSource ();
htmlSource.SetBinding (HtmlWebViewSource.HtmlProperty, "HTML");
htmlWebView.Source = htmlSource;
var urlSource = new UrlWebViewSource ();
urlSource.SetBinding (UrlWebViewSource.UrlProperty, "URL");
urlWebView.Source = urlSource;
var viewModel = new ViewModel ();
var container = new StackLayout {
BindingContext = viewModel,
Padding = new Size (20, 20),
Children = {
htmlWebView,
urlWebView
}
};
Assert.AreEqual ("<html><body><p>This is a WebView!</p></body></html>", htmlSource.Html);
Assert.AreEqual ("http://xamarin.com", urlSource.Url);
}
}
}
|