diff options
Diffstat (limited to 'packages/DynamicSystemInstallationService/src')
2 files changed, 38 insertions, 38 deletions
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java index df2c57181904..e479e387b95a 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java @@ -49,6 +49,7 @@ import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.Messenger; +import android.os.ParcelableException; import android.os.PowerManager; import android.os.RemoteException; import android.os.image.DynamicSystemClient; @@ -170,13 +171,13 @@ public class DynamicSystemInstallationService extends Service @Override public void onProgressUpdate(long installedSize) { mInstalledSize = installedSize; - postStatus(STATUS_IN_PROGRESS, CAUSE_NOT_SPECIFIED); + postStatus(STATUS_IN_PROGRESS, CAUSE_NOT_SPECIFIED, null); } @Override - public void onResult(int result) { + public void onResult(int result, Throwable detail) { if (result == RESULT_OK) { - postStatus(STATUS_READY, CAUSE_INSTALL_COMPLETED); + postStatus(STATUS_READY, CAUSE_INSTALL_COMPLETED, null); return; } @@ -185,15 +186,15 @@ public class DynamicSystemInstallationService extends Service switch (result) { case RESULT_ERROR_IO: - postStatus(STATUS_NOT_STARTED, CAUSE_ERROR_IO); + postStatus(STATUS_NOT_STARTED, CAUSE_ERROR_IO, detail); break; case RESULT_ERROR_INVALID_URL: - postStatus(STATUS_NOT_STARTED, CAUSE_ERROR_INVALID_URL); + postStatus(STATUS_NOT_STARTED, CAUSE_ERROR_INVALID_URL, detail); break; case RESULT_ERROR_EXCEPTION: - postStatus(STATUS_NOT_STARTED, CAUSE_ERROR_EXCEPTION); + postStatus(STATUS_NOT_STARTED, CAUSE_ERROR_EXCEPTION, detail); break; } } @@ -201,7 +202,7 @@ public class DynamicSystemInstallationService extends Service @Override public void onCancelled() { resetTaskAndStop(); - postStatus(STATUS_NOT_STARTED, CAUSE_INSTALL_CANCELLED); + postStatus(STATUS_NOT_STARTED, CAUSE_INSTALL_CANCELLED, null); } private void executeInstallCommand(Intent intent) { @@ -266,7 +267,7 @@ public class DynamicSystemInstallationService extends Service Toast.LENGTH_LONG).show(); resetTaskAndStop(); - postStatus(STATUS_NOT_STARTED, CAUSE_INSTALL_CANCELLED); + postStatus(STATUS_NOT_STARTED, CAUSE_INSTALL_CANCELLED, null); mDynSystem.remove(); } @@ -414,7 +415,7 @@ public class DynamicSystemInstallationService extends Service return VerificationActivity.isVerified(url); } - private void postStatus(int status, int cause) { + private void postStatus(int status, int cause, Throwable detail) { Log.d(TAG, "postStatus(): statusCode=" + status + ", causeCode=" + cause); boolean notifyOnNotificationBar = true; @@ -433,18 +434,24 @@ public class DynamicSystemInstallationService extends Service for (int i = mClients.size() - 1; i >= 0; i--) { try { - notifyOneClient(mClients.get(i), status, cause); + notifyOneClient(mClients.get(i), status, cause, detail); } catch (RemoteException e) { mClients.remove(i); } } } - private void notifyOneClient(Messenger client, int status, int cause) throws RemoteException { + private void notifyOneClient(Messenger client, int status, int cause, Throwable detail) + throws RemoteException { Bundle bundle = new Bundle(); bundle.putLong(DynamicSystemClient.KEY_INSTALLED_SIZE, mInstalledSize); + if (detail != null) { + bundle.putSerializable(DynamicSystemClient.KEY_EXCEPTION_DETAIL, + new ParcelableException(detail)); + } + client.send(Message.obtain(null, DynamicSystemClient.MSG_POST_STATUS, status, cause, bundle)); } @@ -496,7 +503,7 @@ public class DynamicSystemInstallationService extends Service int status = getStatus(); // tell just registered client my status, but do not specify cause - notifyOneClient(client, status, CAUSE_NOT_SPECIFIED); + notifyOneClient(client, status, CAUSE_NOT_SPECIFIED, null); mClients.add(client); } catch (RemoteException e) { diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java index 052fc0a109b3..aee5de5efd5e 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java @@ -31,7 +31,7 @@ import java.util.Locale; import java.util.zip.GZIPInputStream; -class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { +class InstallationAsyncTask extends AsyncTask<String, Long, Throwable> { private static final String TAG = "InstallationAsyncTask"; @@ -43,7 +43,6 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { } } - /** Not completed, including being cancelled */ static final int NO_RESULT = 0; static final int RESULT_OK = 1; @@ -53,7 +52,7 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { interface InstallStatusListener { void onProgressUpdate(long installedSize); - void onResult(int resultCode); + void onResult(int resultCode, Throwable detail); void onCancelled(); } @@ -84,7 +83,7 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { } @Override - protected Integer doInBackground(String... voids) { + protected Throwable doInBackground(String... voids) { Log.d(TAG, "Start doInBackground(), URL: " + mUrl); try { @@ -108,7 +107,7 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { if (isCancelled()) { boolean aborted = mDynSystem.abort(); Log.d(TAG, "Called DynamicSystemManager.abort(), result = " + aborted); - return RESULT_OK; + return null; } GsiProgress progress = mDynSystem.getInstallationProgress(); @@ -124,10 +123,8 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { if (mInstallationSession == null) { - Log.e(TAG, "Failed to start installation with requested size: " + throw new IOException("Failed to start installation with requested size: " + (mSystemSize + mUserdataSize)); - - return RESULT_ERROR_IO; } installedSize = mUserdataSize; @@ -157,20 +154,11 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { } } - return RESULT_OK; - - } catch (IOException e) { - e.printStackTrace(); - return RESULT_ERROR_IO; - - } catch (InvalidImageUrlException e) { - e.printStackTrace(); - return RESULT_ERROR_INVALID_URL; + return null; } catch (Exception e) { e.printStackTrace(); - return RESULT_ERROR_EXCEPTION; - + return e; } finally { close(); } @@ -180,19 +168,24 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Integer> { protected void onCancelled() { Log.d(TAG, "onCancelled(), URL: " + mUrl); - close(); - mListener.onCancelled(); } @Override - protected void onPostExecute(Integer result) { - Log.d(TAG, "onPostExecute(), URL: " + mUrl + ", result: " + result); + protected void onPostExecute(Throwable detail) { + if (detail == null) { + mResult = RESULT_OK; + } else if (detail instanceof IOException) { + mResult = RESULT_ERROR_IO; + } else if (detail instanceof InvalidImageUrlException) { + mResult = RESULT_ERROR_INVALID_URL; + } else { + mResult = RESULT_ERROR_EXCEPTION; + } - close(); + Log.d(TAG, "onPostExecute(), URL: " + mUrl + ", result: " + mResult); - mResult = result; - mListener.onResult(mResult); + mListener.onResult(mResult, detail); } @Override |