diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2016-04-25 10:26:40 -0600 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-04-25 12:26:40 -0400 |
commit | 6c0c11960b26c4ccb3322fec04e0eb6f55d9da07 (patch) | |
tree | 2cd4f17c98a2edb8bf3ecb6a8612f2774f3db294 | |
parent | ee5654f8fe4f15817a8bd23e0613a6d0f9d4c9ec (diff) | |
download | xamarin-forms-6c0c11960b26c4ccb3322fec04e0eb6f55d9da07.tar.gz xamarin-forms-6c0c11960b26c4ccb3322fec04e0eb6f55d9da07.tar.bz2 xamarin-forms-6c0c11960b26c4ccb3322fec04e0eb6f55d9da07.zip |
Prep WebView and renderers for removal of InternalsVisibleTo (#120)
* Create custom event args class for script eval requests
Make IWebViewRenderer public
* Add IWebViewRenderer docs
* Add EvalRequested docs
* Move EvalRequested to Internals
IWebViewRenderer -> IWebViewDelegate
* Add docs
-rw-r--r-- | Xamarin.Forms.Core/HtmlWebViewSource.cs | 2 | ||||
-rw-r--r-- | Xamarin.Forms.Core/IWebViewDelegate.cs (renamed from Xamarin.Forms.Core/IWebViewRenderer.cs) | 2 | ||||
-rw-r--r-- | Xamarin.Forms.Core/Internals/EvalRequested.cs | 14 | ||||
-rw-r--r-- | Xamarin.Forms.Core/UrlWebViewSource.cs | 2 | ||||
-rw-r--r-- | Xamarin.Forms.Core/WebView.cs | 8 | ||||
-rw-r--r-- | Xamarin.Forms.Core/WebViewSource.cs | 2 | ||||
-rw-r--r-- | Xamarin.Forms.Core/Xamarin.Forms.Core.csproj | 3 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs | 7 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WP8/WebViewRenderer.cs | 9 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.WinRT/WebViewRenderer.cs | 7 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.iOS/Renderers/WebViewRenderer.cs | 7 | ||||
-rw-r--r-- | docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/EvalRequested.xml | 50 | ||||
-rw-r--r-- | docs/Xamarin.Forms.Core/Xamarin.Forms/EvalRequested.xml | 50 | ||||
-rw-r--r-- | docs/Xamarin.Forms.Core/Xamarin.Forms/IWebViewDelegate.xml | 55 | ||||
-rw-r--r-- | docs/Xamarin.Forms.Core/Xamarin.Forms/IWebViewRenderer.xml | 55 |
15 files changed, 251 insertions, 22 deletions
diff --git a/Xamarin.Forms.Core/HtmlWebViewSource.cs b/Xamarin.Forms.Core/HtmlWebViewSource.cs index 157e5054..a5eccc96 100644 --- a/Xamarin.Forms.Core/HtmlWebViewSource.cs +++ b/Xamarin.Forms.Core/HtmlWebViewSource.cs @@ -20,7 +20,7 @@ namespace Xamarin.Forms set { SetValue(HtmlProperty, value); } } - internal override void Load(IWebViewRenderer renderer) + internal override void Load(IWebViewDelegate renderer) { renderer.LoadHtml(Html, BaseUrl); } diff --git a/Xamarin.Forms.Core/IWebViewRenderer.cs b/Xamarin.Forms.Core/IWebViewDelegate.cs index 0b1b3db5..f6db223b 100644 --- a/Xamarin.Forms.Core/IWebViewRenderer.cs +++ b/Xamarin.Forms.Core/IWebViewDelegate.cs @@ -1,6 +1,6 @@ namespace Xamarin.Forms { - internal interface IWebViewRenderer + public interface IWebViewDelegate { void LoadHtml(string html, string baseUrl); void LoadUrl(string url); diff --git a/Xamarin.Forms.Core/Internals/EvalRequested.cs b/Xamarin.Forms.Core/Internals/EvalRequested.cs new file mode 100644 index 00000000..0f697922 --- /dev/null +++ b/Xamarin.Forms.Core/Internals/EvalRequested.cs @@ -0,0 +1,14 @@ +using System; + +namespace Xamarin.Forms.Internals +{ + public class EvalRequested : EventArgs + { + public string Script { get; } + + public EvalRequested(string script) + { + Script = script; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Core/UrlWebViewSource.cs b/Xamarin.Forms.Core/UrlWebViewSource.cs index 72541045..12a0e408 100644 --- a/Xamarin.Forms.Core/UrlWebViewSource.cs +++ b/Xamarin.Forms.Core/UrlWebViewSource.cs @@ -11,7 +11,7 @@ namespace Xamarin.Forms set { SetValue(UrlProperty, value); } } - internal override void Load(IWebViewRenderer renderer) + internal override void Load(IWebViewDelegate renderer) { renderer.LoadUrl(Url); } diff --git a/Xamarin.Forms.Core/WebView.cs b/Xamarin.Forms.Core/WebView.cs index 06a5f72c..8f28497c 100644 --- a/Xamarin.Forms.Core/WebView.cs +++ b/Xamarin.Forms.Core/WebView.cs @@ -1,4 +1,5 @@ using System; +using Xamarin.Forms.Internals; using Xamarin.Forms.Platform; namespace Xamarin.Forms @@ -52,9 +53,8 @@ namespace Xamarin.Forms public void Eval(string script) { - EventHandler<EventArg<string>> handler = EvalRequested; - if (handler != null) - handler(this, new EventArg<string>(script)); + EventHandler<EvalRequested> handler = EvalRequested; + handler?.Invoke(this, new EvalRequested(script)); } public void GoBack() @@ -103,7 +103,7 @@ namespace Xamarin.Forms OnPropertyChanged(SourceProperty.PropertyName); } - internal event EventHandler<EventArg<string>> EvalRequested; + internal event EventHandler<EvalRequested> EvalRequested; internal event EventHandler GoBackRequested; diff --git a/Xamarin.Forms.Core/WebViewSource.cs b/Xamarin.Forms.Core/WebViewSource.cs index 6dc2635f..7b4c1bf7 100644 --- a/Xamarin.Forms.Core/WebViewSource.cs +++ b/Xamarin.Forms.Core/WebViewSource.cs @@ -21,7 +21,7 @@ namespace Xamarin.Forms eh(this, EventArgs.Empty); } - internal abstract void Load(IWebViewRenderer renderer); + internal abstract void Load(IWebViewDelegate renderer); internal event EventHandler SourceChanged; } diff --git a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj index a4580fd6..a68ce579 100644 --- a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj +++ b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj @@ -93,6 +93,7 @@ <Compile Include="ElementEventArgs.cs" /> <Compile Include="ElementTemplate.cs" /> <Compile Include="EmailKeyboard.cs" /> + <Compile Include="Internals\EvalRequested.cs" /> <Compile Include="ExportEffectAttribute.cs" /> <Compile Include="ExpressionSearch.cs" /> <Compile Include="FileAccess.cs" /> @@ -144,7 +145,7 @@ <Compile Include="IValueProvider.cs" /> <Compile Include="IViewController.cs" /> <Compile Include="IVisualElementController.cs" /> - <Compile Include="IWebViewRenderer.cs" /> + <Compile Include="IWebViewDelegate.cs" /> <Compile Include="IXamlTypeResolver.cs" /> <Compile Include="IXmlLineInfoProvider.cs" /> <Compile Include="KeyboardFlags.cs" /> diff --git a/Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs index baa1e794..24a5af57 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs @@ -2,11 +2,12 @@ using System; using System.ComponentModel; using Android.Webkit; using Android.Widget; +using Xamarin.Forms.Internals; using AWebView = Android.Webkit.WebView; namespace Xamarin.Forms.Platform.Android { - public class WebViewRenderer : ViewRenderer<WebView, AWebView>, IWebViewRenderer + public class WebViewRenderer : ViewRenderer<WebView, AWebView>, IWebViewDelegate { bool _ignoreSourceChanges; FormsWebChromeClient _webChromeClient; @@ -116,9 +117,9 @@ namespace Xamarin.Forms.Platform.Android UpdateCanGoBackForward(); } - void OnEvalRequested(object sender, EventArg<string> eventArg) + void OnEvalRequested(object sender, EvalRequested eventArg) { - LoadUrl("javascript:" + eventArg.Data); + LoadUrl("javascript:" + eventArg.Script); } void OnGoBackRequested(object sender, EventArgs eventArgs) diff --git a/Xamarin.Forms.Platform.WP8/WebViewRenderer.cs b/Xamarin.Forms.Platform.WP8/WebViewRenderer.cs index 364babe2..d120cff8 100644 --- a/Xamarin.Forms.Platform.WP8/WebViewRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/WebViewRenderer.cs @@ -5,10 +5,11 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Navigation; using Microsoft.Phone.Controls; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.WinPhone { - public class WebViewRenderer : ViewRenderer<WebView, WebBrowser>, IWebViewRenderer + public class WebViewRenderer : ViewRenderer<WebView, WebBrowser>, IWebViewDelegate { WebNavigationEvent _eventState; bool _updating; @@ -16,7 +17,7 @@ namespace Xamarin.Forms.Platform.WinPhone public async void LoadHtml(string html, string baseUrl) { string fileName = string.Format("formslocal_{0}.html", DateTime.Now.Ticks); - ; + await SaveToIsoStore(fileName, html); Control.Navigate(new Uri(fileName, UriKind.Relative)); } @@ -80,9 +81,9 @@ namespace Xamarin.Forms.Platform.WinPhone UpdateCanGoBackForward(); } - void OnEvalRequested(object sender, EventArg<string> eventArg) + void OnEvalRequested(object sender, EvalRequested eventArg) { - Control.Dispatcher.BeginInvoke(() => Control.InvokeScript("eval", eventArg.Data)); + Control.Dispatcher.BeginInvoke(() => Control.InvokeScript("eval", eventArg.Script)); } void OnGoBackRequested(object sender, EventArgs eventArgs) diff --git a/Xamarin.Forms.Platform.WinRT/WebViewRenderer.cs b/Xamarin.Forms.Platform.WinRT/WebViewRenderer.cs index 75ca240c..78d69abd 100644 --- a/Xamarin.Forms.Platform.WinRT/WebViewRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT/WebViewRenderer.cs @@ -2,6 +2,7 @@ using System.ComponentModel; using Windows.UI.Core; using Windows.UI.Xaml.Controls; +using Xamarin.Forms.Internals; #if WINDOWS_UWP @@ -11,7 +12,7 @@ namespace Xamarin.Forms.Platform.UWP namespace Xamarin.Forms.Platform.WinRT #endif { - public class WebViewRenderer : ViewRenderer<WebView, Windows.UI.Xaml.Controls.WebView>, IWebViewRenderer + public class WebViewRenderer : ViewRenderer<WebView, Windows.UI.Xaml.Controls.WebView>, IWebViewDelegate { WebNavigationEvent _eventState; bool _updating; @@ -94,9 +95,9 @@ namespace Xamarin.Forms.Platform.WinRT UpdateCanGoBackForward(); } - async void OnEvalRequested(object sender, EventArg<string> eventArg) + async void OnEvalRequested(object sender, EvalRequested eventArg) { - await Control.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => await Control.InvokeScriptAsync("eval", new[] { eventArg.Data })); + await Control.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => await Control.InvokeScriptAsync("eval", new[] { eventArg.Script })); } void OnGoBackRequested(object sender, EventArgs eventArgs) diff --git a/Xamarin.Forms.Platform.iOS/Renderers/WebViewRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/WebViewRenderer.cs index ee804a83..11ab72f2 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/WebViewRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/WebViewRenderer.cs @@ -1,6 +1,7 @@ using System; using System.Drawing; using System.ComponentModel; +using Xamarin.Forms.Internals; #if __UNIFIED__ using UIKit; using Foundation; @@ -12,7 +13,7 @@ using MonoTouch.Foundation; namespace Xamarin.Forms.Platform.iOS { - public class WebViewRenderer : UIWebView, IVisualElementRenderer, IWebViewRenderer + public class WebViewRenderer : UIWebView, IVisualElementRenderer, IWebViewDelegate { EventTracker _events; bool _ignoreSourceChanges; @@ -134,9 +135,9 @@ namespace Xamarin.Forms.Platform.iOS UpdateCanGoBackForward(); } - void OnEvalRequested(object sender, EventArg<string> eventArg) + void OnEvalRequested(object sender, EvalRequested eventArg) { - EvaluateJavascript(eventArg.Data); + EvaluateJavascript(eventArg.Script); } void OnGoBackRequested(object sender, EventArgs eventArgs) diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/EvalRequested.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/EvalRequested.xml new file mode 100644 index 00000000..95d08ee3 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/EvalRequested.xml @@ -0,0 +1,50 @@ +<Type Name="EvalRequested" FullName="Xamarin.Forms.Internals.EvalRequested"> + <TypeSignature Language="C#" Value="public class EvalRequested : EventArgs" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit EvalRequested extends System.EventArgs" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.EventArgs</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public EvalRequested (string script);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string script) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="script" Type="System.String" /> + </Parameters> + <Docs> + <param name="script">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Script"> + <MemberSignature Language="C#" Value="public string Script { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance string Script" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/EvalRequested.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/EvalRequested.xml new file mode 100644 index 00000000..977f6ce4 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/EvalRequested.xml @@ -0,0 +1,50 @@ +<Type Name="EvalRequested" FullName="Xamarin.Forms.EvalRequested"> + <TypeSignature Language="C#" Value="public class EvalRequested : EventArgs" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit EvalRequested extends System.EventArgs" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.EventArgs</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public EvalRequested (string script);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string script) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="script" Type="System.String" /> + </Parameters> + <Docs> + <param name="script">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Script"> + <MemberSignature Language="C#" Value="public string Script { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance string Script" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IWebViewDelegate.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IWebViewDelegate.xml new file mode 100644 index 00000000..fea02618 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IWebViewDelegate.xml @@ -0,0 +1,55 @@ +<Type Name="IWebViewDelegate" FullName="Xamarin.Forms.IWebViewDelegate"> + <TypeSignature Language="C#" Value="public interface IWebViewDelegate" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IWebViewDelegate" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="LoadHtml"> + <MemberSignature Language="C#" Value="public void LoadHtml (string html, string baseUrl);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void LoadHtml(string html, string baseUrl) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="html" Type="System.String" /> + <Parameter Name="baseUrl" Type="System.String" /> + </Parameters> + <Docs> + <param name="html">To be added.</param> + <param name="baseUrl">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="LoadUrl"> + <MemberSignature Language="C#" Value="public void LoadUrl (string url);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void LoadUrl(string url) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="url" Type="System.String" /> + </Parameters> + <Docs> + <param name="url">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IWebViewRenderer.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IWebViewRenderer.xml new file mode 100644 index 00000000..95ed3472 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IWebViewRenderer.xml @@ -0,0 +1,55 @@ +<Type Name="IWebViewRenderer" FullName="Xamarin.Forms.IWebViewRenderer"> + <TypeSignature Language="C#" Value="public interface IWebViewRenderer" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IWebViewRenderer" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="LoadHtml"> + <MemberSignature Language="C#" Value="public void LoadHtml (string html, string baseUrl);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void LoadHtml(string html, string baseUrl) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="html" Type="System.String" /> + <Parameter Name="baseUrl" Type="System.String" /> + </Parameters> + <Docs> + <param name="html">To be added.</param> + <param name="baseUrl">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="LoadUrl"> + <MemberSignature Language="C#" Value="public void LoadUrl (string url);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void LoadUrl(string url) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="url" Type="System.String" /> + </Parameters> + <Docs> + <param name="url">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> |