Files
brave-core/android/java/proguard.flags
T
Artem Samoilenko 540523cc81 [Android] Add Token-based ID support for Tab Groups
Chromium change:
https://source.chromium.org/chromium/chromium/src/+/4dfe0238c9391e5b9a4284072e7d07926171215b

[Tab Groups] add Token-based ID support behind flag

Add and manage Token-based TabGroupIds for Tabs in TabGroupModelFilter.

RootId must be the TabId of one of the tabs in the group. This is
unstable because if the Tab with the TabId corresponding to the RootId
of the group is removed from the group the group must elect a new
TabId from among its tabs to be the new RootId. This leads to issues
with managing the state of a tab group over time.

Under the RootId paradigm every tab was associated with a TabGroup
object and only tab groups with > 1 tab were considered "real" tab
groups. In an effort to support tab groups with a single tab it is
necessary to come up with a new approach.

This CL introduces TabGroupId. This ID is stable in that it is tied
to the group the tabs are in and can only be destroyed if all tabs
are removed from the tab group OR two groups with TabGroupIds are
merged resulting in one of the two TabGroupIds going away.

Tabs only have a TabGroupId if they are associated with a "real"
tab group of size 1 or larger. Otherwise this field will be null.
This means that TabGroup objects will only contain tabs with a
TabGroupId if the group is > size 1 OR that single tab is to be
treated as a real tab group.

If the flag AndroidTabGroupStableIds is enabled then after
tab state initialization all tabs that are part of "real" tab
groups under the old definition will be allocated TabGroupIds
in a 1:1 manner with old RootIds. When the flag is disabled
the TabGroupIds will all be reset instead.

Logic for maintaining TabGroupIds is as follows:
* A Tab Group Id is allocated when:
  * A single tab is turned into a single tab group.
  * A single tab is merged with another single tab to form a
    group.
  * A list of tabs is merged to a single tab to form a group.
    If a group is merged to a single tab its Tab Group Id is
    preserved.
* Tab Group Ids are removed from tabs when:
  * Ungrouping a tab from a group.
* Tab Group Ids are lost entirely when:
  * Merging two tab groups both with tab group ids (only one ID will
    continue to exist).
  * Removing the last tab from a group.
  * Deleting an entire tab group.

Bug: b/41496693
2024-03-08 14:56:12 -05:00

59 lines
1.7 KiB
Plaintext

-keep class com.google.android.material.bottomsheet.BottomSheetBehavior { *; }
-keep class com.google.android.material.behavior.HideBottomViewOnScrollBehavior { *; }
-keep class org.chromium.chrome.browser.BraveSyncWorker { *; }
# Add methods for invocation below
-keep class org.chromium.chrome.browser.ChromeTabbedActivity {
*** mLayoutManager;
*** hideOverview(...);
*** maybeHandleUrlIntent(...);
}
-keep class org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator {
*** createViewProvider(...);
}
-keep class org.chromium.chrome.browser.omnibox.suggestions.AutocompleteMediator {
*** mContext;
*** mDataProvider;
*** loadUrlForOmniboxMatch(...);
}
-keep class org.chromium.components.browser_ui.site_settings.ContentSettingsResources {
*** getResourceItem(...);
}
-keep class org.chromium.components.browser_ui.site_settings.SingleCategorySettings {
*** mCategory;
*** getAddExceptionDialogMessage(...);
*** resetList(...);
}
-keep class org.chromium.components.browser_ui.site_settings.SingleWebsiteSettings {
*** mSite;
*** getPreferenceKey(...);
*** setupContentSettingsPreferences(...);
*** setupContentSettingsPreference(...);
}
-keep class org.chromium.components.browser_ui.site_settings.Website {
*** getPermissionInfo(...);
*** getContentSettingException(...);
*** getAddress(...);
*** setContentSettingException(...);
*** setContentSetting(...);
}
-keep class org.chromium.chrome.browser.tab.TabHelpers {
*** initTabHelpers(...);
}
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
-keep class org.chromium.chrome.browser.tasks.tab_groups.TabGroupModelFilter {
*** getParentIds(...);
*** getOrCreateTabGroupId(...);
}