Prep WebView and renderers for removal of InternalsVisibleTo (#120)
authorE.Z. Hart <hartez@users.noreply.github.com>
Mon, 25 Apr 2016 16:26:40 +0000 (10:26 -0600)
committerRui Marinho <me@ruimarinho.net>
Mon, 25 Apr 2016 16:26:40 +0000 (12:26 -0400)
* 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

15 files changed:
Xamarin.Forms.Core/HtmlWebViewSource.cs
Xamarin.Forms.Core/IWebViewDelegate.cs [moved from Xamarin.Forms.Core/IWebViewRenderer.cs with 73% similarity]
Xamarin.Forms.Core/Internals/EvalRequested.cs [new file with mode: 0644]
Xamarin.Forms.Core/UrlWebViewSource.cs
Xamarin.Forms.Core/WebView.cs
Xamarin.Forms.Core/WebViewSource.cs
Xamarin.Forms.Core/Xamarin.Forms.Core.csproj
Xamarin.Forms.Platform.Android/Renderers/WebViewRenderer.cs
Xamarin.Forms.Platform.WP8/WebViewRenderer.cs
Xamarin.Forms.Platform.WinRT/WebViewRenderer.cs
Xamarin.Forms.Platform.iOS/Renderers/WebViewRenderer.cs
docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/EvalRequested.xml [new file with mode: 0644]
docs/Xamarin.Forms.Core/Xamarin.Forms/EvalRequested.xml [new file with mode: 0644]
docs/Xamarin.Forms.Core/Xamarin.Forms/IWebViewDelegate.xml [new file with mode: 0644]
docs/Xamarin.Forms.Core/Xamarin.Forms/IWebViewRenderer.xml [new file with mode: 0644]

index 157e505..a5eccc9 100644 (file)
@@ -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);
                }
similarity index 73%
rename from Xamarin.Forms.Core/IWebViewRenderer.cs
rename to Xamarin.Forms.Core/IWebViewDelegate.cs
index 0b1b3db..f6db223 100644 (file)
@@ -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 (file)
index 0000000..0f69792
--- /dev/null
@@ -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
index 7254104..12a0e40 100644 (file)
@@ -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);
                }
index 06a5f72..8f28497 100644 (file)
@@ -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;
 
index 6dc2635..7b4c1bf 100644 (file)
@@ -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;
        }
index a4580fd..a68ce57 100644 (file)
@@ -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" />
     <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" />
index baa1e79..24a5af5 100644 (file)
@@ -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)
index 364babe..d120cff 100644 (file)
@@ -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)
index 75ca240..78d69ab 100644 (file)
@@ -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)
index ee804a8..11ab72f 100644 (file)
@@ -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 (file)
index 0000000..95d08ee
--- /dev/null
@@ -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 (file)
index 0000000..977f6ce
--- /dev/null
@@ -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 (file)
index 0000000..fea0261
--- /dev/null
@@ -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 (file)
index 0000000..95ed347
--- /dev/null
@@ -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>