diff --git a/lawnchair/aidl/amirz/aidlbridge/Bridge.aidl b/lawnchair/aidl/amirz/aidlbridge/Bridge.aidl deleted file mode 100644 index 88fb2be168..0000000000 --- a/lawnchair/aidl/amirz/aidlbridge/Bridge.aidl +++ /dev/null @@ -1,7 +0,0 @@ -package amirz.aidlbridge; - -import amirz.aidlbridge.BridgeCallback; - -interface Bridge { - oneway void setCallback(in int index, in BridgeCallback cb); -} diff --git a/lawnchair/aidl/amirz/aidlbridge/BridgeCallback.aidl b/lawnchair/aidl/amirz/aidlbridge/BridgeCallback.aidl deleted file mode 100644 index 46e7573697..0000000000 --- a/lawnchair/aidl/amirz/aidlbridge/BridgeCallback.aidl +++ /dev/null @@ -1,7 +0,0 @@ -package amirz.aidlbridge; - -interface BridgeCallback { - oneway void onBridgeConnected(in IBinder service); - - oneway void onBridgeDisconnected(); -} diff --git a/lawnchair/aidl/amirz/aidlbridge/IBridge.aidl b/lawnchair/aidl/amirz/aidlbridge/IBridge.aidl new file mode 100644 index 0000000000..29fed9e202 --- /dev/null +++ b/lawnchair/aidl/amirz/aidlbridge/IBridge.aidl @@ -0,0 +1,7 @@ +package amirz.aidlbridge; + +import amirz.aidlbridge.IBridgeCallback; + +interface IBridge { + oneway void bindService(in IBridgeCallback cb, in int flags); +} diff --git a/lawnchair/aidl/amirz/aidlbridge/IBridgeCallback.aidl b/lawnchair/aidl/amirz/aidlbridge/IBridgeCallback.aidl new file mode 100644 index 0000000000..f45aa444d5 --- /dev/null +++ b/lawnchair/aidl/amirz/aidlbridge/IBridgeCallback.aidl @@ -0,0 +1,7 @@ +package amirz.aidlbridge; + +interface IBridgeCallback { + oneway void onServiceConnected(in ComponentName name, in IBinder service); + + oneway void onServiceDisconnected(in ComponentName name); +} diff --git a/lawnchair/src/com/google/android/libraries/gsa/launcherclient/BaseClientService.java b/lawnchair/src/com/google/android/libraries/gsa/launcherclient/BaseClientService.java index 77ac380bf4..b3d5dfa01e 100644 --- a/lawnchair/src/com/google/android/libraries/gsa/launcherclient/BaseClientService.java +++ b/lawnchair/src/com/google/android/libraries/gsa/launcherclient/BaseClientService.java @@ -17,7 +17,7 @@ public class BaseClientService implements ServiceConnection { mContext = context; mFlags = flags; mBridge = FeedBridge.getUseBridge() - ? new LauncherClientBridge(this) + ? new LauncherClientBridge(this, flags) : this; } diff --git a/lawnchair/src/com/google/android/libraries/gsa/launcherclient/LauncherClientBridge.java b/lawnchair/src/com/google/android/libraries/gsa/launcherclient/LauncherClientBridge.java index 8b77e9fb3e..2e8e1a98d7 100644 --- a/lawnchair/src/com/google/android/libraries/gsa/launcherclient/LauncherClientBridge.java +++ b/lawnchair/src/com/google/android/libraries/gsa/launcherclient/LauncherClientBridge.java @@ -5,38 +5,45 @@ import android.content.ServiceConnection; import android.os.IBinder; import android.os.RemoteException; -import amirz.aidlbridge.Bridge; -import amirz.aidlbridge.BridgeCallback; +import amirz.aidlbridge.IBridge; +import amirz.aidlbridge.IBridgeCallback; + +public class LauncherClientBridge extends IBridgeCallback.Stub implements ServiceConnection { + private static final String INTERFACE_DESCRIPTOR = "amirz.aidlbridge.IBridge"; -public class LauncherClientBridge extends BridgeCallback.Stub implements ServiceConnection { private final BaseClientService mClientService; + private final int mFlags; + private ComponentName mConnectionName; - public LauncherClientBridge(BaseClientService launcherClientService) { + public LauncherClientBridge(BaseClientService launcherClientService, int flags) { mClientService = launcherClientService; + mFlags = flags; } @Override public void onServiceConnected(ComponentName name, IBinder service) { - Bridge bridge = Bridge.Stub.asInterface(service); try { - bridge.setCallback(mClientService instanceof LauncherClientService ? 1 : 0, this); + if (INTERFACE_DESCRIPTOR.equals(service.getInterfaceDescriptor())) { + IBridge bridge = IBridge.Stub.asInterface(service); + try { + bridge.bindService(this, mFlags); + } catch (RemoteException e) { + e.printStackTrace(); + } + } else { + mClientService.onServiceConnected(name, service); + mConnectionName = name; + } } catch (RemoteException e) { e.printStackTrace(); } } - @Override - public void onBridgeConnected(IBinder service) { - mClientService.onServiceConnected(null, service); - } - - @Override - public void onBridgeDisconnected() { - mClientService.onServiceDisconnected(null); - } - @Override public void onServiceDisconnected(ComponentName name) { - onBridgeDisconnected(); + if (mConnectionName != null) { + mClientService.onServiceDisconnected(mConnectionName); + mConnectionName = null; + } } }