Loading src/com/android/documentsui/AbstractActionHandler.java +10 −2 Original line number Diff line number Diff line Loading @@ -482,13 +482,13 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA @Override public final void loadRoot(Uri uri) { new LoadRootTask<>(mActivity, mProviders, mState, uri) new LoadRootTask<>(mActivity, mProviders, uri, this::onRootLoaded) .executeOnExecutor(mExecutors.lookup(uri.getAuthority())); } @Override public final void loadFirstRoot(Uri uri) { new LoadFirstRootTask<>(mActivity, mProviders, mState, uri) new LoadFirstRootTask<>(mActivity, mProviders, uri, this::onRootLoaded) .executeOnExecutor(mExecutors.lookup(uri.getAuthority())); } Loading Loading @@ -537,6 +537,14 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA } } private void onRootLoaded(@Nullable RootInfo root) { if (root != null) { mActivity.onRootPicked(root); } else { launchToDefaultLocation(); } } protected abstract void launchToDefaultLocation(); protected void restoreRootAndDirectory() { Loading src/com/android/documentsui/roots/LoadFirstRootTask.java +6 −3 Original line number Diff line number Diff line Loading @@ -21,15 +21,18 @@ import android.net.Uri; import com.android.documentsui.AbstractActionHandler.CommonAddons; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.State; import java.util.Collection; public final class LoadFirstRootTask<T extends Activity & CommonAddons> extends LoadRootTask<T> { public LoadFirstRootTask(T activity, ProvidersAccess providers, State state, Uri rootUri) { super(activity, providers, state, rootUri); public LoadFirstRootTask( T activity, ProvidersAccess providers, Uri rootUri, LoadRootCallback callback) { super(activity, providers, rootUri, callback); } @Override Loading src/com/android/documentsui/roots/LoadRootTask.java +22 −7 Original line number Diff line number Diff line Loading @@ -23,25 +23,29 @@ import android.net.Uri; import android.provider.DocumentsContract; import android.util.Log; import androidx.annotation.Nullable; import com.android.documentsui.AbstractActionHandler.CommonAddons; import com.android.documentsui.base.PairedTask; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.State; public class LoadRootTask<T extends Activity & CommonAddons> extends PairedTask<T, Void, RootInfo> { private static final String TAG = "LoadRootTask"; protected final ProvidersAccess mProviders; private final State mState; private final Uri mRootUri; private final LoadRootCallback mCallback; public LoadRootTask(T activity, ProvidersAccess providers, State state, Uri rootUri) { public LoadRootTask( T activity, ProvidersAccess providers, Uri rootUri, LoadRootCallback callback) { super(activity); mState = state; mProviders = providers; mRootUri = rootUri; mCallback = callback; } @Override Loading @@ -59,14 +63,25 @@ public class LoadRootTask<T extends Activity & CommonAddons> if (DEBUG) { Log.d(TAG, "Loaded root: " + root); } mOwner.onRootPicked(root); } else { Log.w(TAG, "Failed to find root: " + mRootUri); mOwner.finish(); } mCallback.onRootLoaded(root); } protected String getRootId(Uri rootUri) { return DocumentsContract.getRootId(rootUri); } /** * Callback for task finished. */ @FunctionalInterface public interface LoadRootCallback { /** * Return the RootInfo of input uri, null if the uri is invalid. */ void onRootLoaded(@Nullable RootInfo root); } } Loading
src/com/android/documentsui/AbstractActionHandler.java +10 −2 Original line number Diff line number Diff line Loading @@ -482,13 +482,13 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA @Override public final void loadRoot(Uri uri) { new LoadRootTask<>(mActivity, mProviders, mState, uri) new LoadRootTask<>(mActivity, mProviders, uri, this::onRootLoaded) .executeOnExecutor(mExecutors.lookup(uri.getAuthority())); } @Override public final void loadFirstRoot(Uri uri) { new LoadFirstRootTask<>(mActivity, mProviders, mState, uri) new LoadFirstRootTask<>(mActivity, mProviders, uri, this::onRootLoaded) .executeOnExecutor(mExecutors.lookup(uri.getAuthority())); } Loading Loading @@ -537,6 +537,14 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA } } private void onRootLoaded(@Nullable RootInfo root) { if (root != null) { mActivity.onRootPicked(root); } else { launchToDefaultLocation(); } } protected abstract void launchToDefaultLocation(); protected void restoreRootAndDirectory() { Loading
src/com/android/documentsui/roots/LoadFirstRootTask.java +6 −3 Original line number Diff line number Diff line Loading @@ -21,15 +21,18 @@ import android.net.Uri; import com.android.documentsui.AbstractActionHandler.CommonAddons; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.State; import java.util.Collection; public final class LoadFirstRootTask<T extends Activity & CommonAddons> extends LoadRootTask<T> { public LoadFirstRootTask(T activity, ProvidersAccess providers, State state, Uri rootUri) { super(activity, providers, state, rootUri); public LoadFirstRootTask( T activity, ProvidersAccess providers, Uri rootUri, LoadRootCallback callback) { super(activity, providers, rootUri, callback); } @Override Loading
src/com/android/documentsui/roots/LoadRootTask.java +22 −7 Original line number Diff line number Diff line Loading @@ -23,25 +23,29 @@ import android.net.Uri; import android.provider.DocumentsContract; import android.util.Log; import androidx.annotation.Nullable; import com.android.documentsui.AbstractActionHandler.CommonAddons; import com.android.documentsui.base.PairedTask; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.State; public class LoadRootTask<T extends Activity & CommonAddons> extends PairedTask<T, Void, RootInfo> { private static final String TAG = "LoadRootTask"; protected final ProvidersAccess mProviders; private final State mState; private final Uri mRootUri; private final LoadRootCallback mCallback; public LoadRootTask(T activity, ProvidersAccess providers, State state, Uri rootUri) { public LoadRootTask( T activity, ProvidersAccess providers, Uri rootUri, LoadRootCallback callback) { super(activity); mState = state; mProviders = providers; mRootUri = rootUri; mCallback = callback; } @Override Loading @@ -59,14 +63,25 @@ public class LoadRootTask<T extends Activity & CommonAddons> if (DEBUG) { Log.d(TAG, "Loaded root: " + root); } mOwner.onRootPicked(root); } else { Log.w(TAG, "Failed to find root: " + mRootUri); mOwner.finish(); } mCallback.onRootLoaded(root); } protected String getRootId(Uri rootUri) { return DocumentsContract.getRootId(rootUri); } /** * Callback for task finished. */ @FunctionalInterface public interface LoadRootCallback { /** * Return the RootInfo of input uri, null if the uri is invalid. */ void onRootLoaded(@Nullable RootInfo root); } }