Loading src/com/android/documentsui/FocusManager.java +13 −3 Original line number Diff line number Diff line Loading @@ -129,14 +129,14 @@ public final class FocusManager implements FocusHandler { @Override public void onFocusChange(View v, boolean hasFocus) { // Remember focus events on items. if (hasFocus && v.getParent() == mScope.view) { if (hasFocus && mScope.isValid() && v.getParent() == mScope.view) { mScope.lastFocusPosition = mScope.view.getChildAdapterPosition(v); } } @Override public boolean focusDirectoryList() { if (mScope.adapter.getItemCount() == 0) { if (!mScope.isValid() || mScope.adapter.getItemCount() == 0) { if (DEBUG) Log.v(TAG, "Nothing to focus."); return false; } Loading Loading @@ -180,8 +180,10 @@ public final class FocusManager implements FocusHandler { @Override public void clearFocus() { if (mScope.isValid()) { mScope.view.clearFocus(); } } /* * Attempts to put focus on the document associated with the given modelId. If item does not Loading @@ -190,6 +192,10 @@ public final class FocusManager implements FocusHandler { */ @Override public void focusDocument(String modelId) { if (!mScope.isValid()) { if (DEBUG) Log.v(TAG, "Invalid mScope. No focus will be done."); return; } int pos = mScope.adapter.getAdapterPosition(modelId); if (pos != -1 && mScope.view.findViewHolderForAdapterPosition(pos) != null) { focusItem(pos); Loading Loading @@ -663,5 +669,9 @@ public final class FocusManager implements FocusHandler { private @Nullable String pendingFocusId; private int lastFocusPosition = RecyclerView.NO_POSITION; boolean isValid() { return (view != null && model != null); } } } tests/unit/com/android/documentsui/FocusManagerTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.documentsui.testing.SelectionHelpers; import com.android.documentsui.testing.TestFeatures; import com.android.documentsui.testing.TestGridLayoutManager; import com.android.documentsui.testing.TestRecyclerView; import com.android.documentsui.testing.Views; import java.util.ArrayList; import java.util.List; Loading Loading @@ -88,4 +89,32 @@ public class FocusManagerTest extends AndroidTestCase { mSelectionMgr.select("0"); assertFalse(mManager.focusDirectoryList()); } public void testFocusDirectoryList_invalidContentScope() { mManager = new FocusManager( mFeatures, SelectionHelpers.createTestInstance(), null, null, 0); // pass if no exception is thrown. mManager.focusDirectoryList(); } public void testOnFocusChange_invalidContentScope() { mManager = new FocusManager( mFeatures, SelectionHelpers.createTestInstance(), null, null, 0); // pass if no exception is thrown. mManager.onFocusChange(Views.createTestView(), true); } public void testClearFocus_invalidContentScope() { mManager = new FocusManager( mFeatures, SelectionHelpers.createTestInstance(), null, null, 0); // pass if no exception is thrown. mManager.clearFocus(); } public void testFocusDocument_invalidContentScope() { mManager = new FocusManager( mFeatures, SelectionHelpers.createTestInstance(), null, null, 0); // pass if no exception is thrown. mManager.focusDocument(Integer.toString(0)); } } Loading
src/com/android/documentsui/FocusManager.java +13 −3 Original line number Diff line number Diff line Loading @@ -129,14 +129,14 @@ public final class FocusManager implements FocusHandler { @Override public void onFocusChange(View v, boolean hasFocus) { // Remember focus events on items. if (hasFocus && v.getParent() == mScope.view) { if (hasFocus && mScope.isValid() && v.getParent() == mScope.view) { mScope.lastFocusPosition = mScope.view.getChildAdapterPosition(v); } } @Override public boolean focusDirectoryList() { if (mScope.adapter.getItemCount() == 0) { if (!mScope.isValid() || mScope.adapter.getItemCount() == 0) { if (DEBUG) Log.v(TAG, "Nothing to focus."); return false; } Loading Loading @@ -180,8 +180,10 @@ public final class FocusManager implements FocusHandler { @Override public void clearFocus() { if (mScope.isValid()) { mScope.view.clearFocus(); } } /* * Attempts to put focus on the document associated with the given modelId. If item does not Loading @@ -190,6 +192,10 @@ public final class FocusManager implements FocusHandler { */ @Override public void focusDocument(String modelId) { if (!mScope.isValid()) { if (DEBUG) Log.v(TAG, "Invalid mScope. No focus will be done."); return; } int pos = mScope.adapter.getAdapterPosition(modelId); if (pos != -1 && mScope.view.findViewHolderForAdapterPosition(pos) != null) { focusItem(pos); Loading Loading @@ -663,5 +669,9 @@ public final class FocusManager implements FocusHandler { private @Nullable String pendingFocusId; private int lastFocusPosition = RecyclerView.NO_POSITION; boolean isValid() { return (view != null && model != null); } } }
tests/unit/com/android/documentsui/FocusManagerTest.java +29 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.documentsui.testing.SelectionHelpers; import com.android.documentsui.testing.TestFeatures; import com.android.documentsui.testing.TestGridLayoutManager; import com.android.documentsui.testing.TestRecyclerView; import com.android.documentsui.testing.Views; import java.util.ArrayList; import java.util.List; Loading Loading @@ -88,4 +89,32 @@ public class FocusManagerTest extends AndroidTestCase { mSelectionMgr.select("0"); assertFalse(mManager.focusDirectoryList()); } public void testFocusDirectoryList_invalidContentScope() { mManager = new FocusManager( mFeatures, SelectionHelpers.createTestInstance(), null, null, 0); // pass if no exception is thrown. mManager.focusDirectoryList(); } public void testOnFocusChange_invalidContentScope() { mManager = new FocusManager( mFeatures, SelectionHelpers.createTestInstance(), null, null, 0); // pass if no exception is thrown. mManager.onFocusChange(Views.createTestView(), true); } public void testClearFocus_invalidContentScope() { mManager = new FocusManager( mFeatures, SelectionHelpers.createTestInstance(), null, null, 0); // pass if no exception is thrown. mManager.clearFocus(); } public void testFocusDocument_invalidContentScope() { mManager = new FocusManager( mFeatures, SelectionHelpers.createTestInstance(), null, null, 0); // pass if no exception is thrown. mManager.focusDocument(Integer.toString(0)); } }