|
18 | 18 | import android.content.Context;
|
19 | 19 | import android.content.SharedPreferences;
|
20 | 20 | import androidx.annotation.NonNull;
|
21 |
| -import androidx.annotation.Nullable; |
22 |
| -import com.google.android.gms.tasks.SuccessContinuation; |
| 21 | +import com.google.android.gms.tasks.Continuation; |
23 | 22 | import com.google.android.gms.tasks.Task;
|
24 | 23 | import com.google.android.gms.tasks.TaskCompletionSource;
|
25 | 24 | import com.google.android.gms.tasks.Tasks;
|
@@ -190,38 +189,41 @@ public Task<Void> loadSettingsData(
|
190 | 189 | // TODO(mrober): Refactor to call worker directly, not expose executor.
|
191 | 190 | return dataCollectionArbiter
|
192 | 191 | .waitForDataCollectionPermission()
|
193 |
| - .onSuccessTask( |
| 192 | + .continueWithTask( |
194 | 193 | crashlyticsWorkers.common,
|
195 |
| - new SuccessContinuation<Void, Void>() { |
196 |
| - @NonNull |
| 194 | + new Continuation<Void, Task<Void>>() { |
197 | 195 | @Override
|
198 |
| - public Task<Void> then(@Nullable Void aVoid) throws Exception { |
199 |
| - // Waited for data collection permission, so this is safe. |
200 |
| - final boolean dataCollectionToken = true; |
201 |
| - Future<JSONObject> settingsFuture = |
202 |
| - crashlyticsWorkers |
203 |
| - .network |
204 |
| - .getExecutor() |
205 |
| - .submit(() -> settingsSpiCall.invoke(settingsRequest, dataCollectionToken)); |
206 |
| - // TODO(mrober): Should we add a timeout here, or let the entire init timeout? |
207 |
| - JSONObject settingsJson = settingsFuture.get(); |
208 |
| - |
209 |
| - if (settingsJson != null) { |
210 |
| - final Settings fetchedSettings = |
211 |
| - settingsJsonParser.parseSettingsJson(settingsJson); |
212 |
| - cachedSettingsIo.writeCachedSettings( |
213 |
| - fetchedSettings.expiresAtMillis, settingsJson); |
214 |
| - logSettings(settingsJson, "Loaded settings: "); |
215 |
| - |
216 |
| - setStoredBuildInstanceIdentifier(settingsRequest.instanceId); |
217 |
| - |
218 |
| - // Update the regular settings. |
219 |
| - settings.set(fetchedSettings); |
220 |
| - |
221 |
| - // Signal the Task that we have a new valid settings |
222 |
| - settingsTask.get().trySetResult(fetchedSettings); |
| 196 | + public Task<Void> then(@NonNull Task<Void> task) throws Exception { |
| 197 | + if (task.isSuccessful()) { |
| 198 | + final boolean dataCollectionToken = true; |
| 199 | + Future<JSONObject> settingsFuture = |
| 200 | + crashlyticsWorkers |
| 201 | + .network |
| 202 | + .getExecutor() |
| 203 | + .submit( |
| 204 | + () -> settingsSpiCall.invoke(settingsRequest, dataCollectionToken)); |
| 205 | + // TODO(mrober): Should we add a timeout here, or let the entire init timeout? |
| 206 | + JSONObject settingsJson = settingsFuture.get(); |
| 207 | + |
| 208 | + if (settingsJson != null) { |
| 209 | + final Settings fetchedSettings = |
| 210 | + settingsJsonParser.parseSettingsJson(settingsJson); |
| 211 | + cachedSettingsIo.writeCachedSettings( |
| 212 | + fetchedSettings.expiresAtMillis, settingsJson); |
| 213 | + logSettings(settingsJson, "Loaded settings: "); |
| 214 | + |
| 215 | + setStoredBuildInstanceIdentifier(settingsRequest.instanceId); |
| 216 | + |
| 217 | + // Update the regular settings. |
| 218 | + settings.set(fetchedSettings); |
| 219 | + |
| 220 | + // Signal the Task that we have a new valid settings |
| 221 | + settingsTask.get().trySetResult(fetchedSettings); |
| 222 | + return Tasks.forResult(null); |
| 223 | + } |
223 | 224 | }
|
224 |
| - |
| 225 | + Logger.getLogger().d("waitForDataCollectionPermission failed, set setting to null"); |
| 226 | + settingsTask.get().trySetResult(null); |
225 | 227 | return Tasks.forResult(null);
|
226 | 228 | }
|
227 | 229 | });
|
|
0 commit comments