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