Loading core/java/android/provider/DocumentsContract.java +22 −7 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.provider; import static android.net.TrafficStats.KB_IN_BYTES; import static android.system.OsConstants.SEEK_SET; import android.annotation.Nullable; import android.content.ContentProviderClient; import android.content.ContentResolver; import android.content.Context; Loading Loading @@ -764,18 +765,32 @@ public final class DocumentsContract { * @see #buildDocumentUri(String, String) * @see #buildDocumentUriUsingTree(Uri, String) */ public static boolean isDocumentUri(Context context, Uri uri) { public static boolean isDocumentUri(Context context, @Nullable Uri uri) { if (isContentUri(uri) && isDocumentsProvider(context, uri.getAuthority())) { final List<String> paths = uri.getPathSegments(); if (paths.size() == 2 && PATH_DOCUMENT.equals(paths.get(0))) { return isDocumentsProvider(context, uri.getAuthority()); if (paths.size() == 2) { return PATH_DOCUMENT.equals(paths.get(0)); } else if (paths.size() == 4) { return PATH_TREE.equals(paths.get(0)) && PATH_DOCUMENT.equals(paths.get(2)); } if (paths.size() == 4 && PATH_TREE.equals(paths.get(0)) && PATH_DOCUMENT.equals(paths.get(2))) { return isDocumentsProvider(context, uri.getAuthority()); } return false; } /** {@hide} */ public static boolean isRootUri(Context context, @Nullable Uri uri) { if (isContentUri(uri) && isDocumentsProvider(context, uri.getAuthority())) { final List<String> paths = uri.getPathSegments(); return (paths.size() == 2 && PATH_ROOT.equals(paths.get(0))); } return false; } /** {@hide} */ public static boolean isContentUri(@Nullable Uri uri) { return uri != null && ContentResolver.SCHEME_CONTENT.equals(uri.getScheme()); } /** {@hide} */ public static boolean isTreeUri(Uri uri) { final List<String> paths = uri.getPathSegments(); Loading packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +43 −51 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static com.android.documentsui.DirectoryFragment.ANIM_DOWN; import static com.android.documentsui.DirectoryFragment.ANIM_NONE; import static com.android.documentsui.DirectoryFragment.ANIM_SIDE; import static com.android.documentsui.DirectoryFragment.ANIM_UP; import static com.android.documentsui.Shared.DEBUG; import static com.android.internal.util.Preconditions.checkArgument; import android.app.Activity; Loading Loading @@ -150,12 +151,10 @@ abstract class BaseActivity extends Activity { fileSize.setTitle(LocalPreferences.getDisplayFileSize(this) ? R.string.menu_file_size_hide : R.string.menu_file_size_show); State state = getDisplayState(); sortSize.setVisible(state.showSize); // Only sort by size when visible fileSize.setVisible(!state.showSize); grid.setVisible(state.derivedMode != State.MODE_GRID); list.setVisible(state.derivedMode != State.MODE_LIST); sortSize.setVisible(mState.showSize); // Only sort by size when visible fileSize.setVisible(!mState.showSize); grid.setVisible(mState.derivedMode != State.MODE_GRID); list.setVisible(mState.derivedMode != State.MODE_LIST); advanced.setVisible(!mState.showAdvanced); settings.setVisible((root.flags & Root.FLAG_HAS_SETTINGS) != 0); Loading Loading @@ -185,12 +184,10 @@ abstract class BaseActivity extends Activity { void onStackRestored(boolean restored, boolean external) {} void onRootPicked(RootInfo root) { State state = getDisplayState(); // Clear entire backstack and start in new root state.stack.root = root; state.stack.clear(); state.stackTouched = true; mState.stack.root = root; mState.stack.clear(); mState.stackTouched = true; mSearchManager.update(root); Loading Loading @@ -289,8 +286,8 @@ abstract class BaseActivity extends Activity { } void openDirectory(DocumentInfo doc) { getDisplayState().stack.push(doc); getDisplayState().stackTouched = true; mState.stack.push(doc); mState.stackTouched = true; onCurrentDirectoryChanged(ANIM_DOWN); } Loading Loading @@ -367,16 +364,15 @@ abstract class BaseActivity extends Activity { } void setDisplayAdvancedDevices(boolean display) { State state = getDisplayState(); LocalPreferences.setDisplayAdvancedDevices(this, display); state.showAdvanced = state.forceAdvanced | display; mState.showAdvanced = mState.forceAdvanced | display; RootsFragment.get(getFragmentManager()).onDisplayStateChanged(); invalidateOptionsMenu(); } void setDisplayFileSize(boolean display) { LocalPreferences.setDisplayFileSize(this, display); getDisplayState().showSize = display; mState.showSize = display; DirectoryFragment.get(getFragmentManager()).onDisplayStateChanged(); invalidateOptionsMenu(); } Loading @@ -389,7 +385,7 @@ abstract class BaseActivity extends Activity { * Set state sort order based on explicit user action. */ void setUserSortOrder(int sortOrder) { getDisplayState().userSortOrder = sortOrder; mState.userSortOrder = sortOrder; DirectoryFragment.get(getFragmentManager()).onUserSortOrderChanged(); } Loading @@ -397,7 +393,7 @@ abstract class BaseActivity extends Activity { * Set state mode based on explicit user action. */ void setUserMode(int mode) { getDisplayState().userMode = mode; mState.userMode = mode; DirectoryFragment.get(getFragmentManager()).onUserModeChanged(); } Loading @@ -411,7 +407,7 @@ abstract class BaseActivity extends Activity { @Override protected void onSaveInstanceState(Bundle state) { super.onSaveInstanceState(state); state.putParcelable(EXTRA_STATE, getDisplayState()); state.putParcelable(EXTRA_STATE, mState); } @Override Loading @@ -420,16 +416,15 @@ abstract class BaseActivity extends Activity { } RootInfo getCurrentRoot() { State state = getDisplayState(); if (state.stack.root != null) { return state.stack.root; if (mState.stack.root != null) { return mState.stack.root; } else { return mRoots.getRecentsRoot(); } } public DocumentInfo getCurrentDirectory() { return getDisplayState().stack.peek(); return mState.stack.peek(); } public Executor getExecutorForCurrentDirectory() { Loading Loading @@ -470,9 +465,8 @@ abstract class BaseActivity extends Activity { // Update the restored stack to ensure we have freshest data stack.updateDocuments(getContentResolver()); State state = getDisplayState(); state.stack = stack; state.stackTouched = true; mState.stack = stack; mState.stackTouched = true; onCurrentDirectoryChanged(ANIM_SIDE); } catch (FileNotFoundException e) { Loading Loading @@ -502,9 +496,8 @@ abstract class BaseActivity extends Activity { @Override protected void onPostExecute(DocumentInfo result) { if (result != null) { State state = getDisplayState(); state.stack.push(result); state.stackTouched = true; mState.stack.push(result); mState.stackTouched = true; onCurrentDirectoryChanged(ANIM_SIDE); } } Loading @@ -516,7 +509,9 @@ abstract class BaseActivity extends Activity { @Override protected Void doInBackground(Void... params) { State state = getDisplayState(); if (DEBUG && !mState.stack.isEmpty()) { Log.w(mTag, "Overwriting existing stack."); } RootsCache roots = DocumentsApplication.getRootsCache(BaseActivity.this); // Restore last stack for calling package Loading @@ -528,7 +523,7 @@ abstract class BaseActivity extends Activity { mExternal = cursor.getInt(cursor.getColumnIndex(ResumeColumns.EXTERNAL)) != 0; final byte[] rawStack = cursor.getBlob( cursor.getColumnIndex(ResumeColumns.STACK)); DurableUtils.readFromArray(rawStack, state.stack); DurableUtils.readFromArray(rawStack, mState.stack); mRestoredStack = true; } } catch (IOException e) { Loading @@ -539,13 +534,13 @@ abstract class BaseActivity extends Activity { if (mRestoredStack) { // Update the restored stack to ensure we have freshest data final Collection<RootInfo> matchingRoots = roots.getMatchingRootsBlocking(state); final Collection<RootInfo> matchingRoots = roots.getMatchingRootsBlocking(mState); try { state.stack.updateRoot(matchingRoots); state.stack.updateDocuments(getContentResolver()); mState.stack.updateRoot(matchingRoots); mState.stack.updateDocuments(getContentResolver()); } catch (FileNotFoundException e) { Log.w(mTag, "Failed to restore stack: " + e); state.stack.reset(); mState.stack.reset(); mRestoredStack = false; } } Loading @@ -556,7 +551,7 @@ abstract class BaseActivity extends Activity { @Override protected void onPostExecute(Void result) { if (isDestroyed()) return; getDisplayState().restored = true; mState.restored = true; onCurrentDirectoryChanged(ANIM_NONE); onStackRestored(mRestoredStack, mExternal); } Loading Loading @@ -600,10 +595,9 @@ abstract class BaseActivity extends Activity { return; } State state = getDisplayState(); while (state.stack.size() > position + 1) { state.stackTouched = true; state.stack.pop(); while (mState.stack.size() > position + 1) { mState.stackTouched = true; mState.stack.pop(); } onCurrentDirectoryChanged(ANIM_UP); } Loading @@ -620,13 +614,12 @@ abstract class BaseActivity extends Activity { final class StackAdapter extends BaseAdapter { @Override public int getCount() { return getDisplayState().stack.size(); return mState.stack.size(); } @Override public DocumentInfo getItem(int position) { State state = getDisplayState(); return state.stack.get(state.stack.size() - position - 1); return mState.stack.get(mState.stack.size() - position - 1); } @Override Loading Loading @@ -714,13 +707,12 @@ abstract class BaseActivity extends Activity { return; } State state = getDisplayState(); if (state.currentSearch != null) { if (mState.currentSearch != null) { mMenu.expandActionView(); mView.setIconified(false); mView.clearFocus(); mView.setQuery(state.currentSearch, false); mView.setQuery(mState.currentSearch, false); } else { mView.clearFocus(); if (!mView.isIconified()) { Loading @@ -746,7 +738,7 @@ abstract class BaseActivity extends Activity { mMenu.setVisible(visible); if (!visible) { getDisplayState().currentSearch = null; mState.currentSearch = null; } } Loading @@ -764,7 +756,7 @@ abstract class BaseActivity extends Activity { } boolean isSearching() { return getDisplayState().currentSearch != null; return mState.currentSearch != null; } boolean isExpanded() { Loading @@ -779,7 +771,7 @@ abstract class BaseActivity extends Activity { return false; } getDisplayState().currentSearch = null; mState.currentSearch = null; onCurrentDirectoryChanged(ANIM_NONE); return false; } Loading @@ -798,7 +790,7 @@ abstract class BaseActivity extends Activity { mIgnoreNextCollapse = false; return true; } getDisplayState().currentSearch = null; mState.currentSearch = null; onCurrentDirectoryChanged(ANIM_NONE); return true; } Loading @@ -806,7 +798,7 @@ abstract class BaseActivity extends Activity { @Override public boolean onQueryTextSubmit(String query) { mSearchExpanded = true; getDisplayState().currentSearch = query; mState.currentSearch = query; mView.clearFocus(); onCurrentDirectoryChanged(ANIM_NONE); return true; Loading packages/DocumentsUI/src/com/android/documentsui/CopyService.java +4 −5 Original line number Diff line number Diff line Loading @@ -62,7 +62,6 @@ public class CopyService extends IntentService { private static final String EXTRA_CANCEL = "com.android.documentsui.CANCEL"; public static final String EXTRA_SRC_LIST = "com.android.documentsui.SRC_LIST"; public static final String EXTRA_STACK = "com.android.documentsui.STACK"; public static final String EXTRA_FAILURE = "com.android.documentsui.FAILURE"; public static final String EXTRA_TRANSFER_MODE = "com.android.documentsui.TRANSFER_MODE"; Loading Loading @@ -115,7 +114,7 @@ public class CopyService extends IntentService { final Intent copyIntent = new Intent(activity, CopyService.class); copyIntent.putParcelableArrayListExtra( EXTRA_SRC_LIST, new ArrayList<DocumentInfo>(srcDocs)); copyIntent.putExtra(EXTRA_STACK, (Parcelable) dstStack); copyIntent.putExtra(Shared.EXTRA_STACK, (Parcelable) dstStack); copyIntent.putExtra(EXTRA_TRANSFER_MODE, mode); int toastMessage = (mode == TRANSFER_MODE_COPY) ? R.plurals.copy_begin Loading @@ -142,7 +141,7 @@ public class CopyService extends IntentService { } final ArrayList<DocumentInfo> srcs = intent.getParcelableArrayListExtra(EXTRA_SRC_LIST); final DocumentStack stack = intent.getParcelableExtra(EXTRA_STACK); final DocumentStack stack = intent.getParcelableExtra(Shared.EXTRA_STACK); // Copy by default. final int transferMode = intent.getIntExtra(EXTRA_TRANSFER_MODE, TRANSFER_MODE_COPY); Loading Loading @@ -173,7 +172,7 @@ public class CopyService extends IntentService { Log.e(TAG, mFailedFiles.size() + " files failed to copy"); final Context context = getApplicationContext(); final Intent navigateIntent = new Intent(context, FilesActivity.class); navigateIntent.putExtra(EXTRA_STACK, (Parcelable) stack); navigateIntent.putExtra(Shared.EXTRA_STACK, (Parcelable) stack); navigateIntent.putExtra(EXTRA_FAILURE, FAILURE_COPY); navigateIntent.putExtra(EXTRA_TRANSFER_MODE, transferMode); navigateIntent.putParcelableArrayListExtra(EXTRA_SRC_LIST, mFailedFiles); Loading Loading @@ -221,7 +220,7 @@ public class CopyService extends IntentService { final Context context = getApplicationContext(); final Intent navigateIntent = new Intent(context, FilesActivity.class); navigateIntent.putExtra(EXTRA_STACK, (Parcelable) stack); navigateIntent.putExtra(Shared.EXTRA_STACK, (Parcelable) stack); final String contentTitle = getString(copying ? R.string.copy_notification_title : R.string.move_notification_title); Loading packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -423,7 +423,7 @@ public class DirectoryFragment extends Fragment { } CopyService.start(getActivity(), getDisplayState(this).selectedDocumentsForCopy, (DocumentStack) data.getParcelableExtra(CopyService.EXTRA_STACK), (DocumentStack) data.getParcelableExtra(Shared.EXTRA_STACK), data.getIntExtra(CopyService.EXTRA_TRANSFER_MODE, CopyService.TRANSFER_MODE_NONE)); } Loading packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -510,7 +510,7 @@ public class DocumentsActivity extends BaseActivity { } else if (mState.action == ACTION_OPEN_COPY_DESTINATION) { // Picking a copy destination is only used internally by us, so we // don't need to extend permissions to the caller. intent.putExtra(CopyService.EXTRA_STACK, (Parcelable) mState.stack); intent.putExtra(Shared.EXTRA_STACK, (Parcelable) mState.stack); intent.putExtra(CopyService.EXTRA_TRANSFER_MODE, mState.transferMode); } else { intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION Loading Loading
core/java/android/provider/DocumentsContract.java +22 −7 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.provider; import static android.net.TrafficStats.KB_IN_BYTES; import static android.system.OsConstants.SEEK_SET; import android.annotation.Nullable; import android.content.ContentProviderClient; import android.content.ContentResolver; import android.content.Context; Loading Loading @@ -764,18 +765,32 @@ public final class DocumentsContract { * @see #buildDocumentUri(String, String) * @see #buildDocumentUriUsingTree(Uri, String) */ public static boolean isDocumentUri(Context context, Uri uri) { public static boolean isDocumentUri(Context context, @Nullable Uri uri) { if (isContentUri(uri) && isDocumentsProvider(context, uri.getAuthority())) { final List<String> paths = uri.getPathSegments(); if (paths.size() == 2 && PATH_DOCUMENT.equals(paths.get(0))) { return isDocumentsProvider(context, uri.getAuthority()); if (paths.size() == 2) { return PATH_DOCUMENT.equals(paths.get(0)); } else if (paths.size() == 4) { return PATH_TREE.equals(paths.get(0)) && PATH_DOCUMENT.equals(paths.get(2)); } if (paths.size() == 4 && PATH_TREE.equals(paths.get(0)) && PATH_DOCUMENT.equals(paths.get(2))) { return isDocumentsProvider(context, uri.getAuthority()); } return false; } /** {@hide} */ public static boolean isRootUri(Context context, @Nullable Uri uri) { if (isContentUri(uri) && isDocumentsProvider(context, uri.getAuthority())) { final List<String> paths = uri.getPathSegments(); return (paths.size() == 2 && PATH_ROOT.equals(paths.get(0))); } return false; } /** {@hide} */ public static boolean isContentUri(@Nullable Uri uri) { return uri != null && ContentResolver.SCHEME_CONTENT.equals(uri.getScheme()); } /** {@hide} */ public static boolean isTreeUri(Uri uri) { final List<String> paths = uri.getPathSegments(); Loading
packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +43 −51 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static com.android.documentsui.DirectoryFragment.ANIM_DOWN; import static com.android.documentsui.DirectoryFragment.ANIM_NONE; import static com.android.documentsui.DirectoryFragment.ANIM_SIDE; import static com.android.documentsui.DirectoryFragment.ANIM_UP; import static com.android.documentsui.Shared.DEBUG; import static com.android.internal.util.Preconditions.checkArgument; import android.app.Activity; Loading Loading @@ -150,12 +151,10 @@ abstract class BaseActivity extends Activity { fileSize.setTitle(LocalPreferences.getDisplayFileSize(this) ? R.string.menu_file_size_hide : R.string.menu_file_size_show); State state = getDisplayState(); sortSize.setVisible(state.showSize); // Only sort by size when visible fileSize.setVisible(!state.showSize); grid.setVisible(state.derivedMode != State.MODE_GRID); list.setVisible(state.derivedMode != State.MODE_LIST); sortSize.setVisible(mState.showSize); // Only sort by size when visible fileSize.setVisible(!mState.showSize); grid.setVisible(mState.derivedMode != State.MODE_GRID); list.setVisible(mState.derivedMode != State.MODE_LIST); advanced.setVisible(!mState.showAdvanced); settings.setVisible((root.flags & Root.FLAG_HAS_SETTINGS) != 0); Loading Loading @@ -185,12 +184,10 @@ abstract class BaseActivity extends Activity { void onStackRestored(boolean restored, boolean external) {} void onRootPicked(RootInfo root) { State state = getDisplayState(); // Clear entire backstack and start in new root state.stack.root = root; state.stack.clear(); state.stackTouched = true; mState.stack.root = root; mState.stack.clear(); mState.stackTouched = true; mSearchManager.update(root); Loading Loading @@ -289,8 +286,8 @@ abstract class BaseActivity extends Activity { } void openDirectory(DocumentInfo doc) { getDisplayState().stack.push(doc); getDisplayState().stackTouched = true; mState.stack.push(doc); mState.stackTouched = true; onCurrentDirectoryChanged(ANIM_DOWN); } Loading Loading @@ -367,16 +364,15 @@ abstract class BaseActivity extends Activity { } void setDisplayAdvancedDevices(boolean display) { State state = getDisplayState(); LocalPreferences.setDisplayAdvancedDevices(this, display); state.showAdvanced = state.forceAdvanced | display; mState.showAdvanced = mState.forceAdvanced | display; RootsFragment.get(getFragmentManager()).onDisplayStateChanged(); invalidateOptionsMenu(); } void setDisplayFileSize(boolean display) { LocalPreferences.setDisplayFileSize(this, display); getDisplayState().showSize = display; mState.showSize = display; DirectoryFragment.get(getFragmentManager()).onDisplayStateChanged(); invalidateOptionsMenu(); } Loading @@ -389,7 +385,7 @@ abstract class BaseActivity extends Activity { * Set state sort order based on explicit user action. */ void setUserSortOrder(int sortOrder) { getDisplayState().userSortOrder = sortOrder; mState.userSortOrder = sortOrder; DirectoryFragment.get(getFragmentManager()).onUserSortOrderChanged(); } Loading @@ -397,7 +393,7 @@ abstract class BaseActivity extends Activity { * Set state mode based on explicit user action. */ void setUserMode(int mode) { getDisplayState().userMode = mode; mState.userMode = mode; DirectoryFragment.get(getFragmentManager()).onUserModeChanged(); } Loading @@ -411,7 +407,7 @@ abstract class BaseActivity extends Activity { @Override protected void onSaveInstanceState(Bundle state) { super.onSaveInstanceState(state); state.putParcelable(EXTRA_STATE, getDisplayState()); state.putParcelable(EXTRA_STATE, mState); } @Override Loading @@ -420,16 +416,15 @@ abstract class BaseActivity extends Activity { } RootInfo getCurrentRoot() { State state = getDisplayState(); if (state.stack.root != null) { return state.stack.root; if (mState.stack.root != null) { return mState.stack.root; } else { return mRoots.getRecentsRoot(); } } public DocumentInfo getCurrentDirectory() { return getDisplayState().stack.peek(); return mState.stack.peek(); } public Executor getExecutorForCurrentDirectory() { Loading Loading @@ -470,9 +465,8 @@ abstract class BaseActivity extends Activity { // Update the restored stack to ensure we have freshest data stack.updateDocuments(getContentResolver()); State state = getDisplayState(); state.stack = stack; state.stackTouched = true; mState.stack = stack; mState.stackTouched = true; onCurrentDirectoryChanged(ANIM_SIDE); } catch (FileNotFoundException e) { Loading Loading @@ -502,9 +496,8 @@ abstract class BaseActivity extends Activity { @Override protected void onPostExecute(DocumentInfo result) { if (result != null) { State state = getDisplayState(); state.stack.push(result); state.stackTouched = true; mState.stack.push(result); mState.stackTouched = true; onCurrentDirectoryChanged(ANIM_SIDE); } } Loading @@ -516,7 +509,9 @@ abstract class BaseActivity extends Activity { @Override protected Void doInBackground(Void... params) { State state = getDisplayState(); if (DEBUG && !mState.stack.isEmpty()) { Log.w(mTag, "Overwriting existing stack."); } RootsCache roots = DocumentsApplication.getRootsCache(BaseActivity.this); // Restore last stack for calling package Loading @@ -528,7 +523,7 @@ abstract class BaseActivity extends Activity { mExternal = cursor.getInt(cursor.getColumnIndex(ResumeColumns.EXTERNAL)) != 0; final byte[] rawStack = cursor.getBlob( cursor.getColumnIndex(ResumeColumns.STACK)); DurableUtils.readFromArray(rawStack, state.stack); DurableUtils.readFromArray(rawStack, mState.stack); mRestoredStack = true; } } catch (IOException e) { Loading @@ -539,13 +534,13 @@ abstract class BaseActivity extends Activity { if (mRestoredStack) { // Update the restored stack to ensure we have freshest data final Collection<RootInfo> matchingRoots = roots.getMatchingRootsBlocking(state); final Collection<RootInfo> matchingRoots = roots.getMatchingRootsBlocking(mState); try { state.stack.updateRoot(matchingRoots); state.stack.updateDocuments(getContentResolver()); mState.stack.updateRoot(matchingRoots); mState.stack.updateDocuments(getContentResolver()); } catch (FileNotFoundException e) { Log.w(mTag, "Failed to restore stack: " + e); state.stack.reset(); mState.stack.reset(); mRestoredStack = false; } } Loading @@ -556,7 +551,7 @@ abstract class BaseActivity extends Activity { @Override protected void onPostExecute(Void result) { if (isDestroyed()) return; getDisplayState().restored = true; mState.restored = true; onCurrentDirectoryChanged(ANIM_NONE); onStackRestored(mRestoredStack, mExternal); } Loading Loading @@ -600,10 +595,9 @@ abstract class BaseActivity extends Activity { return; } State state = getDisplayState(); while (state.stack.size() > position + 1) { state.stackTouched = true; state.stack.pop(); while (mState.stack.size() > position + 1) { mState.stackTouched = true; mState.stack.pop(); } onCurrentDirectoryChanged(ANIM_UP); } Loading @@ -620,13 +614,12 @@ abstract class BaseActivity extends Activity { final class StackAdapter extends BaseAdapter { @Override public int getCount() { return getDisplayState().stack.size(); return mState.stack.size(); } @Override public DocumentInfo getItem(int position) { State state = getDisplayState(); return state.stack.get(state.stack.size() - position - 1); return mState.stack.get(mState.stack.size() - position - 1); } @Override Loading Loading @@ -714,13 +707,12 @@ abstract class BaseActivity extends Activity { return; } State state = getDisplayState(); if (state.currentSearch != null) { if (mState.currentSearch != null) { mMenu.expandActionView(); mView.setIconified(false); mView.clearFocus(); mView.setQuery(state.currentSearch, false); mView.setQuery(mState.currentSearch, false); } else { mView.clearFocus(); if (!mView.isIconified()) { Loading @@ -746,7 +738,7 @@ abstract class BaseActivity extends Activity { mMenu.setVisible(visible); if (!visible) { getDisplayState().currentSearch = null; mState.currentSearch = null; } } Loading @@ -764,7 +756,7 @@ abstract class BaseActivity extends Activity { } boolean isSearching() { return getDisplayState().currentSearch != null; return mState.currentSearch != null; } boolean isExpanded() { Loading @@ -779,7 +771,7 @@ abstract class BaseActivity extends Activity { return false; } getDisplayState().currentSearch = null; mState.currentSearch = null; onCurrentDirectoryChanged(ANIM_NONE); return false; } Loading @@ -798,7 +790,7 @@ abstract class BaseActivity extends Activity { mIgnoreNextCollapse = false; return true; } getDisplayState().currentSearch = null; mState.currentSearch = null; onCurrentDirectoryChanged(ANIM_NONE); return true; } Loading @@ -806,7 +798,7 @@ abstract class BaseActivity extends Activity { @Override public boolean onQueryTextSubmit(String query) { mSearchExpanded = true; getDisplayState().currentSearch = query; mState.currentSearch = query; mView.clearFocus(); onCurrentDirectoryChanged(ANIM_NONE); return true; Loading
packages/DocumentsUI/src/com/android/documentsui/CopyService.java +4 −5 Original line number Diff line number Diff line Loading @@ -62,7 +62,6 @@ public class CopyService extends IntentService { private static final String EXTRA_CANCEL = "com.android.documentsui.CANCEL"; public static final String EXTRA_SRC_LIST = "com.android.documentsui.SRC_LIST"; public static final String EXTRA_STACK = "com.android.documentsui.STACK"; public static final String EXTRA_FAILURE = "com.android.documentsui.FAILURE"; public static final String EXTRA_TRANSFER_MODE = "com.android.documentsui.TRANSFER_MODE"; Loading Loading @@ -115,7 +114,7 @@ public class CopyService extends IntentService { final Intent copyIntent = new Intent(activity, CopyService.class); copyIntent.putParcelableArrayListExtra( EXTRA_SRC_LIST, new ArrayList<DocumentInfo>(srcDocs)); copyIntent.putExtra(EXTRA_STACK, (Parcelable) dstStack); copyIntent.putExtra(Shared.EXTRA_STACK, (Parcelable) dstStack); copyIntent.putExtra(EXTRA_TRANSFER_MODE, mode); int toastMessage = (mode == TRANSFER_MODE_COPY) ? R.plurals.copy_begin Loading @@ -142,7 +141,7 @@ public class CopyService extends IntentService { } final ArrayList<DocumentInfo> srcs = intent.getParcelableArrayListExtra(EXTRA_SRC_LIST); final DocumentStack stack = intent.getParcelableExtra(EXTRA_STACK); final DocumentStack stack = intent.getParcelableExtra(Shared.EXTRA_STACK); // Copy by default. final int transferMode = intent.getIntExtra(EXTRA_TRANSFER_MODE, TRANSFER_MODE_COPY); Loading Loading @@ -173,7 +172,7 @@ public class CopyService extends IntentService { Log.e(TAG, mFailedFiles.size() + " files failed to copy"); final Context context = getApplicationContext(); final Intent navigateIntent = new Intent(context, FilesActivity.class); navigateIntent.putExtra(EXTRA_STACK, (Parcelable) stack); navigateIntent.putExtra(Shared.EXTRA_STACK, (Parcelable) stack); navigateIntent.putExtra(EXTRA_FAILURE, FAILURE_COPY); navigateIntent.putExtra(EXTRA_TRANSFER_MODE, transferMode); navigateIntent.putParcelableArrayListExtra(EXTRA_SRC_LIST, mFailedFiles); Loading Loading @@ -221,7 +220,7 @@ public class CopyService extends IntentService { final Context context = getApplicationContext(); final Intent navigateIntent = new Intent(context, FilesActivity.class); navigateIntent.putExtra(EXTRA_STACK, (Parcelable) stack); navigateIntent.putExtra(Shared.EXTRA_STACK, (Parcelable) stack); final String contentTitle = getString(copying ? R.string.copy_notification_title : R.string.move_notification_title); Loading
packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -423,7 +423,7 @@ public class DirectoryFragment extends Fragment { } CopyService.start(getActivity(), getDisplayState(this).selectedDocumentsForCopy, (DocumentStack) data.getParcelableExtra(CopyService.EXTRA_STACK), (DocumentStack) data.getParcelableExtra(Shared.EXTRA_STACK), data.getIntExtra(CopyService.EXTRA_TRANSFER_MODE, CopyService.TRANSFER_MODE_NONE)); } Loading
packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -510,7 +510,7 @@ public class DocumentsActivity extends BaseActivity { } else if (mState.action == ACTION_OPEN_COPY_DESTINATION) { // Picking a copy destination is only used internally by us, so we // don't need to extend permissions to the caller. intent.putExtra(CopyService.EXTRA_STACK, (Parcelable) mState.stack); intent.putExtra(Shared.EXTRA_STACK, (Parcelable) mState.stack); intent.putExtra(CopyService.EXTRA_TRANSFER_MODE, mState.transferMode); } else { intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION Loading