Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions src/Mono.Android/Android.App/Dialog.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Android.Runtime;

namespace Android.App {
Expand All @@ -9,8 +8,7 @@ public partial class Dialog {
protected Dialog (Android.Content.Context context, bool cancelable, EventHandler cancelHandler)
: this (context, cancelable, new Android.Content.IDialogInterfaceOnCancelListenerImplementor () { Handler = cancelHandler }) {}

[return: MaybeNull]
public T FindViewById<T> (int id)
public T? FindViewById<T> (int id)
where T : Android.Views.View
{
return this.FindViewById (id).JavaCast<T> ();
Expand Down
10 changes: 3 additions & 7 deletions src/Mono.Android/Android.App/FragmentManager.cs
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
using System.Diagnostics.CodeAnalysis;
using Android.OS;
using Android.Runtime;

#if ANDROID_11
namespace Android.App {
public partial class FragmentManager {
[return: MaybeNull]
public T FindFragmentById<T> (int id) where T : Fragment
public T? FindFragmentById<T> (int id) where T : Fragment
{
return FindFragmentById (id).JavaCast<T> ();
}
[return: MaybeNull]
public T FindFragmentByTag<T> (string tag) where T : Fragment
public T? FindFragmentByTag<T> (string tag) where T : Fragment
{
return FindFragmentByTag (tag).JavaCast<T> ();
}
[return: MaybeNull]
public T GetFragment<T> (Bundle bundle, string key) where T : Fragment
public T? GetFragment<T> (Bundle bundle, string key) where T : Fragment
{
return GetFragment (bundle, key).JavaCast<T> ();
}
Expand Down
2 changes: 1 addition & 1 deletion src/Mono.Android/Android.Graphics/Color.cs
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ public override void DestroyGenericArgumentState (Color value, ref JniValueMarsh

public override Expression CreateParameterToManagedExpression (JniValueMarshalerContext context, ParameterExpression sourceValue, ParameterAttributes synchronize, Type targetType)
{
var c = typeof (Color).GetConstructor (new[]{typeof (int)});
var c = typeof (Color).GetConstructor (new[]{typeof (int)})!;
var v = Expression.Variable (typeof (Color), sourceValue.Name + "_val");
context.LocalVariables.Add (v);
context.CreationStatements.Add (Expression.Assign (v, Expression.New (c, sourceValue)));
Expand Down
3 changes: 1 addition & 2 deletions src/Mono.Android/Android.OS/AsyncTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,8 @@ public AsyncTask ()
}

static IntPtr id_get;
[return: MaybeNull]
[Register ("get", "()Ljava/lang/Object;", "")]
public TResult GetResult ()
public TResult? GetResult ()
{
if (id_get == IntPtr.Zero)
id_get = JNIEnv.GetMethodID (class_ref, "get", "()Ljava/lang/Object;");
Expand Down
2 changes: 1 addition & 1 deletion src/Mono.Android/Android.Runtime/JNIEnv.cs
Original file line number Diff line number Diff line change
Expand Up @@ -747,7 +747,7 @@ public static void CopyArray (IntPtr src, string[] dest)

static TValue GetConverter<TValue>(Dictionary<Type, TValue> dict, Type? elementType, IntPtr array)
{
TValue converter;
TValue? converter;

if (elementType != null) {
if (elementType.IsEnum)
Expand Down
3 changes: 1 addition & 2 deletions src/Mono.Android/Android.Runtime/JavaCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -386,8 +386,7 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()
return GetEnumerator ()!;
}

[return: MaybeNull]
public IEnumerator<T> GetEnumerator ()
public IEnumerator<T?> GetEnumerator ()
{
return System.Linq.Extensions.ToEnumerator_Dispose<T> (Iterator());
}
Expand Down
3 changes: 1 addition & 2 deletions src/Mono.Android/Android.Runtime/JavaDictionary.cs
Original file line number Diff line number Diff line change
Expand Up @@ -444,8 +444,7 @@ public JavaDictionary (IDictionary<K, V> items) : this ()
//
// https://developer.android.com/reference/java/util/Map#get(java.lang.Object)
//
[return: MaybeNull]
internal V Get (K key)
internal V? Get (K key)
{
if (id_get == IntPtr.Zero)
id_get = JNIEnv.GetMethodID (map_class, "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
Expand Down
6 changes: 2 additions & 4 deletions src/Mono.Android/Android.Runtime/JavaList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -727,8 +727,7 @@ public JavaList (IEnumerable<T> items) : this ()
//
// https://developer.android.com/reference/java/util/List.html?hl=en#get(int)
//
[return: MaybeNull]
internal unsafe T InternalGet (int location)
internal unsafe T? InternalGet (int location)
{
const string id = "get.(I)Ljava/lang/Object;";
JniObjectReference obj;
Expand Down Expand Up @@ -880,8 +879,7 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()
return GetEnumerator ()!;
}

[return: MaybeNull]
public IEnumerator<T> GetEnumerator ()
public IEnumerator<T?> GetEnumerator ()
{
return System.Linq.Extensions.ToEnumerator_Dispose<T> (Iterator ());
}
Expand Down
1 change: 0 additions & 1 deletion src/Mono.Android/Android.Runtime/JavaSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,6 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()
return GetEnumerator ()!;
}

[return: MaybeNull]
public IEnumerator<T> GetEnumerator ()
{
return System.Linq.Extensions.ToEnumerator_Dispose<T> (Iterator ());
Expand Down
25 changes: 15 additions & 10 deletions src/Mono.Android/Android.Runtime/XmlPullParserReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public QName (XmlPullParserReader r, string name)
}

public string LocalName;
public string Namespace;
public string? Namespace;
}

public XmlPullParserReader (IJavaObject source)
Expand Down Expand Up @@ -140,7 +140,7 @@ public override bool EOF {
throw new ArgumentOutOfRangeException ();
}

public override string? GetAttribute (string localName, string namespaceName)
public override string? GetAttribute (string localName, string? namespaceName)
{
return namespaceName == xmlns_uri ? source.GetNamespace (localName) : source.GetAttributeValue (namespaceName, localName);
}
Expand Down Expand Up @@ -179,7 +179,7 @@ public override string? LocalName {
}
}

public override string LookupNamespace (string prefix)
public override string? LookupNamespace (string prefix)
{
return nsmgr.LookupNamespace (prefix);
}
Expand All @@ -192,7 +192,7 @@ public override void MoveToAttribute (int i)
attr_value = false;
}

public override bool MoveToAttribute (string localName, string namespaceName)
public override bool MoveToAttribute (string localName, string? namespaceName)
{
if (namespaceName == xmlns_uri) {
for (int i = 0; i < ns_count; i++)
Expand Down Expand Up @@ -251,7 +251,7 @@ public override string? Name {
get { return String.IsNullOrEmpty (Prefix) ? LocalName : Prefix + ':' + LocalName; }
}

public override XmlNameTable NameTable {
public override XmlNameTable? NameTable {
get { return nsmgr.NameTable; }
}

Expand Down Expand Up @@ -297,9 +297,14 @@ public override XmlNodeType NodeType {
}
}

public override string Prefix {
public override string? Prefix {
// getPrefix(), getAttributePrefix(), getNamespacePrefix() are not supported!!!
get { return nsmgr.LookupPrefix (NamespaceURI); }
get {
if (NamespaceURI is null)
return null;

return nsmgr.LookupPrefix (NamespaceURI);
}
}

public override bool Read ()
Expand Down Expand Up @@ -331,14 +336,14 @@ public override bool Read ()
if (wasEmptyElement || NodeType == XmlNodeType.EndElement)
nsmgr.PopScope ();
if (NodeType == XmlNodeType.Element) {
if (NamespaceURI != String.Empty && nsmgr.LookupPrefix (NamespaceURI) != String.Empty)
if (!string.IsNullOrEmpty (NamespaceURI) && nsmgr.LookupPrefix (NamespaceURI) != String.Empty)
nsmgr.AddNamespace (String.Empty, NamespaceURI);
else if (NamespaceURI == String.Empty && nsmgr.DefaultNamespace != String.Empty)
nsmgr.AddNamespace (String.Empty, String.Empty);
for (int i = 0; i < source.AttributeCount; i++) {
string? ns = source.GetAttributeNamespace (i);
if (ns != String.Empty && nsmgr.LookupPrefix (ns) == null)
nsmgr.AddNamespace ("p" + i, source.GetAttributeNamespace (i));
if (!string.IsNullOrEmpty (ns) && nsmgr.LookupPrefix (ns) == null)
nsmgr.AddNamespace ("p" + i, ns);
}
nsmgr.PushScope ();
}
Expand Down
11 changes: 7 additions & 4 deletions src/Mono.Android/Android.Runtime/XmlReaderPullParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,11 @@ public int GetIdAttributeResourceValue (int defaultValue)
return GetAttributeResourceValue (null, "id", defaultValue);
}

public string ClassAttribute {
public string? ClassAttribute {
get { return GetAttributeValue (null, "class"); }
}

public string IdAttribute {
public string? IdAttribute {
get { return GetAttributeValue (null, "id"); }
}

Expand Down Expand Up @@ -181,8 +181,11 @@ public string GetAttributeValue (int index)
return r.GetAttribute (index);
}

public string GetAttributeValue (string? namespaceURI, string? name)
public string? GetAttributeValue (string? namespaceURI, string? name)
{
if (name is null)
return null;

return r.GetAttribute (name, namespaceURI);
}

Expand All @@ -196,7 +199,7 @@ public bool GetFeature (string? name)
return false;
}

public string GetNamespace (string? prefix)
public string? GetNamespace (string prefix)
{
return r.LookupNamespace (prefix);
}
Expand Down
12 changes: 6 additions & 6 deletions src/Mono.Android/Android.Telephony/CellInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Android.Telephony {

public partial class CellInfo {

static Delegate cb_getCellIdentity;
static Delegate? cb_getCellIdentity;
#pragma warning disable 0169
static Delegate GetGetCellIdentityHandler ()
{
Expand All @@ -20,7 +20,7 @@ static Delegate GetGetCellIdentityHandler ()

static IntPtr n_GetCellIdentity (IntPtr jnienv, IntPtr native__this)
{
Android.Telephony.CellInfo __this = global::Java.Lang.Object.GetObject<Android.Telephony.CellInfo> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
var __this = global::Java.Lang.Object.GetObject<Android.Telephony.CellInfo> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
return JNIEnv.ToLocalJniHandle (__this.CellIdentity);
}
#pragma warning restore 0169
Expand All @@ -32,15 +32,15 @@ public unsafe virtual Android.Telephony.CellIdentity CellIdentity {
const string __id = "getCellIdentity.()Landroid/telephony/CellIdentity;";
try {
var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod (__id, this, null);
return global::Java.Lang.Object.GetObject<Android.Telephony.CellIdentity> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
return global::Java.Lang.Object.GetObject<Android.Telephony.CellIdentity> (__rm.Handle, JniHandleOwnership.TransferLocalRef)!;
}
catch (Java.Lang.NoSuchMethodError) {
throw new Java.Lang.AbstractMethodError (__id);
}
}
}

static Delegate cb_getCellSignalStrength;
static Delegate? cb_getCellSignalStrength;
#pragma warning disable 0169
static Delegate GetGetCellSignalStrengthHandler ()
{
Expand All @@ -51,7 +51,7 @@ static Delegate GetGetCellSignalStrengthHandler ()

static IntPtr n_GetCellSignalStrength (IntPtr jnienv, IntPtr native__this)
{
Android.Telephony.CellInfo __this = global::Java.Lang.Object.GetObject<Android.Telephony.CellInfo> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
var __this = global::Java.Lang.Object.GetObject<Android.Telephony.CellInfo> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
return JNIEnv.ToLocalJniHandle (__this.CellSignalStrength);
}
#pragma warning restore 0169
Expand All @@ -63,7 +63,7 @@ public unsafe virtual Android.Telephony.CellSignalStrength CellSignalStrength {
const string __id = "getCellSignalStrength.()Landroid/telephony/CellSignalStrength;";
try {
var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod (__id, this, null);
return global::Java.Lang.Object.GetObject<Android.Telephony.CellSignalStrength> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
return global::Java.Lang.Object.GetObject<Android.Telephony.CellSignalStrength> (__rm.Handle, JniHandleOwnership.TransferLocalRef)!;
}
catch (Java.Lang.NoSuchMethodError) {
throw new Java.Lang.AbstractMethodError (__id);
Expand Down
3 changes: 1 addition & 2 deletions src/Mono.Android/Android.Views/View.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ public bool PerformAccessibilityAction (GlobalAction action, Bundle arguments)
}
#endif

[return: MaybeNull]
public T FindViewById<T> (int id)
public T? FindViewById<T> (int id)
where T : Android.Views.View
{
return this.FindViewById (id).JavaCast<T> ();
Expand Down
3 changes: 1 addition & 2 deletions src/Mono.Android/Android.Views/Window.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ namespace Android.Views {

partial class Window {

[return: MaybeNull]
public T FindViewById<T> (int id)
public T? FindViewById<T> (int id)
where T : Android.Views.View
{
return this.FindViewById (id).JavaCast<T> ();
Expand Down
3 changes: 1 addition & 2 deletions src/Mono.Android/Android.Widget/ArrayAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -185,9 +185,8 @@ public void Add (T @object)
}

static IntPtr id_getItem_I;
[return: MaybeNull]
[Register ("getItem", "(I)Ljava/lang/Object;", "GetGetItem_IHandler")]
public T GetItem (int position)
public T? GetItem (int position)
{
if (id_getItem_I == IntPtr.Zero)
id_getItem_I = JNIEnv.GetMethodID (class_ref, "getItem", "(I)Ljava/lang/Object;");
Expand Down
22 changes: 9 additions & 13 deletions src/Mono.Android/Java.Interop/JavaConvert.cs
Original file line number Diff line number Diff line change
Expand Up @@ -92,15 +92,13 @@ static Func<IntPtr, JniHandleOwnership, object> GetJniHandleConverterForType ([D
typeof (Func<IntPtr, JniHandleOwnership, object>), m);
}

[return: MaybeNull]
public static T FromJniHandle<T>(IntPtr handle, JniHandleOwnership transfer)
public static T? FromJniHandle<T>(IntPtr handle, JniHandleOwnership transfer)
{
bool set;
return FromJniHandle<T>(handle, transfer, out set);
}

[return: MaybeNull]
public static T FromJniHandle<T>(IntPtr handle, JniHandleOwnership transfer, out bool set)
public static T? FromJniHandle<T>(IntPtr handle, JniHandleOwnership transfer, out bool set)
{
if (handle == IntPtr.Zero) {
set = false;
Expand All @@ -109,7 +107,7 @@ public static T FromJniHandle<T>(IntPtr handle, JniHandleOwnership transfer, out

var interned = (IJavaObject?) Java.Lang.Object.PeekObject (handle);
if (interned != null) {
T r = FromJavaObject<T>(interned, out set);
T? r = FromJavaObject<T>(interned, out set);
if (set) {
JNIEnv.DeleteRef (handle, transfer);
return r;
Expand All @@ -119,20 +117,20 @@ public static T FromJniHandle<T>(IntPtr handle, JniHandleOwnership transfer, out
set = true;

if (typeof (IJavaObject).IsAssignableFrom (typeof (T)))
return (T) Java.Lang.Object._GetObject<T> (handle, transfer);
return (T?) Java.Lang.Object._GetObject<T> (handle, transfer);

var converter = GetJniHandleConverter (typeof (T)) ??
GetJniHandleConverter (GetTypeMapping (handle));
if (converter != null)
return (T) converter (handle, transfer);
return (T?) converter (handle, transfer);

var v = Java.Lang.Object.GetObject (handle, transfer);
if (v is T)
return (T) v;

// hail mary pass; perhaps there's a MCW which participates in normal
// .NET type conversion?
return (T) Convert.ChangeType (v, typeof (T), CultureInfo.InvariantCulture);
return (T?) Convert.ChangeType (v, typeof (T), CultureInfo.InvariantCulture);
}

public static object? FromJniHandle (IntPtr handle, JniHandleOwnership transfer, Type? targetType = null)
Expand Down Expand Up @@ -208,15 +206,13 @@ public static T FromJniHandle<T>(IntPtr handle, JniHandleOwnership transfer, out
return null;
}

[return: MaybeNull]
public static T FromJavaObject<T>(IJavaObject? value)
public static T? FromJavaObject<T>(IJavaObject? value)
{
bool set;
return FromJavaObject<T>(value, out set);
}

[return: MaybeNull]
public static T FromJavaObject<T>(IJavaObject? value, out bool set)
public static T? FromJavaObject<T>(IJavaObject? value, out bool set)
{
if (value == null) {
set = false;
Expand Down Expand Up @@ -244,7 +240,7 @@ public static T FromJavaObject<T>(IJavaObject? value, out bool set)
set = true;
var converter = GetJniHandleConverter (typeof (T));
if (converter != null)
return (T) converter (lrefValue, JniHandleOwnership.TransferLocalRef);
return (T?) converter (lrefValue, JniHandleOwnership.TransferLocalRef);
JNIEnv.DeleteLocalRef (lrefValue);
return (T) Convert.ChangeType (value, typeof (T), CultureInfo.InvariantCulture);
}
Expand Down
Loading