From kde-commits Tue May 31 19:05:14 2016 From: Albert Vaca Date: Tue, 31 May 2016 19:05:14 +0000 To: kde-commits Subject: [kdeconnect-android/sslrefactor] src/org/kde/kdeconnect: Fixed capabilities Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=146472153513413 Git commit 614505518b5bb150459a3d05da715aeef8c46181 by Albert Vaca. Committed on 31/05/2016 at 19:02. Pushed by albertvaka into branch 'sslrefactor'. Fixed capabilities M +37 -20 src/org/kde/kdeconnect/Device.java http://commits.kde.org/kdeconnect-android/614505518b5bb150459a3d05da715aeef= 8c46181 diff --git a/src/org/kde/kdeconnect/Device.java b/src/org/kde/kdeconnect/De= vice.java index 66d0dad..452a29c 100644 --- a/src/org/kde/kdeconnect/Device.java +++ b/src/org/kde/kdeconnect/Device.java @@ -28,14 +28,18 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.drawable.Drawable; +import android.os.Build; import android.preference.PreferenceManager; import android.support.v4.app.NotificationCompat; import android.support.v4.content.ContextCompat; import android.util.Base64; import android.util.Log; = +import org.json.JSONArray; +import org.json.JSONException; import org.kde.kdeconnect.Backends.BaseLink; import org.kde.kdeconnect.Backends.BasePairingHandler; +import org.kde.kdeconnect.Helpers.ObjectsHelper; import org.kde.kdeconnect.Helpers.SecurityHelpers.SslHelper; import org.kde.kdeconnect.Plugins.Plugin; import org.kde.kdeconnect.Plugins.PluginFactory; @@ -52,6 +56,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; @@ -75,8 +80,8 @@ public class Device implements BaseLink.PackageReceiver { = private final CopyOnWriteArrayList links =3D new CopyOnWrite= ArrayList<>(); = - private ArrayList incomingCapabilities; - private ArrayList outgoingCapabilities; + private ArrayList incomingCapabilities =3D new ArrayList<>(); + private ArrayList outgoingCapabilities =3D new ArrayList<>(); = private final ConcurrentHashMap plugins =3D new Concur= rentHashMap<>(); private final ConcurrentHashMap failedPlugins =3D new = ConcurrentHashMap<>(); @@ -85,7 +90,6 @@ public class Device implements BaseLink.PackageReceiver { private HashSet supportedIncomingInterfaces =3D new HashSet<>(= ); private HashSet supportedOutgoingInterfaces =3D new HashSet<>(= ); = - //FIXME: Why are these never used? Did some merge break the capabiliti= es? private HashMap> pluginsByIncomingInterface; private HashMap> pluginsByOutgoingInterface; = @@ -500,8 +504,6 @@ public class Device implements BaseLink.PackageReceiver= { link.addPackageReceiver(this); = if (links.size() =3D=3D 1) { - incomingCapabilities =3D identityPackage.getStringList("Incomi= ngCapabilties"); - outgoingCapabilities =3D identityPackage.getStringList("Outgoi= ngCapabilities"); reloadPluginsFromSettings(); } } @@ -544,15 +546,28 @@ public class Device implements BaseLink.PackageReceiv= er { Log.e("PairingPackageReceived","Exception"); } } + } else if (NetworkPackage.PACKAGE_TYPE_CAPABILITIES.equals(np.getT= ype())) { + ArrayList newIncomingCapabilities =3D np.getStringList= ("IncomingCapabilities"); + ArrayList newOutgoingCapabilities =3D np.getStringList= ("OutgoingCapabilities"); + if (!ObjectsHelper.equals(newIncomingCapabilities, incomingCap= abilities) || + !ObjectsHelper.equals(newOutgoingCapabilities, outgoingCap= abilities)) { + incomingCapabilities =3D newIncomingCapabilities; + outgoingCapabilities =3D newOutgoingCapabilities; + reloadPluginsFromSettings(); + } = } else if (isPaired()) { = - for (Plugin plugin : plugins.values()) { - try { - plugin.onPackageReceived(np); - } catch (Exception e) { - e.printStackTrace(); - Log.e("KDE/Device", "Exception in "+plugin.getPluginKe= y()+"'s onPackageReceived()"); + ArrayList targetPlugins =3D pluginsByIncomingInterface= .get(np.getType()); + if (targetPlugins !=3D null) { + for (String pluginKey : targetPlugins) { + Plugin plugin =3D plugins.get(pluginKey); + try { + plugin.onPackageReceived(np); + } catch (Exception e) { + e.printStackTrace(); + Log.e("KDE/Device", "Exception in " + plugin.getPl= uginKey() + "'s onPackageReceived()"); + } } } } else { @@ -565,15 +580,18 @@ public class Device implements BaseLink.PackageReceiv= er { = unpair(); = - for (Plugin plugin : plugins.values()) { - try { - plugin.onUnpairedDevicePackageReceived(np); - } catch (Exception e) { - e.printStackTrace(); - Log.e("KDE/Device", "Exception in "+plugin.getDisplayN= ame()+"'s onPackageReceived() in unPairedPackageListeners"); + ArrayList targetPlugins =3D pluginsByIncomingInterface= .get(np.getType()); + if (targetPlugins !=3D null) { + for (String pluginKey : targetPlugins) { + Plugin plugin =3D plugins.get(pluginKey); + try { + plugin.onUnpairedDevicePackageReceived(np); + } catch (Exception e) { + e.printStackTrace(); + Log.e("KDE/Device", "Exception in " + plugin.getDi= splayName() + "'s onPackageReceived() in unPairedPackageListeners"); + } } } - } = } @@ -755,8 +773,7 @@ public class Device implements BaseLink.PackageReceiver= { HashMap> newPluginsByIncomingInterface = =3D new HashMap<>(); HashMap> newPluginsByOutgoingInterface = =3D new HashMap<>(); = - final boolean supportsCapabilities =3D (incomingCapabilities !=3D = null && !incomingCapabilities.isEmpty()) || - (incomingCapabilities !=3D null && !outgoingCapabilities.i= sEmpty()); + final boolean supportsCapabilities =3D (protocolVersion >=3D 6); = for (String pluginKey : availablePlugins) { =