diff options
author | 2025-03-03 18:43:37 -0800 | |
---|---|---|
committer | 2025-03-03 18:43:37 -0800 | |
commit | 725f07abdaf81447c77e0b07f66c77cb355f6e40 (patch) | |
tree | 835aa464768f48378e45620c1fe8d8578097c69c | |
parent | 4d0d9d44493f3e4ab69da4ff5f01884ba56894d9 (diff) | |
parent | f5ac84e6b4f0335b033122d1fc59805eb44dfa37 (diff) |
Merge "Extract flags into their own Util class" into main
33 files changed, 203 insertions, 111 deletions
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg index ebc1264c7..8f318d23d 100644 --- a/PREUPLOAD.cfg +++ b/PREUPLOAD.cfg @@ -1,4 +1,5 @@ [Hook Scripts] checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT} - ktlint_hook = ${REPO_ROOT}/prebuilts/ktlint/ktlint.py -f ${PREUPLOAD_FILES} +docsui_checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT} --config_xml ${REPO_ROOT}/packages/apps/DocumentsUI/preupload-checks.xml + diff --git a/preupload-checks.xml b/preupload-checks.xml new file mode 100644 index 000000000..b30b4240b --- /dev/null +++ b/preupload-checks.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2025 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. + --> +<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd"> +<module name="Checker"> + <module name="TreeWalker"> + <module name="RegexpSinglelineJava"> + <property name="ignoreComments" value="true" /> + <property name="severity" value="error" /> + <property name="format" value="com.android.documentsui.flags.Flags" /> + <property name="message" value="Please don't use Flags.* directly, instead add the flag to FlagUtils and use that instead." /> + </module> + </module> +</module> diff --git a/src/com/android/documentsui/AbstractActionHandler.java b/src/com/android/documentsui/AbstractActionHandler.java index 619162f90..de193e235 100644 --- a/src/com/android/documentsui/AbstractActionHandler.java +++ b/src/com/android/documentsui/AbstractActionHandler.java @@ -19,8 +19,8 @@ package com.android.documentsui; import static com.android.documentsui.base.DocumentInfo.getCursorInt; import static com.android.documentsui.base.DocumentInfo.getCursorString; import static com.android.documentsui.base.SharedMinimal.DEBUG; -import static com.android.documentsui.flags.Flags.desktopFileHandling; -import static com.android.documentsui.flags.Flags.useSearchV2Rw; +import static com.android.documentsui.util.FlagUtils.isDesktopFileHandlingFlagEnabled; +import static com.android.documentsui.util.FlagUtils.isUseSearchV2RwFlagEnabled; import android.app.PendingIntent; import android.content.ActivityNotFoundException; @@ -576,7 +576,7 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA flags |= Intent.FLAG_GRANT_WRITE_URI_PERMISSION; } // On desktop users expect files to open in a new window. - if (desktopFileHandling()) { + if (isDesktopFileHandlingFlagEnabled()) { // The combination of NEW_DOCUMENT and MULTIPLE_TASK allows multiple instances of the // same activity to open in separate windows. flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK; @@ -916,7 +916,7 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA mState.stack.changeRoot(mActivity.getCurrentRoot()); } - if (useSearchV2Rw()) { + if (isUseSearchV2RwFlagEnabled()) { return onCreateLoaderV2(id, args); } return onCreateLoaderV1(id, args); diff --git a/src/com/android/documentsui/ActionModeController.java b/src/com/android/documentsui/ActionModeController.java index 6259a8bba..931942fca 100644 --- a/src/com/android/documentsui/ActionModeController.java +++ b/src/com/android/documentsui/ActionModeController.java @@ -17,7 +17,7 @@ package com.android.documentsui; import static com.android.documentsui.base.SharedMinimal.DEBUG; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.app.Activity; import android.util.Log; @@ -138,7 +138,7 @@ public class ActionModeController extends SelectionObserver<String> // Re-enable TalkBack for the toolbars, as they are no longer covered by action mode. int[] toolbarIds = - useMaterial3() + isUseMaterial3FlagEnabled() ? new int[] {R.id.toolbar} : new int[] {R.id.toolbar, R.id.roots_toolbar}; mScope.accessibilityImportanceSetter.setAccessibilityImportance( @@ -159,7 +159,7 @@ public class ActionModeController extends SelectionObserver<String> // Hide the toolbars if action mode is enabled, so TalkBack doesn't navigate to // these controls when using linear navigation. int[] toolbarIds = - useMaterial3() + isUseMaterial3FlagEnabled() ? new int[] {R.id.toolbar} : new int[] {R.id.toolbar, R.id.roots_toolbar}; mScope.accessibilityImportanceSetter.setAccessibilityImportance( diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java index aa46acbe9..11717de4e 100644 --- a/src/com/android/documentsui/BaseActivity.java +++ b/src/com/android/documentsui/BaseActivity.java @@ -19,7 +19,7 @@ package com.android.documentsui; import static com.android.documentsui.base.Shared.EXTRA_BENCHMARK; import static com.android.documentsui.base.SharedMinimal.DEBUG; import static com.android.documentsui.base.State.MODE_GRID; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.content.Context; import android.content.Intent; @@ -184,7 +184,7 @@ public abstract class BaseActivity // in case Activity continuously encounter resource not found exception. getTheme().applyStyle(R.style.DocumentsDefaultTheme, false); - if (useMaterial3() && SdkLevel.isAtLeastS()) { + if (isUseMaterial3FlagEnabled() && SdkLevel.isAtLeastS()) { DynamicColors.applyToActivityIfAvailable(this); } @@ -205,7 +205,7 @@ public abstract class BaseActivity mDrawer = DrawerController.create(this, mInjector.config); Metrics.logActivityLaunch(mState, intent); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { View navRailRoots = findViewById(R.id.nav_rail_container_roots); if (navRailRoots != null) { // Bind event listener for the burger menu on nav rail. @@ -369,7 +369,7 @@ public abstract class BaseActivity if (roots != null) { roots.onSelectedUserChanged(); } - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { final RootsFragment navRailRoots = RootsFragment.getNavRail(getSupportFragmentManager()); if (navRailRoots != null) { @@ -397,7 +397,7 @@ public abstract class BaseActivity }); mSortController = SortController.create(this, mState.derivedMode, mState.sortModel); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { View previewIconPlaceholder = findViewById(R.id.preview_icon_placeholder); if (previewIconPlaceholder != null) { previewIconPlaceholder.setVisibility( @@ -454,7 +454,7 @@ public abstract class BaseActivity super.onPostCreate(savedInstanceState); Runnable finishActionMode = - (useMaterial3()) + (isUseMaterial3FlagEnabled()) ? mNavigator::closeSelectionBar : mInjector.actionModeController::finishActionMode; @@ -479,7 +479,7 @@ public abstract class BaseActivity @Override public boolean onCreateOptionsMenu(Menu menu) { - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { // In Material3 the menu is now inflated in the `NavigationViewMenu`. This is currently // to allow for us to inflate between the action_menu and the activity menu. Once the // Material 3 flag is removed, the menus will be merged and we can rely on this single @@ -510,7 +510,7 @@ public abstract class BaseActivity public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); // Remove the subMenu when material3 is launched b/379776735. - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { if (mNavigator != null) { mNavigator.updateActionMenu(); } @@ -574,7 +574,7 @@ public abstract class BaseActivity insets.getSystemWindowInsetTop(), insets.getSystemWindowInsetRight(), 0); // in M3, no additional bottom gap in full screen mode. - if (!useMaterial3()) { + if (!isUseMaterial3FlagEnabled()) { View saveContainer = findViewById(R.id.container_save); saveContainer.setPadding( 0, 0, 0, insets.getSystemWindowInsetBottom()); @@ -617,7 +617,7 @@ public abstract class BaseActivity return; } - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mNavigator.closeSelectionBar(); } else { mInjector.actionModeController.finishActionMode(); @@ -759,7 +759,7 @@ public abstract class BaseActivity if (roots != null) { roots.onCurrentRootChanged(); } - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { final RootsFragment navRailRoots = RootsFragment.getNavRail(getSupportFragmentManager()); if (navRailRoots != null) { @@ -843,7 +843,7 @@ public abstract class BaseActivity mState.derivedMode = mode; // Remove the subMenu when material3 is launched b/379776735. - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mInjector.menuManager.updateSubMenu(null); } else { final ActionMenuView subMenuView = findViewById(R.id.sub_menu); diff --git a/src/com/android/documentsui/DrawerController.java b/src/com/android/documentsui/DrawerController.java index 88c41b3f2..a519b6001 100644 --- a/src/com/android/documentsui/DrawerController.java +++ b/src/com/android/documentsui/DrawerController.java @@ -17,7 +17,7 @@ package com.android.documentsui; import static com.android.documentsui.base.SharedMinimal.DEBUG; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.app.Activity; import android.util.Log; @@ -208,7 +208,7 @@ public abstract class DrawerController implements DrawerListener { @Override void setTitle(String title) { - if (!useMaterial3()) { + if (!isUseMaterial3FlagEnabled()) { mToolbar.setTitle(title); } } diff --git a/src/com/android/documentsui/Injector.java b/src/com/android/documentsui/Injector.java index 5fd716a97..6b68ba1f1 100644 --- a/src/com/android/documentsui/Injector.java +++ b/src/com/android/documentsui/Injector.java @@ -15,7 +15,7 @@ */ package com.android.documentsui; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.RetentionPolicy.SOURCE; @@ -129,7 +129,7 @@ public class Injector<T extends ActionHandler> { public final ActionModeController getActionModeController( SelectionDetails selectionDetails, EventHandler<MenuItem> menuItemClicker) { - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { return null; } return actionModeController.reset(selectionDetails, menuItemClicker); diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java index 126a777da..5f17d7e02 100644 --- a/src/com/android/documentsui/MenuManager.java +++ b/src/com/android/documentsui/MenuManager.java @@ -16,7 +16,8 @@ package com.android.documentsui; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; +import static com.android.documentsui.util.FlagUtils.isZipNgFlagEnabled; import android.view.KeyboardShortcutGroup; import android.view.Menu; @@ -33,7 +34,6 @@ import com.android.documentsui.base.Menus; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.State; import com.android.documentsui.dirlist.DirectoryFragment; -import com.android.documentsui.flags.Flags; import com.android.documentsui.queries.SearchViewManager; import com.android.documentsui.sidebar.RootsFragment; @@ -93,7 +93,7 @@ public abstract class MenuManager { return; } updateCreateDir(mOptionMenu.findItem(R.id.option_menu_create_dir)); - if (Flags.zipNg()) { + if (isZipNgFlagEnabled()) { updateExtractAll(mOptionMenu.findItem(R.id.option_menu_extract_all)); } updateSettings(mOptionMenu.findItem(R.id.option_menu_settings)); @@ -105,7 +105,7 @@ public abstract class MenuManager { updateLauncher(mOptionMenu.findItem(R.id.option_menu_launcher)); updateShowHiddenFiles(mOptionMenu.findItem(R.id.option_menu_show_hidden_files)); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { updateModePicker(mOptionMenu.findItem(R.id.sub_menu_grid), mOptionMenu.findItem(R.id.sub_menu_list)); } @@ -116,7 +116,7 @@ public abstract class MenuManager { public void updateSubMenu(Menu menu) { // Remove the subMenu when material3 is launched b/379776735. - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { menu = mOptionMenu; if (menu == null) { return; diff --git a/src/com/android/documentsui/NavigationViewManager.java b/src/com/android/documentsui/NavigationViewManager.java index 6d56b4590..86b5e517f 100644 --- a/src/com/android/documentsui/NavigationViewManager.java +++ b/src/com/android/documentsui/NavigationViewManager.java @@ -17,7 +17,7 @@ package com.android.documentsui; import static com.android.documentsui.base.SharedMinimal.VERBOSE; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.content.res.Resources; import android.content.res.TypedArray; @@ -157,7 +157,7 @@ public class NavigationViewManager extends SelectionTracker.SelectionObserver<St onNavigationIconClicked(); } }); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mToolbar.setOnMenuItemClickListener( new Toolbar.OnMenuItemClickListener() { @Override @@ -261,7 +261,7 @@ public class NavigationViewManager extends SelectionTracker.SelectionObserver<St } private void onNavigationIconClicked() { - if (useMaterial3() && inSelectionMode()) { + if (isUseMaterial3FlagEnabled() && inSelectionMode()) { closeSelectionBar(); } else if (mDrawer.isPresent()) { mDrawer.setOpen(true); @@ -311,7 +311,7 @@ public class NavigationViewManager extends SelectionTracker.SelectionObserver<St mDrawer.setTitle(mEnv.getDrawerTitle()); boolean showBurgerMenuOnToolbar = true; - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { View navRailRoots = mActivity.findViewById(R.id.nav_rail_container_roots); if (navRailRoots != null) { // If nav rail exists, burger menu will show on the nav rail instead. @@ -336,7 +336,7 @@ public class NavigationViewManager extends SelectionTracker.SelectionObserver<St mSearchBarView.setVisibility(View.GONE); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { updateActionMenu(); if (inSelectionMode()) { final int quantity = mInjector.selectionMgr.getSelection().size(); diff --git a/src/com/android/documentsui/ProfileTabs.java b/src/com/android/documentsui/ProfileTabs.java index 9fbae8bae..5aacc22b0 100644 --- a/src/com/android/documentsui/ProfileTabs.java +++ b/src/com/android/documentsui/ProfileTabs.java @@ -20,7 +20,7 @@ import static androidx.core.util.Preconditions.checkNotNull; import static com.android.documentsui.DevicePolicyResources.Strings.PERSONAL_TAB; import static com.android.documentsui.DevicePolicyResources.Strings.WORK_TAB; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.app.admin.DevicePolicyManager; import android.os.Build; @@ -156,7 +156,7 @@ public class ProfileTabs implements ProfileTabsAddons { (ViewGroup.MarginLayoutParams) tab.getLayoutParams(); int tabMarginSide = (int) mTabsContainer.getContext().getResources() .getDimension(R.dimen.profile_tab_margin_side); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { // M3 uses the margin value as the right margin, except for the last child. if (i != mTabs.getTabCount() - 1) { marginLayoutParams.setMargins(0, 0, tabMarginSide, 0); diff --git a/src/com/android/documentsui/dirlist/AppsRowManager.java b/src/com/android/documentsui/dirlist/AppsRowManager.java index 53e9bd44d..33cb67a02 100644 --- a/src/com/android/documentsui/dirlist/AppsRowManager.java +++ b/src/com/android/documentsui/dirlist/AppsRowManager.java @@ -16,7 +16,7 @@ package com.android.documentsui.dirlist; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.text.TextUtils; import android.view.LayoutInflater; @@ -105,7 +105,7 @@ public class AppsRowManager { } private boolean shouldShow(State state, boolean isSearchExpanded) { - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { return false; } diff --git a/src/com/android/documentsui/dirlist/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java index 9cd7c2f7c..855a8273d 100644 --- a/src/com/android/documentsui/dirlist/DirectoryFragment.java +++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java @@ -21,8 +21,8 @@ import static com.android.documentsui.base.SharedMinimal.DEBUG; import static com.android.documentsui.base.SharedMinimal.VERBOSE; import static com.android.documentsui.base.State.MODE_GRID; import static com.android.documentsui.base.State.MODE_LIST; -import static com.android.documentsui.flags.Flags.desktopFileHandling; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isDesktopFileHandlingFlagEnabled; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.app.ActivityManager; import android.content.BroadcastReceiver; @@ -611,7 +611,7 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On new RefreshHelper(mRefreshLayout::setEnabled) .attach(mRecView); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mSelectionMgr.addObserver(mActivity.getNavigator()); mActivity.getNavigator().updateSelection(mSelectionMetadata, this::handleMenuItemClick); } else { @@ -924,7 +924,7 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On } private void closeSelectionBar() { - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mActivity.getNavigator().closeSelectionBar(); } else { mActionModeController.finishActionMode(); @@ -939,7 +939,7 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On mSelectionMgr.copySelection(selection); final int id = item.getItemId(); - if (desktopFileHandling() && id == R.id.dir_menu_open) { + if (isDesktopFileHandlingFlagEnabled() && id == R.id.dir_menu_open) { // On desktop, "open" is displayed in file management mode (i.e. `files.MenuManager`). // This menu item behaves the same as double click on the menu item which is handled by // onItemActivated but since onItemActivated requires a RecylcerView ItemDetails, we're @@ -1535,7 +1535,7 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On // For orientation changed case, sometimes the docs loading comes after the menu // update. We need to update the menu here to ensure the status is correct. mInjector.menuManager.updateModel(mModel); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mActivity.getNavigator().updateActionMenu(); } else { mInjector.menuManager.updateOptionMenu(); diff --git a/src/com/android/documentsui/dirlist/DocumentHolder.java b/src/com/android/documentsui/dirlist/DocumentHolder.java index b1b2765f8..8e5f50636 100644 --- a/src/com/android/documentsui/dirlist/DocumentHolder.java +++ b/src/com/android/documentsui/dirlist/DocumentHolder.java @@ -18,7 +18,7 @@ package com.android.documentsui.dirlist; import static com.android.documentsui.DevicePolicyResources.Strings.PREVIEW_WORK_FILE_ACCESSIBILITY; import static com.android.documentsui.DevicePolicyResources.Strings.UNDEFINED; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.app.admin.DevicePolicyManager; import android.content.Context; @@ -56,9 +56,9 @@ import javax.annotation.Nullable; public abstract class DocumentHolder extends RecyclerView.ViewHolder implements View.OnKeyListener { - static final float DISABLED_ALPHA = useMaterial3() ? 0.6f : 0.3f; + static final float DISABLED_ALPHA = isUseMaterial3FlagEnabled() ? 0.6f : 0.3f; - static final int THUMBNAIL_STROKE_WIDTH = useMaterial3() ? 2 : 0; + static final int THUMBNAIL_STROKE_WIDTH = isUseMaterial3FlagEnabled() ? 2 : 0; protected final Context mContext; diff --git a/src/com/android/documentsui/dirlist/DocumentsSwipeRefreshLayout.java b/src/com/android/documentsui/dirlist/DocumentsSwipeRefreshLayout.java index 92faee198..838b1fa72 100644 --- a/src/com/android/documentsui/dirlist/DocumentsSwipeRefreshLayout.java +++ b/src/com/android/documentsui/dirlist/DocumentsSwipeRefreshLayout.java @@ -16,7 +16,7 @@ package com.android.documentsui.dirlist; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.content.Context; import android.content.res.TypedArray; @@ -45,7 +45,7 @@ public class DocumentsSwipeRefreshLayout extends SwipeRefreshLayout { public DocumentsSwipeRefreshLayout(Context context, AttributeSet attrs) { super(context, attrs); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { TypedValue spinnerColor = new TypedValue(); context.getTheme() .resolveAttribute( diff --git a/src/com/android/documentsui/dirlist/GridDocumentHolder.java b/src/com/android/documentsui/dirlist/GridDocumentHolder.java index 112e98702..e321f8ba7 100644 --- a/src/com/android/documentsui/dirlist/GridDocumentHolder.java +++ b/src/com/android/documentsui/dirlist/GridDocumentHolder.java @@ -21,7 +21,7 @@ import static com.android.documentsui.DevicePolicyResources.Drawables.WORK_PROFI import static com.android.documentsui.base.DocumentInfo.getCursorInt; import static com.android.documentsui.base.DocumentInfo.getCursorLong; import static com.android.documentsui.base.DocumentInfo.getCursorString; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.app.admin.DevicePolicyManager; import android.content.Context; @@ -81,7 +81,7 @@ final class GridDocumentHolder extends DocumentHolder { ConfigStore configStore) { super(context, parent, R.layout.item_doc_grid, configStore); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mIconWrapper = itemView.findViewById(R.id.icon_wrapper); mIconLayout = null; mIconMimeSm = null; @@ -119,7 +119,7 @@ final class GridDocumentHolder extends DocumentHolder { @Override public void setSelected(boolean selected, boolean animate) { float checkAlpha = selected ? 1f : 0f; - if (!useMaterial3()) { + if (!isUseMaterial3FlagEnabled()) { // We always want to make sure our check box disappears if we're not selected, // even if the item is disabled. This is because this object can be reused // and this method will be called to setup initial state. @@ -139,7 +139,7 @@ final class GridDocumentHolder extends DocumentHolder { super.setSelected(selected, animate); - if (!useMaterial3()) { + if (!isUseMaterial3FlagEnabled()) { if (animate) { fade(mIconMimeSm, 1f - checkAlpha).start(); } else { @@ -164,7 +164,7 @@ final class GridDocumentHolder extends DocumentHolder { float imgAlpha = enabled ? 1f : DISABLED_ALPHA; mIconMimeLg.setAlpha(imgAlpha); - if (!useMaterial3()) { + if (!isUseMaterial3FlagEnabled()) { mIconMimeSm.setAlpha(imgAlpha); } mIconThumb.setAlpha(imgAlpha); @@ -206,7 +206,7 @@ final class GridDocumentHolder extends DocumentHolder { @Override public boolean inSelectRegion(MotionEvent event) { - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { return Views.isEventOver(event, itemView.getParent(), mIconWrapper); } return Views.isEventOver(event, itemView.getParent(), mIconLayout); @@ -240,7 +240,7 @@ final class GridDocumentHolder extends DocumentHolder { mIconThumb.animate().cancel(); mIconThumb.setAlpha(0f); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mIconHelper.load( mDoc, mIconThumb, mIconMimeLg, /* subIconMime= */ null, thumbnailLoaded -> { diff --git a/src/com/android/documentsui/dirlist/ListDocumentHolder.java b/src/com/android/documentsui/dirlist/ListDocumentHolder.java index a4839d4f4..58473d5aa 100644 --- a/src/com/android/documentsui/dirlist/ListDocumentHolder.java +++ b/src/com/android/documentsui/dirlist/ListDocumentHolder.java @@ -20,7 +20,7 @@ import static com.android.documentsui.DevicePolicyResources.Drawables.Style.SOLI import static com.android.documentsui.DevicePolicyResources.Drawables.WORK_PROFILE_ICON; import static com.android.documentsui.base.DocumentInfo.getCursorInt; import static com.android.documentsui.base.DocumentInfo.getCursorString; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.app.admin.DevicePolicyManager; import android.content.Context; @@ -89,7 +89,8 @@ final class ListDocumentHolder extends DocumentHolder { super(context, parent, R.layout.item_doc_list, configStore); mIconLayout = itemView.findViewById(R.id.icon); - mIconWrapper = useMaterial3() ? itemView.findViewById(R.id.icon_wrapper) : null; + mIconWrapper = + isUseMaterial3FlagEnabled() ? itemView.findViewById(R.id.icon_wrapper) : null; mIconMime = (ImageView) itemView.findViewById(R.id.icon_mime); mIconThumb = (ImageView) itemView.findViewById(R.id.icon_thumb); mIconCheck = (ImageView) itemView.findViewById(R.id.icon_check); @@ -147,7 +148,7 @@ final class ListDocumentHolder extends DocumentHolder { } // Do not show stroke when selected, only show stroke when not selected if it has thumbnail. - if (useMaterial3() && mIconWrapper != null) { + if (isUseMaterial3FlagEnabled() && mIconWrapper != null) { if (selected) { mIconWrapper.setStrokeWidth(0); } else if (mIconThumb.getDrawable() != null) { @@ -160,7 +161,7 @@ final class ListDocumentHolder extends DocumentHolder { public void setEnabled(boolean enabled) { super.setEnabled(enabled); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { itemView.setAlpha(enabled ? 1f : DISABLED_ALPHA); } else { // Text colors enabled/disabled is handle via a color set. @@ -269,7 +270,7 @@ final class ListDocumentHolder extends DocumentHolder { /* subIconMime= */ null, thumbnailLoaded -> { // Show stroke when thumbnail is loaded. - if (useMaterial3() && mIconWrapper != null) { + if (isUseMaterial3FlagEnabled() && mIconWrapper != null) { mIconWrapper.setStrokeWidth(thumbnailLoaded ? THUMBNAIL_STROKE_WIDTH : 0); } }); diff --git a/src/com/android/documentsui/files/ActionHandler.java b/src/com/android/documentsui/files/ActionHandler.java index 33057d140..86f7a1a14 100644 --- a/src/com/android/documentsui/files/ActionHandler.java +++ b/src/com/android/documentsui/files/ActionHandler.java @@ -19,6 +19,9 @@ package com.android.documentsui.files; import static android.content.ContentResolver.wrap; import static com.android.documentsui.base.SharedMinimal.DEBUG; +import static com.android.documentsui.util.FlagUtils.isDesktopFileHandlingFlagEnabled; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; +import static com.android.documentsui.util.FlagUtils.isUsePeekPreviewFlagEnabled; import android.app.DownloadManager; import android.content.ActivityNotFoundException; @@ -67,7 +70,6 @@ import com.android.documentsui.clipping.ClipStore; import com.android.documentsui.clipping.DocumentClipper; import com.android.documentsui.clipping.UrisSupplier; import com.android.documentsui.dirlist.AnimationView; -import com.android.documentsui.flags.Flags; import com.android.documentsui.inspector.InspectorActivity; import com.android.documentsui.queries.SearchViewManager; import com.android.documentsui.roots.ProvidersAccess; @@ -234,7 +236,7 @@ public class ActionHandler<T extends FragmentActivity & AbstractActionHandler.Co @Override public void springOpenDirectory(DocumentInfo doc) { assert (doc.isDirectory()); - if (Flags.useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mCloseSelectionBar.run(); } else { mActionModeAddons.finishActionMode(); @@ -330,7 +332,7 @@ public class ActionHandler<T extends FragmentActivity & AbstractActionHandler.Co return; } - if (Flags.useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mCloseSelectionBar.run(); } else { mActionModeAddons.finishActionMode(); @@ -562,7 +564,7 @@ public class ActionHandler<T extends FragmentActivity & AbstractActionHandler.Co return; } - if (Flags.desktopFileHandling()) { + if (isDesktopFileHandlingFlagEnabled()) { Intent intent = buildViewIntent(doc); intent.setComponent( new ComponentName("android", "com.android.internal.app.ResolverActivity")); @@ -613,7 +615,7 @@ public class ActionHandler<T extends FragmentActivity & AbstractActionHandler.Co @Override public void showPreview(DocumentInfo doc) { - if (Flags.useMaterial3() && Flags.usePeekPreview()) { + if (isUseMaterial3FlagEnabled() && isUsePeekPreviewFlagEnabled()) { showPeek(); } else { showInspector(doc); diff --git a/src/com/android/documentsui/files/FilesActivity.java b/src/com/android/documentsui/files/FilesActivity.java index ff9d30106..50e266d38 100644 --- a/src/com/android/documentsui/files/FilesActivity.java +++ b/src/com/android/documentsui/files/FilesActivity.java @@ -18,7 +18,8 @@ package com.android.documentsui.files; import static com.android.documentsui.OperationDialogFragment.DIALOG_TYPE_UNKNOWN; import static com.android.documentsui.base.SharedMinimal.DEBUG; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; +import static com.android.documentsui.util.FlagUtils.isZipNgFlagEnabled; import android.app.ActivityManager.TaskDescription; import android.content.Intent; @@ -60,7 +61,6 @@ import com.android.documentsui.clipping.DocumentClipper; import com.android.documentsui.dirlist.AnimationView.AnimationType; import com.android.documentsui.dirlist.AppsRowManager; import com.android.documentsui.dirlist.DirectoryFragment; -import com.android.documentsui.flags.Flags; import com.android.documentsui.services.FileOperationService; import com.android.documentsui.sidebar.RootsFragment; import com.android.documentsui.ui.DialogController; @@ -140,7 +140,7 @@ public class FilesActivity extends BaseActivity implements AbstractActionHandler mInjector.getModel()::getItemUri, mInjector.getModel()::getItemCount); - if (!useMaterial3()) { + if (!isUseMaterial3FlagEnabled()) { mInjector.actionModeController = new ActionModeController( this, @@ -190,7 +190,7 @@ public class FilesActivity extends BaseActivity implements AbstractActionHandler RootsFragment.show(getSupportFragmentManager(), /* includeApps= */ false, /* intent= */ null); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { View navRailRoots = findViewById(R.id.nav_rail_container_roots); if (navRailRoots != null) { // Medium layout, populate navigation rail layout. @@ -332,7 +332,7 @@ public class FilesActivity extends BaseActivity implements AbstractActionHandler @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - if (!useMaterial3()) { + if (!isUseMaterial3FlagEnabled()) { mInjector.menuManager.updateOptionMenu(menu); } return true; @@ -349,7 +349,7 @@ public class FilesActivity extends BaseActivity implements AbstractActionHandler } else if (id == R.id.option_menu_settings) { mInjector.actions.openSettings(getCurrentRoot()); } else if (id == R.id.option_menu_extract_all) { - if (!Flags.zipNg()) return false; + if (!isZipNgFlagEnabled()) return false; final DirectoryFragment dir = getDirectoryFragment(); if (dir == null) return false; mInjector.actions.selectAllFiles(); diff --git a/src/com/android/documentsui/files/MenuManager.java b/src/com/android/documentsui/files/MenuManager.java index 0fb7c4fa1..9b3564eeb 100644 --- a/src/com/android/documentsui/files/MenuManager.java +++ b/src/com/android/documentsui/files/MenuManager.java @@ -16,7 +16,7 @@ package com.android.documentsui.files; -import static com.android.documentsui.flags.Flags.desktopFileHandling; +import static com.android.documentsui.util.FlagUtils.isDesktopFileHandlingFlagEnabled; import android.content.Context; import android.content.res.Resources; @@ -168,7 +168,8 @@ public final class MenuManager extends com.android.documentsui.MenuManager { @Override protected void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) { - Menus.setEnabledAndVisible(open, desktopFileHandling() && selectionDetails.canOpen()); + Menus.setEnabledAndVisible( + open, isDesktopFileHandlingFlagEnabled() && selectionDetails.canOpen()); } @Override diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java index 51b35e155..68a797397 100644 --- a/src/com/android/documentsui/picker/PickActivity.java +++ b/src/com/android/documentsui/picker/PickActivity.java @@ -21,7 +21,7 @@ import static com.android.documentsui.base.State.ACTION_GET_CONTENT; import static com.android.documentsui.base.State.ACTION_OPEN; import static com.android.documentsui.base.State.ACTION_OPEN_TREE; import static com.android.documentsui.base.State.ACTION_PICK_COPY_DESTINATION; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.content.Intent; import android.content.res.Resources; @@ -128,7 +128,7 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons { new DirectoryDetails(this), mInjector.getModel()::getItemCount); - if (!useMaterial3()) { + if (!isUseMaterial3FlagEnabled()) { mInjector.actionModeController = new ActionModeController( this, @@ -253,7 +253,7 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons { RootsFragment.show(getSupportFragmentManager(), /* includeApps= */ mState.action == ACTION_GET_CONTENT, /* intent= */ moreApps); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { View navRailRoots = findViewById(R.id.nav_rail_container_roots); if (navRailRoots != null) { // Medium layout, populate navigation rail layout. diff --git a/src/com/android/documentsui/queries/SearchChipViewManager.java b/src/com/android/documentsui/queries/SearchChipViewManager.java index 8bc548493..18cde82a5 100644 --- a/src/com/android/documentsui/queries/SearchChipViewManager.java +++ b/src/com/android/documentsui/queries/SearchChipViewManager.java @@ -16,7 +16,7 @@ package com.android.documentsui.queries; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.animation.ObjectAnimator; import android.content.Context; @@ -399,7 +399,7 @@ public class SearchChipViewManager { chip.setChipIcon(chipIcon); chip.setOnClickListener(this::onChipClick); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { chip.setOnFocusChangeListener(this::onChipFocusChange); } @@ -420,7 +420,7 @@ public class SearchChipViewManager { // For M3, we don't want to use MIME type icons for image/audio/video/document from the // system. - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { return switch (chipType) { case TYPE_IMAGES -> context.getDrawable(R.drawable.ic_chip_image); case TYPE_AUDIO -> context.getDrawable(R.drawable.ic_chip_audio); @@ -468,14 +468,14 @@ public class SearchChipViewManager { } final int chipSpacing = - useMaterial3() + isUseMaterial3FlagEnabled() ? ((ChipGroup) mChipGroup).getChipSpacingHorizontal() : mChipGroup .getResources() .getDimensionPixelSize(R.dimen.search_chip_spacing); final boolean isRtl = mChipGroup.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; final float chipGroupPaddingStart = - useMaterial3() + isUseMaterial3FlagEnabled() ? mChipGroup.getPaddingStart() : mChipGroup .getResources() diff --git a/src/com/android/documentsui/queries/SearchViewManager.java b/src/com/android/documentsui/queries/SearchViewManager.java index 1e26e4e08..ca132a187 100644 --- a/src/com/android/documentsui/queries/SearchViewManager.java +++ b/src/com/android/documentsui/queries/SearchViewManager.java @@ -20,7 +20,7 @@ import static com.android.documentsui.base.SharedMinimal.DEBUG; import static com.android.documentsui.base.State.ACTION_GET_CONTENT; import static com.android.documentsui.base.State.ACTION_OPEN; import static com.android.documentsui.base.State.ActionType; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.content.Intent; import android.os.Bundle; @@ -335,7 +335,7 @@ public class SearchViewManager implements // Recent root show open search bar, do not show duplicate search icon. boolean enabled = supportsSearch && (!stack.isRecents() || !mShowSearchBar); mMenuItem.setVisible(enabled); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { // When the use_material3 flag is enabled, we inflate and deflate the menu. // This causes the search button to be disabled on inflation, toggle it in // this scenario. diff --git a/src/com/android/documentsui/sidebar/AppItem.java b/src/com/android/documentsui/sidebar/AppItem.java index c719241d2..d9aed1522 100644 --- a/src/com/android/documentsui/sidebar/AppItem.java +++ b/src/com/android/documentsui/sidebar/AppItem.java @@ -16,7 +16,7 @@ package com.android.documentsui.sidebar; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.content.Intent; import android.content.pm.ActivityInfo; @@ -102,7 +102,7 @@ public class AppItem extends Item { // In M3, we don't show action icon for the app items, do nothing here because the icons // are hidden by default. - if (!useMaterial3()) { + if (!isUseMaterial3FlagEnabled()) { final View actionIconArea = convertView.findViewById(R.id.action_icon_area); final ImageView actionIcon = (ImageView) convertView.findViewById(R.id.action_icon); bindActionIcon(actionIconArea, actionIcon); diff --git a/src/com/android/documentsui/sidebar/RootItem.java b/src/com/android/documentsui/sidebar/RootItem.java index 326f086e1..af72a5239 100644 --- a/src/com/android/documentsui/sidebar/RootItem.java +++ b/src/com/android/documentsui/sidebar/RootItem.java @@ -16,7 +16,7 @@ package com.android.documentsui.sidebar; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.content.Context; import android.graphics.drawable.Drawable; @@ -110,7 +110,7 @@ public class RootItem extends Item { } protected final void bindAction(View view, int visibility, int iconId, String description) { - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { final MaterialButton actionIcon = view.findViewById(R.id.action_icon); actionIcon.setVisibility(visibility); diff --git a/src/com/android/documentsui/sidebar/RootsAdapter.java b/src/com/android/documentsui/sidebar/RootsAdapter.java index b64e39d5f..d689705be 100644 --- a/src/com/android/documentsui/sidebar/RootsAdapter.java +++ b/src/com/android/documentsui/sidebar/RootsAdapter.java @@ -16,7 +16,7 @@ package com.android.documentsui.sidebar; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.app.Activity; import android.os.Looper; @@ -86,7 +86,7 @@ class RootsAdapter extends ArrayAdapter<Item> { final Item item = getItem(position); final View view = item.getView(convertView, parent); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { // In order to have hover showing on the list item, we need to have // "android:clickable=true" on the list item level, which will break the click handler // because it's set at the list level, so here we "bubble up" the item level click diff --git a/src/com/android/documentsui/sidebar/RootsFragment.java b/src/com/android/documentsui/sidebar/RootsFragment.java index e30017fe4..1735f9a29 100644 --- a/src/com/android/documentsui/sidebar/RootsFragment.java +++ b/src/com/android/documentsui/sidebar/RootsFragment.java @@ -19,8 +19,8 @@ package com.android.documentsui.sidebar; import static com.android.documentsui.base.Shared.compareToIgnoreCaseNullable; import static com.android.documentsui.base.SharedMinimal.DEBUG; import static com.android.documentsui.base.SharedMinimal.VERBOSE; -import static com.android.documentsui.flags.Flags.hideRootsOnDesktop; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isHideRootsOnDesktopFlagEnabled; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.app.admin.DevicePolicyManager; import android.content.Context; @@ -150,7 +150,7 @@ public class RootsFragment extends Fragment { private List<Item> mApplicationItemList; // Weather the fragment is using nav_rail_container_roots as its container (in nav_rail_layout). - // This will always be false if useMaterial3() flag is off. + // This will always be false if isUseMaterial3FlagEnabled() flag is off. private boolean mUseRailAsContainer = false; /** @@ -183,7 +183,7 @@ public class RootsFragment extends Fragment { final Bundle args = new Bundle(); args.putBoolean(EXTRA_INCLUDE_APPS, includeApps); args.putParcelable(EXTRA_INCLUDE_APPS_INTENT, intent); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { args.putInt(EXTRA_CONTAINER_ID, containerId); } @@ -215,7 +215,7 @@ public class RootsFragment extends Fragment { public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { mUseRailAsContainer = getArguments() != null && getArguments().getInt(EXTRA_CONTAINER_ID) @@ -481,8 +481,9 @@ public class RootsFragment extends Fragment { if (root.isExternalStorageHome()) { continue; - } else if (hideRootsOnDesktop() && context.getPackageManager().hasSystemFeature( - PackageManager.FEATURE_PC) && (root.isImages() || root.isVideos() + } else if (isHideRootsOnDesktopFlagEnabled() + && context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_PC) + && (root.isImages() || root.isVideos() || root.isDocuments() || root.isAudio())) { // Hide Images/Videos/Documents/Audio roots on desktop. diff --git a/src/com/android/documentsui/sorting/HeaderCell.java b/src/com/android/documentsui/sorting/HeaderCell.java index e9fce67cc..7f72f13da 100644 --- a/src/com/android/documentsui/sorting/HeaderCell.java +++ b/src/com/android/documentsui/sorting/HeaderCell.java @@ -16,7 +16,7 @@ package com.android.documentsui.sorting; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.animation.AnimatorInflater; import android.animation.LayoutTransition; @@ -134,7 +134,7 @@ public class HeaderCell extends LinearLayout { } private void setDataTypeNumber(View label) { - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { label.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START); setGravity(Gravity.CENTER_VERTICAL | Gravity.START); } else { diff --git a/src/com/android/documentsui/sorting/TableHeaderController.java b/src/com/android/documentsui/sorting/TableHeaderController.java index 52fa465a9..cb72ac916 100644 --- a/src/com/android/documentsui/sorting/TableHeaderController.java +++ b/src/com/android/documentsui/sorting/TableHeaderController.java @@ -16,7 +16,7 @@ package com.android.documentsui.sorting; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.view.KeyEvent; import android.view.View; @@ -92,12 +92,12 @@ public final class TableHeaderController implements SortController.WidgetControl if (dimension.getVisibility() == View.VISIBLE && dimension.getSortCapability() != SortDimension.SORT_CAPABILITY_NONE) { cell.setOnClickListener(mOnCellClickListener); - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { cell.setSortArrowListeners(mOnCellClickListener, mOnCellKeyListener, dimension); } } else { cell.setOnClickListener(null); - if (useMaterial3()) cell.setSortArrowListeners(null, null, null); + if (isUseMaterial3FlagEnabled()) cell.setSortArrowListeners(null, null, null); } } @@ -109,7 +109,7 @@ public final class TableHeaderController implements SortController.WidgetControl /** Sorts the column if the key pressed was Enter or Space. */ private boolean onCellKeyEvent(View v, int keyCode, KeyEvent event) { - if (!useMaterial3()) { + if (!isUseMaterial3FlagEnabled()) { return false; } // Only the enter and space bar should trigger the sort header to engage. diff --git a/src/com/android/documentsui/ui/Snackbars.java b/src/com/android/documentsui/ui/Snackbars.java index c6eaf4661..795b6248b 100644 --- a/src/com/android/documentsui/ui/Snackbars.java +++ b/src/com/android/documentsui/ui/Snackbars.java @@ -16,7 +16,7 @@ package com.android.documentsui.ui; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import android.app.Activity; import android.view.Gravity; @@ -112,7 +112,7 @@ public final class Snackbars { public static final Snackbar makeSnackbar( Activity activity, CharSequence message, int duration) { - final View view = activity.findViewById(useMaterial3() + final View view = activity.findViewById(isUseMaterial3FlagEnabled() ? R.id.coordinator_layout : R.id.container_save ); diff --git a/src/com/android/documentsui/util/FlagUtils.kt b/src/com/android/documentsui/util/FlagUtils.kt new file mode 100644 index 000000000..49c55de57 --- /dev/null +++ b/src/com/android/documentsui/util/FlagUtils.kt @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2025 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.util + +import com.android.documentsui.flags.Flags + +/** + * Wraps the static flags classes to enable a single place to refactor flag usage + * (or combine usage when required). + */ +class FlagUtils { + companion object { + @JvmStatic + fun isUseMaterial3FlagEnabled(): Boolean { + return Flags.useMaterial3() + } + + @JvmStatic + fun isZipNgFlagEnabled(): Boolean { + return Flags.zipNg() + } + + @JvmStatic + fun isUseSearchV2RwFlagEnabled(): Boolean { + return Flags.useSearchV2Rw() + } + + @JvmStatic + fun isDesktopFileHandlingFlagEnabled(): Boolean { + return Flags.desktopFileHandling() + } + + @JvmStatic + fun isHideRootsOnDesktopFlagEnabled(): Boolean { + return Flags.hideRootsOnDesktop() + } + + @JvmStatic + fun isUsePeekPreviewFlagEnabled(): Boolean { + return Flags.usePeekPreview() + } + } +} diff --git a/tests/common/com/android/documentsui/bots/UiBot.java b/tests/common/com/android/documentsui/bots/UiBot.java index 161510e2a..47e0acd5a 100644 --- a/tests/common/com/android/documentsui/bots/UiBot.java +++ b/tests/common/com/android/documentsui/bots/UiBot.java @@ -25,7 +25,7 @@ import static androidx.test.espresso.matcher.ViewMatchers.withClassName; import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; @@ -211,7 +211,7 @@ public class UiBot extends Bots.BaseBot { } public void clickActionbarOverflowItem(String label) { - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { onView(TOOLBAR_OVERFLOW).perform(click()); } else { onView(ACTIONBAR_OVERFLOW).perform(click()); @@ -231,7 +231,7 @@ public class UiBot extends Bots.BaseBot { } public boolean waitForActionModeBarToAppear() { - String actionModeId = useMaterial3() ? "toolbar" : "action_mode_bar"; + String actionModeId = isUseMaterial3FlagEnabled() ? "toolbar" : "action_mode_bar"; UiObject2 bar = mDevice.wait( Until.findObject(By.res(mTargetPackage + ":id/" + actionModeId)), mTimeout); diff --git a/tests/unit/com/android/documentsui/files/ActionHandlerTest.java b/tests/unit/com/android/documentsui/files/ActionHandlerTest.java index 01dfa1c76..54a685776 100644 --- a/tests/unit/com/android/documentsui/files/ActionHandlerTest.java +++ b/tests/unit/com/android/documentsui/files/ActionHandlerTest.java @@ -16,7 +16,7 @@ package com.android.documentsui.files; -import static com.android.documentsui.flags.Flags.useMaterial3; +import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; import static com.android.documentsui.testing.IntentAsserts.assertHasAction; import static com.android.documentsui.testing.IntentAsserts.assertHasData; import static com.android.documentsui.testing.IntentAsserts.assertHasExtra; @@ -160,7 +160,7 @@ public class ActionHandlerTest { } private void assertSelectionContainerClosed() { - if (useMaterial3()) { + if (isUseMaterial3FlagEnabled()) { verify(mMockCloseSelectionBar, times(1)).run(); } else { assertTrue(mActionModeAddons.finishActionModeCalled); diff --git a/tests/unit/com/android/documentsui/files/MenuManagerTest.java b/tests/unit/com/android/documentsui/files/MenuManagerTest.java index 394537784..f9737dc39 100644 --- a/tests/unit/com/android/documentsui/files/MenuManagerTest.java +++ b/tests/unit/com/android/documentsui/files/MenuManagerTest.java @@ -16,6 +16,8 @@ package com.android.documentsui.files; +import static com.android.documentsui.util.FlagUtils.isZipNgFlagEnabled; + import static junit.framework.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -492,7 +494,7 @@ public final class MenuManagerTest { public void testOptionMenu_ExtractAll() { dirDetails.isInArchive = true; mgr.updateOptionMenu(testMenu); - if (Flags.zipNg()) { + if (isZipNgFlagEnabled()) { mOptionExtractAll.assertEnabledAndVisible(); } else { mOptionExtractAll.assertDisabledAndInvisible(); |