@Override public void run() { /* Same runnable is used whether App Center or the service is disabled or not started. */ future.complete(valueIfDisabledOrNotStarted); } };
@Override public void run() { future.complete(null); } });
@Override public void run() { future.complete(mLastSessionErrorReport); } }, future, null);
@Override public void run() { future.complete(true); } }, new Runnable() {
@Override public void run() { future.complete(mLastSessionErrorReport != null); } }, future, false);
@Override public void run() { future.complete(false); } });
@Override public void run() { setInstanceEnabled(enabled); future.complete(null); } });
@Override public void run() { future.complete(true); } }, future, false);
@Override public void run() { Collection<ErrorReport> reports = new ArrayList<>(mUnprocessedErrorReports.size()); for (ErrorLogReport entry : mUnprocessedErrorReports.values()) { reports.add(entry.report); } future.complete(reports); } }, future, Collections.<ErrorReport>emptyList());
@Override public void run() { future.complete(IdHelper.getInstallId()); } }, new Runnable() {
private void applyStorageMaxSize() { boolean resizeResult = mChannel.setMaxStorageSize(mMaxStorageSizeInBytes); if (mSetMaxStorageSizeFuture != null) { mSetMaxStorageSizeFuture.complete(resizeResult); } }
@Override public void run() { AppCenterLog.error(LOG_TAG, "App Center SDK is disabled."); future.complete(null); } };
@Override public void run() { future.complete(mInstallId); } });
@Override public void run() { future.complete(isEnabled()); } }, future, false);
@Override public void run() { future.complete(ErrorLogHelper.getNewMinidumpDirectory().getAbsolutePath()); } }, future, null);
@Override public void run() { setInstanceEnabled(enabled); future.complete(null); } };
@Override public void run() { /* Apply the filtering. */ Iterator<Map.Entry<UUID, ErrorLogReport>> iterator = mUnprocessedErrorReports.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<UUID, ErrorLogReport> entry = iterator.next(); UUID id = entry.getKey(); String idString = entry.getValue().report.getId(); if (filteredReportIds != null && filteredReportIds.contains(idString)) { AppCenterLog.debug(LOG_TAG, "CrashesListener.shouldProcess returned true, continue processing log: " + idString); } else { AppCenterLog.debug(LOG_TAG, "CrashesListener.shouldProcess returned false, clean up and ignore log: " + idString); removeAllStoredErrorLogFiles(id); iterator.remove(); } } /* Proceed to check if user confirmation is needed. */ future.complete(sendCrashReportsOrAwaitUserConfirmation()); } }, future, false);
/** * Implements {@link #setEnabled(boolean)}}. */ private synchronized AppCenterFuture<Void> setInstanceEnabledAsync(final boolean enabled) { final DefaultAppCenterFuture<Void> future = new DefaultAppCenterFuture<>(); if (checkPrecondition()) { mHandler.post(new Runnable() { @Override public void run() { setInstanceEnabled(enabled); future.complete(null); } }); } else { future.complete(null); } return future; }
@Test public void getWithInterruption() throws InterruptedException { final DefaultAppCenterFuture<Boolean> future = new DefaultAppCenterFuture<>(); final AtomicReference<Boolean> result = new AtomicReference<>(); Thread thread = new Thread() { @Override public void run() { result.set(future.get()); } }; thread.start(); thread.interrupt(); future.complete(true); thread.join(); assertEquals(true, result.get()); }