Loading src/com/android/documentsui/picker/ActionHandler.java +1 −1 Original line number Diff line number Diff line Loading @@ -219,7 +219,7 @@ class ActionHandler<T extends FragmentActivity & Addons> extends AbstractActionH mInjector.pickResult.setIsSearching(isSearching); mInjector.pickResult.setRoot(root); mInjector.pickResult.setFileUri(uri); getUpdatePickResultTask().execute(); getUpdatePickResultTask().safeExecute(); } private void loadDefaultLocation() { Loading src/com/android/documentsui/picker/PickActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons { public void onBackPressed() { super.onBackPressed(); // log the case of user picking nothing. mInjector.actions.getUpdatePickResultTask().execute(); mInjector.actions.getUpdatePickResultTask().safeExecute(); } @Override Loading src/com/android/documentsui/picker/UpdatePickResultTask.java +9 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.net.Uri; import android.os.AsyncTask; import android.os.SystemClock; import com.android.documentsui.Metrics; // load & update mime type & repeatedly pick count in background Loading Loading @@ -62,4 +63,12 @@ public class UpdatePickResultTask extends AsyncTask<Void, Void, Void> { Metrics.logPickResult(mPickResult); } /** * Check the status and only execute if task is pending. */ public void safeExecute() { if (getStatus() == Status.PENDING) { execute(); } } } tests/unit/com/android/documentsui/picker/UpdatePickResultTaskTest.java 0 → 100644 +46 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.documentsui.picker; import android.content.Context; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) @SmallTest public class UpdatePickResultTaskTest { private UpdatePickResultTask mTask; @Before public void setUp() { Context context = InstrumentationRegistry.getInstrumentation().getTargetContext(); mTask = new UpdatePickResultTask(context, new PickResult()); } @Test public void testSafeExcute_noCrash() throws Exception { mTask.safeExecute(); mTask.safeExecute(); } } Loading
src/com/android/documentsui/picker/ActionHandler.java +1 −1 Original line number Diff line number Diff line Loading @@ -219,7 +219,7 @@ class ActionHandler<T extends FragmentActivity & Addons> extends AbstractActionH mInjector.pickResult.setIsSearching(isSearching); mInjector.pickResult.setRoot(root); mInjector.pickResult.setFileUri(uri); getUpdatePickResultTask().execute(); getUpdatePickResultTask().safeExecute(); } private void loadDefaultLocation() { Loading
src/com/android/documentsui/picker/PickActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons { public void onBackPressed() { super.onBackPressed(); // log the case of user picking nothing. mInjector.actions.getUpdatePickResultTask().execute(); mInjector.actions.getUpdatePickResultTask().safeExecute(); } @Override Loading
src/com/android/documentsui/picker/UpdatePickResultTask.java +9 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.net.Uri; import android.os.AsyncTask; import android.os.SystemClock; import com.android.documentsui.Metrics; // load & update mime type & repeatedly pick count in background Loading Loading @@ -62,4 +63,12 @@ public class UpdatePickResultTask extends AsyncTask<Void, Void, Void> { Metrics.logPickResult(mPickResult); } /** * Check the status and only execute if task is pending. */ public void safeExecute() { if (getStatus() == Status.PENDING) { execute(); } } }
tests/unit/com/android/documentsui/picker/UpdatePickResultTaskTest.java 0 → 100644 +46 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.documentsui.picker; import android.content.Context; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) @SmallTest public class UpdatePickResultTaskTest { private UpdatePickResultTask mTask; @Before public void setUp() { Context context = InstrumentationRegistry.getInstrumentation().getTargetContext(); mTask = new UpdatePickResultTask(context, new PickResult()); } @Test public void testSafeExcute_noCrash() throws Exception { mTask.safeExecute(); mTask.safeExecute(); } }