| Index: chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkServiceConnectionManager.java
|
| diff --git a/chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkServiceConnectionManager.java b/chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkServiceConnectionManager.java
|
| index c6b08f560a099950ae538ffb0792adee58fc9caa..a2bcd65c33afe34b17b447f57f66fc44aaaf1018 100644
|
| --- a/chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkServiceConnectionManager.java
|
| +++ b/chrome/android/webapk/libs/client/src/org/chromium/webapk/lib/client/WebApkServiceConnectionManager.java
|
| @@ -10,10 +10,8 @@ import android.content.Intent;
|
| import android.content.ServiceConnection;
|
| import android.os.AsyncTask;
|
| import android.os.IBinder;
|
| +import android.util.Log;
|
|
|
| -import org.chromium.base.Callback;
|
| -import org.chromium.base.ContextUtils;
|
| -import org.chromium.base.Log;
|
| import org.chromium.webapk.lib.runtime_library.IWebApkApi;
|
|
|
| import java.util.ArrayList;
|
| @@ -25,6 +23,17 @@ import java.util.Hashtable;
|
| */
|
| public class WebApkServiceConnectionManager {
|
| /**
|
| + * Interface for getting notified once Chrome is connected to the WebAPK service.
|
| + */
|
| + public interface ConnectionCallback {
|
| + /**
|
| + * Called once Chrome is connected to the WebAPK service.
|
| + * @param api The WebAPK service API.
|
| + */
|
| + public void onConnected(IWebApkApi api);
|
| + }
|
| +
|
| + /**
|
| * Managed connection to WebAPK service.
|
| */
|
| private static class Connection implements ServiceConnection {
|
| @@ -36,7 +45,7 @@ public class WebApkServiceConnectionManager {
|
| /**
|
| * Callbacks to call once the connection is established.
|
| */
|
| - private ArrayList<Callback<IWebApkApi>> mCallbacks = new ArrayList<Callback<IWebApkApi>>();
|
| + private ArrayList<ConnectionCallback> mCallbacks = new ArrayList<ConnectionCallback>();
|
|
|
| /**
|
| * WebAPK IBinder interface.
|
| @@ -51,7 +60,7 @@ public class WebApkServiceConnectionManager {
|
| return mApi;
|
| }
|
|
|
| - public void addCallback(Callback<IWebApkApi> callback) {
|
| + public void addCallback(ConnectionCallback callback) {
|
| mCallbacks.add(callback);
|
| }
|
|
|
| @@ -62,10 +71,10 @@ public class WebApkServiceConnectionManager {
|
| public void onServiceConnected(ComponentName name, IBinder service) {
|
| mHasConnected = true;
|
| mApi = IWebApkApi.Stub.asInterface(service);
|
| - Log.d(TAG, "Got IWebApkApi: %s", mApi);
|
| + Log.d(TAG, String.format("Got IWebApkApi: %s", mApi));
|
|
|
| - for (Callback<IWebApkApi> callback : mCallbacks) {
|
| - callback.onResult(mApi);
|
| + for (ConnectionCallback callback : mCallbacks) {
|
| + callback.onConnected(mApi);
|
| }
|
| mCallbacks.clear();
|
| }
|
| @@ -91,15 +100,17 @@ public class WebApkServiceConnectionManager {
|
|
|
| /**
|
| * Connects Chrome application to WebAPK service. Can be called from any thread.
|
| + * @param appContext Application context.
|
| * @param webApkPackage WebAPK package to create connection for.
|
| * @param callback Callback to call after connection has been established. Called synchronously
|
| * if the connection is already established.
|
| */
|
| - public void connect(final String webApkPackage, final Callback<IWebApkApi> callback) {
|
| + public void connect(final Context appContext, final String webApkPackage,
|
| + final ConnectionCallback callback) {
|
| Connection connection = mConnections.get(webApkPackage);
|
| if (connection != null) {
|
| if (connection.hasConnected()) {
|
| - callback.onResult(connection.getApi());
|
| + callback.onConnected(connection.getApi());
|
| } else {
|
| connection.addCallback(callback);
|
| }
|
| @@ -111,7 +122,6 @@ public class WebApkServiceConnectionManager {
|
| protected Void doInBackground(Void... params) {
|
| Connection newConnection = new Connection();
|
| newConnection.addCallback(callback);
|
| - Context appContext = ContextUtils.getApplicationContext();
|
| Intent intent = createConnectIntent(webApkPackage);
|
|
|
| try {
|
| @@ -130,9 +140,10 @@ public class WebApkServiceConnectionManager {
|
|
|
| /**
|
| * Disconnects Chrome application from WebAPK service. Can be called from any thread.
|
| + * @param appContext Application context.
|
| * @param webApkPackage WebAPK package for the service to disconnect from.
|
| */
|
| - public void disconnect(String webApkPackage) {
|
| + public void disconnect(final Context appContext, String webApkPackage) {
|
| final Connection connection = mConnections.remove(webApkPackage);
|
| if (connection == null) {
|
| return;
|
| @@ -141,7 +152,6 @@ public class WebApkServiceConnectionManager {
|
| new AsyncTask<Void, Void, Void>() {
|
| @Override
|
| protected Void doInBackground(Void... params) {
|
| - Context appContext = ContextUtils.getApplicationContext();
|
| appContext.unbindService(connection);
|
| return null;
|
| }
|
|
|