Loading res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -160,6 +160,9 @@ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] --> <string name="toast_failed_delete">Unable to delete some documents</string> <!-- Toast shown when a files document info fails to load--> <string name="file_inspector_load_error">Properties could not be loaded</string> <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] --> <string name="share_via">Share via</string> Loading src/com/android/documentsui/inspector/DocumentInspectorFragment.java +0 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static com.android.internal.util.Preconditions.checkArgument; import android.app.Fragment; import android.net.Uri; import android.os.Bundle; import android.support.annotation.VisibleForTesting; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; Loading src/com/android/documentsui/inspector/InspectorController.java +22 −9 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.documentsui.inspector; import static android.provider.DocumentsContract.Document.FLAG_SUPPORTS_SETTINGS; import static com.android.internal.util.Preconditions.checkArgument; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; Loading @@ -29,6 +30,7 @@ import com.android.documentsui.DocumentsApplication; import com.android.documentsui.R; import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.roots.ProvidersAccess; import com.android.documentsui.ui.Snackbars; import java.util.function.Consumer; /** * A controller that coordinates retrieving document information and sending it to the view. Loading @@ -40,34 +42,42 @@ public final class InspectorController { private final Consumer<DocumentInfo> mDetails; private final Context mContext; private final ProvidersAccess mProviders; private final Runnable mShowSnackbar; /** * InspectorControllerTest relies on this controller. */ @VisibleForTesting public InspectorController(Context context, Loader loader, ProvidersAccess providers, Consumer<DocumentInfo> header, Consumer<DocumentInfo> details) { Consumer<DocumentInfo> header, Consumer<DocumentInfo> details, Runnable showSnackbar) { checkArgument(context != null); checkArgument(loader != null); checkArgument(providers != null); checkArgument(header != null); checkArgument(details != null); checkArgument(showSnackbar != null); mContext = context; mLoader = loader; mProviders = providers; mHeader = header; mDetails = details; mShowSnackbar = showSnackbar; } public InspectorController(Context context, Loader loader, LinearLayout layout) { public InspectorController(Activity activity, Loader loader, LinearLayout layout) { this(context, this(activity, loader, DocumentsApplication.getProvidersCache (context), DocumentsApplication.getProvidersCache (activity), (HeaderView) layout.findViewById(R.id.inspector_header_view), (DetailsView) layout.findViewById(R.id.inspector_details_view)); (DetailsView) layout.findViewById(R.id.inspector_details_view), () -> { // using a runnable to support unit testing this feature. Snackbars.showInspectorError(activity); } ); } public void reset() { Loading @@ -82,13 +92,16 @@ public final class InspectorController { * Updates the view. */ @Nullable private void updateView(@Nullable DocumentInfo docInfo) { public void updateView(@Nullable DocumentInfo docInfo) { if (docInfo == null) { return; mShowSnackbar.run(); } else { mHeader.accept(docInfo); mDetails.accept(docInfo); } } /** * Shows the selected document in it's content provider. Loading src/com/android/documentsui/ui/Snackbars.java +7 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,13 @@ public final class Snackbars { makeSnackbar(activity, R.string.rename_error, Snackbar.LENGTH_SHORT).show(); } public static final void showInspectorError(Activity activity) { //Document Inspector uses a different view from other files app activities. final View view = activity.findViewById(R.id.fragment_container); Snackbar.make(view, R.string.file_inspector_load_error, Snackbar.LENGTH_INDEFINITE).show(); } public static final void showCustomTextWithImage(Activity activity, String text, int imageRes) { Snackbar snackbar = makeSnackbar(activity, text, Snackbar.LENGTH_SHORT); View snackbarLayout = snackbar.getView(); Loading tests/common/com/android/documentsui/testing/TestPredicate.java +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.documentsui.testing; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.concurrent.CompletableFuture; Loading Loading @@ -54,6 +55,10 @@ public class TestPredicate<T> implements Predicate<T> { assertTrue(mCalled); } public void assertNotCalled() { assertFalse(mCalled); } public void nextReturn(boolean value) { mNextReturnValue = value; } Loading Loading
res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -160,6 +160,9 @@ <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] --> <string name="toast_failed_delete">Unable to delete some documents</string> <!-- Toast shown when a files document info fails to load--> <string name="file_inspector_load_error">Properties could not be loaded</string> <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] --> <string name="share_via">Share via</string> Loading
src/com/android/documentsui/inspector/DocumentInspectorFragment.java +0 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import static com.android.internal.util.Preconditions.checkArgument; import android.app.Fragment; import android.net.Uri; import android.os.Bundle; import android.support.annotation.VisibleForTesting; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; Loading
src/com/android/documentsui/inspector/InspectorController.java +22 −9 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.documentsui.inspector; import static android.provider.DocumentsContract.Document.FLAG_SUPPORTS_SETTINGS; import static com.android.internal.util.Preconditions.checkArgument; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; Loading @@ -29,6 +30,7 @@ import com.android.documentsui.DocumentsApplication; import com.android.documentsui.R; import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.roots.ProvidersAccess; import com.android.documentsui.ui.Snackbars; import java.util.function.Consumer; /** * A controller that coordinates retrieving document information and sending it to the view. Loading @@ -40,34 +42,42 @@ public final class InspectorController { private final Consumer<DocumentInfo> mDetails; private final Context mContext; private final ProvidersAccess mProviders; private final Runnable mShowSnackbar; /** * InspectorControllerTest relies on this controller. */ @VisibleForTesting public InspectorController(Context context, Loader loader, ProvidersAccess providers, Consumer<DocumentInfo> header, Consumer<DocumentInfo> details) { Consumer<DocumentInfo> header, Consumer<DocumentInfo> details, Runnable showSnackbar) { checkArgument(context != null); checkArgument(loader != null); checkArgument(providers != null); checkArgument(header != null); checkArgument(details != null); checkArgument(showSnackbar != null); mContext = context; mLoader = loader; mProviders = providers; mHeader = header; mDetails = details; mShowSnackbar = showSnackbar; } public InspectorController(Context context, Loader loader, LinearLayout layout) { public InspectorController(Activity activity, Loader loader, LinearLayout layout) { this(context, this(activity, loader, DocumentsApplication.getProvidersCache (context), DocumentsApplication.getProvidersCache (activity), (HeaderView) layout.findViewById(R.id.inspector_header_view), (DetailsView) layout.findViewById(R.id.inspector_details_view)); (DetailsView) layout.findViewById(R.id.inspector_details_view), () -> { // using a runnable to support unit testing this feature. Snackbars.showInspectorError(activity); } ); } public void reset() { Loading @@ -82,13 +92,16 @@ public final class InspectorController { * Updates the view. */ @Nullable private void updateView(@Nullable DocumentInfo docInfo) { public void updateView(@Nullable DocumentInfo docInfo) { if (docInfo == null) { return; mShowSnackbar.run(); } else { mHeader.accept(docInfo); mDetails.accept(docInfo); } } /** * Shows the selected document in it's content provider. Loading
src/com/android/documentsui/ui/Snackbars.java +7 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,13 @@ public final class Snackbars { makeSnackbar(activity, R.string.rename_error, Snackbar.LENGTH_SHORT).show(); } public static final void showInspectorError(Activity activity) { //Document Inspector uses a different view from other files app activities. final View view = activity.findViewById(R.id.fragment_container); Snackbar.make(view, R.string.file_inspector_load_error, Snackbar.LENGTH_INDEFINITE).show(); } public static final void showCustomTextWithImage(Activity activity, String text, int imageRes) { Snackbar snackbar = makeSnackbar(activity, text, Snackbar.LENGTH_SHORT); View snackbarLayout = snackbar.getView(); Loading
tests/common/com/android/documentsui/testing/TestPredicate.java +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.documentsui.testing; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.concurrent.CompletableFuture; Loading Loading @@ -54,6 +55,10 @@ public class TestPredicate<T> implements Predicate<T> { assertTrue(mCalled); } public void assertNotCalled() { assertFalse(mCalled); } public void nextReturn(boolean value) { mNextReturnValue = value; } Loading