* Remove signed in as string from sync menu item

* Nav to sync account settings on click

For https://github.com/mozilla-mobile/fenix/issues/18806: navigate to settings account page or sign in on clicking menu item.

* Confirm account exists and retrieve item title

* Remove string
pull/600/head
Elise Richards 3 years ago committed by GitHub
parent f134595809
commit 395853235f

@ -225,12 +225,14 @@ class DefaultBrowserToolbarMenuController(
BrowserFragmentDirections.actionBrowserFragmentToSyncedTabsFragment() BrowserFragmentDirections.actionBrowserFragmentToSyncedTabsFragment()
) )
} }
is ToolbarMenu.Item.SyncAccount -> browserAnimator.captureEngineViewAndDrawStatically { is ToolbarMenu.Item.SyncAccount -> {
browserAnimator.captureEngineViewAndDrawStatically {
navController.nav( navController.nav(
R.id.browserFragment, R.id.browserFragment,
BrowserFragmentDirections.actionBrowserFragmentToSyncedTabsFragment() BrowserFragmentDirections.actionGlobalAccountSettingsFragment()
) )
} }
}
is ToolbarMenu.Item.RequestDesktop -> { is ToolbarMenu.Item.RequestDesktop -> {
currentSession?.let { currentSession?.let {
sessionUseCases.requestDesktopSite.invoke( sessionUseCases.requestDesktopSite.invoke(

@ -57,7 +57,7 @@ import org.mozilla.fenix.utils.BrowsersCache
* @param lifecycleOwner View lifecycle owner used to determine when to cancel UI jobs. * @param lifecycleOwner View lifecycle owner used to determine when to cancel UI jobs.
* @param bookmarksStorage Used to check if a page is bookmarked. * @param bookmarksStorage Used to check if a page is bookmarked.
*/ */
@Suppress("LargeClass", "LongParameterList") @Suppress("LargeClass", "LongParameterList", "TooManyFunctions")
@ExperimentalCoroutinesApi @ExperimentalCoroutinesApi
open class DefaultToolbarMenu( open class DefaultToolbarMenu(
private val context: Context, private val context: Context,
@ -78,8 +78,7 @@ open class DefaultToolbarMenu(
private val selectedSession: TabSessionState? private val selectedSession: TabSessionState?
get() = store.state.selectedTab get() = store.state.selectedTab
private val primaryTextColor = private val accountManager = context.components.backgroundServices.accountManager
ThemeManager.resolveAttribute(R.attr.primaryText, context)
override val menuBuilder by lazy { override val menuBuilder by lazy {
WebExtensionBrowserMenuBuilder( WebExtensionBrowserMenuBuilder(
@ -91,7 +90,7 @@ open class DefaultToolbarMenu(
}, },
endOfMenuAlwaysVisible = shouldUseBottomToolbar, endOfMenuAlwaysVisible = shouldUseBottomToolbar,
store = store, store = store,
webExtIconTintColorResource = primaryTextColor, webExtIconTintColorResource = primaryTextColor(),
onAddonsManagerTapped = { onAddonsManagerTapped = {
onItemTapped.invoke(ToolbarMenu.Item.AddonsManager) onItemTapped.invoke(ToolbarMenu.Item.AddonsManager)
}, },
@ -103,7 +102,7 @@ open class DefaultToolbarMenu(
val back = BrowserMenuItemToolbar.TwoStateButton( val back = BrowserMenuItemToolbar.TwoStateButton(
primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_back, primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_back,
primaryContentDescription = context.getString(R.string.browser_menu_back), primaryContentDescription = context.getString(R.string.browser_menu_back),
primaryImageTintResource = primaryTextColor, primaryImageTintResource = primaryTextColor(),
isInPrimaryState = { isInPrimaryState = {
selectedSession?.content?.canGoBack ?: true selectedSession?.content?.canGoBack ?: true
}, },
@ -117,7 +116,7 @@ open class DefaultToolbarMenu(
val forward = BrowserMenuItemToolbar.TwoStateButton( val forward = BrowserMenuItemToolbar.TwoStateButton(
primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_forward, primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_forward,
primaryContentDescription = context.getString(R.string.browser_menu_forward), primaryContentDescription = context.getString(R.string.browser_menu_forward),
primaryImageTintResource = primaryTextColor, primaryImageTintResource = primaryTextColor(),
isInPrimaryState = { isInPrimaryState = {
selectedSession?.content?.canGoForward ?: true selectedSession?.content?.canGoForward ?: true
}, },
@ -131,13 +130,13 @@ open class DefaultToolbarMenu(
val refresh = BrowserMenuItemToolbar.TwoStateButton( val refresh = BrowserMenuItemToolbar.TwoStateButton(
primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_refresh, primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_refresh,
primaryContentDescription = context.getString(R.string.browser_menu_refresh), primaryContentDescription = context.getString(R.string.browser_menu_refresh),
primaryImageTintResource = primaryTextColor, primaryImageTintResource = primaryTextColor(),
isInPrimaryState = { isInPrimaryState = {
selectedSession?.content?.loading == false selectedSession?.content?.loading == false
}, },
secondaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_stop, secondaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_stop,
secondaryContentDescription = context.getString(R.string.browser_menu_stop), secondaryContentDescription = context.getString(R.string.browser_menu_stop),
secondaryImageTintResource = primaryTextColor, secondaryImageTintResource = primaryTextColor(),
disableInSecondaryState = false, disableInSecondaryState = false,
longClickListener = { onItemTapped.invoke(ToolbarMenu.Item.Reload(bypassCache = true)) } longClickListener = { onItemTapped.invoke(ToolbarMenu.Item.Reload(bypassCache = true)) }
) { ) {
@ -151,7 +150,7 @@ open class DefaultToolbarMenu(
val share = BrowserMenuItemToolbar.Button( val share = BrowserMenuItemToolbar.Button(
imageResource = R.drawable.ic_share_filled, imageResource = R.drawable.ic_share_filled,
contentDescription = context.getString(R.string.browser_menu_share), contentDescription = context.getString(R.string.browser_menu_share),
iconTintColorResource = primaryTextColor, iconTintColorResource = primaryTextColor(),
listener = { listener = {
onItemTapped.invoke(ToolbarMenu.Item.Share) onItemTapped.invoke(ToolbarMenu.Item.Share)
} }
@ -165,14 +164,14 @@ open class DefaultToolbarMenu(
val bookmark = BrowserMenuItemToolbar.TwoStateButton( val bookmark = BrowserMenuItemToolbar.TwoStateButton(
primaryImageResource = R.drawable.ic_bookmark_filled, primaryImageResource = R.drawable.ic_bookmark_filled,
primaryContentDescription = context.getString(R.string.browser_menu_edit_bookmark), primaryContentDescription = context.getString(R.string.browser_menu_edit_bookmark),
primaryImageTintResource = primaryTextColor, primaryImageTintResource = primaryTextColor(),
// TwoStateButton.isInPrimaryState must be synchronous, and checking bookmark state is // TwoStateButton.isInPrimaryState must be synchronous, and checking bookmark state is
// relatively slow. The best we can do here is periodically compute and cache a new "is // relatively slow. The best we can do here is periodically compute and cache a new "is
// bookmarked" state, and use that whenever the menu has been opened. // bookmarked" state, and use that whenever the menu has been opened.
isInPrimaryState = { isCurrentUrlBookmarked }, isInPrimaryState = { isCurrentUrlBookmarked },
secondaryImageResource = R.drawable.ic_bookmark_outline, secondaryImageResource = R.drawable.ic_bookmark_outline,
secondaryContentDescription = context.getString(R.string.browser_menu_bookmark), secondaryContentDescription = context.getString(R.string.browser_menu_bookmark),
secondaryImageTintResource = primaryTextColor, secondaryImageTintResource = primaryTextColor(),
disableInSecondaryState = false disableInSecondaryState = false
) { ) {
handleBookmarkItemTapped() handleBookmarkItemTapped()
@ -208,7 +207,7 @@ open class DefaultToolbarMenu(
val installToHomescreen = BrowserMenuHighlightableItem( val installToHomescreen = BrowserMenuHighlightableItem(
label = context.getString(R.string.browser_menu_install_on_homescreen), label = context.getString(R.string.browser_menu_install_on_homescreen),
startImageResource = R.drawable.ic_add_to_homescreen, startImageResource = R.drawable.ic_add_to_homescreen,
iconTintColorResource = primaryTextColor, iconTintColorResource = primaryTextColor(),
highlight = BrowserMenuHighlight.LowPriority( highlight = BrowserMenuHighlight.LowPriority(
label = context.getString(R.string.browser_menu_install_on_homescreen), label = context.getString(R.string.browser_menu_install_on_homescreen),
notificationTint = getColor(context, R.color.whats_new_notification_color) notificationTint = getColor(context, R.color.whats_new_notification_color)
@ -226,10 +225,10 @@ open class DefaultToolbarMenu(
startImageResource = R.drawable.ic_settings, startImageResource = R.drawable.ic_settings,
iconTintColorResource = if (hasAccountProblem) iconTintColorResource = if (hasAccountProblem)
ThemeManager.resolveAttribute(R.attr.syncDisconnected, context) else ThemeManager.resolveAttribute(R.attr.syncDisconnected, context) else
primaryTextColor, primaryTextColor(),
textColorResource = if (hasAccountProblem) textColorResource = if (hasAccountProblem)
ThemeManager.resolveAttribute(R.attr.primaryText, context) else ThemeManager.resolveAttribute(R.attr.primaryText, context) else
primaryTextColor, primaryTextColor(),
highlight = BrowserMenuHighlight.HighPriority( highlight = BrowserMenuHighlight.HighPriority(
endImageResource = R.drawable.ic_sync_disconnected, endImageResource = R.drawable.ic_sync_disconnected,
backgroundTint = context.getColorFromAttr(R.attr.syncDisconnectedBackground), backgroundTint = context.getColorFromAttr(R.attr.syncDisconnectedBackground),
@ -253,7 +252,7 @@ open class DefaultToolbarMenu(
val addToTopSites = BrowserMenuImageText( val addToTopSites = BrowserMenuImageText(
label = context.getString(R.string.browser_menu_add_to_top_sites), label = context.getString(R.string.browser_menu_add_to_top_sites),
imageResource = R.drawable.ic_top_sites, imageResource = R.drawable.ic_top_sites,
iconTintColorResource = primaryTextColor iconTintColorResource = primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.AddToTopSites) onItemTapped.invoke(ToolbarMenu.Item.AddToTopSites)
} }
@ -261,7 +260,7 @@ open class DefaultToolbarMenu(
val addToHomescreen = BrowserMenuImageText( val addToHomescreen = BrowserMenuImageText(
label = context.getString(R.string.browser_menu_add_to_homescreen), label = context.getString(R.string.browser_menu_add_to_homescreen),
imageResource = R.drawable.ic_add_to_homescreen, imageResource = R.drawable.ic_add_to_homescreen,
iconTintColorResource = primaryTextColor iconTintColorResource = primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.AddToHomeScreen) onItemTapped.invoke(ToolbarMenu.Item.AddToHomeScreen)
} }
@ -269,7 +268,7 @@ open class DefaultToolbarMenu(
val syncedTabs = BrowserMenuImageText( val syncedTabs = BrowserMenuImageText(
label = context.getString(R.string.synced_tabs), label = context.getString(R.string.synced_tabs),
imageResource = R.drawable.ic_synced_tabs, imageResource = R.drawable.ic_synced_tabs,
iconTintColorResource = primaryTextColor iconTintColorResource = primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.SyncedTabs) onItemTapped.invoke(ToolbarMenu.Item.SyncedTabs)
} }
@ -277,7 +276,7 @@ open class DefaultToolbarMenu(
val findInPage = BrowserMenuImageText( val findInPage = BrowserMenuImageText(
label = context.getString(R.string.browser_menu_find_in_page), label = context.getString(R.string.browser_menu_find_in_page),
imageResource = R.drawable.mozac_ic_search, imageResource = R.drawable.mozac_ic_search,
iconTintColorResource = primaryTextColor iconTintColorResource = primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.FindInPage) onItemTapped.invoke(ToolbarMenu.Item.FindInPage)
} }
@ -289,7 +288,7 @@ open class DefaultToolbarMenu(
val saveToCollection = BrowserMenuImageText( val saveToCollection = BrowserMenuImageText(
label = context.getString(R.string.browser_menu_save_to_collection_2), label = context.getString(R.string.browser_menu_save_to_collection_2),
imageResource = R.drawable.ic_tab_collection, imageResource = R.drawable.ic_tab_collection,
iconTintColorResource = primaryTextColor iconTintColorResource = primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.SaveToCollection) onItemTapped.invoke(ToolbarMenu.Item.SaveToCollection)
} }
@ -297,7 +296,7 @@ open class DefaultToolbarMenu(
val deleteDataOnQuit = BrowserMenuImageText( val deleteDataOnQuit = BrowserMenuImageText(
label = context.getString(R.string.delete_browsing_data_on_quit_action), label = context.getString(R.string.delete_browsing_data_on_quit_action),
imageResource = R.drawable.ic_exit, imageResource = R.drawable.ic_exit,
iconTintColorResource = primaryTextColor iconTintColorResource = primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.Quit) onItemTapped.invoke(ToolbarMenu.Item.Quit)
} }
@ -305,7 +304,7 @@ open class DefaultToolbarMenu(
val readerAppearance = BrowserMenuImageText( val readerAppearance = BrowserMenuImageText(
label = context.getString(R.string.browser_menu_read_appearance), label = context.getString(R.string.browser_menu_read_appearance),
imageResource = R.drawable.ic_readermode_appearance, imageResource = R.drawable.ic_readermode_appearance,
iconTintColorResource = primaryTextColor iconTintColorResource = primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.CustomizeReaderView) onItemTapped.invoke(ToolbarMenu.Item.CustomizeReaderView)
} }
@ -313,7 +312,7 @@ open class DefaultToolbarMenu(
val openInApp = BrowserMenuHighlightableItem( val openInApp = BrowserMenuHighlightableItem(
label = context.getString(R.string.browser_menu_open_app_link), label = context.getString(R.string.browser_menu_open_app_link),
startImageResource = R.drawable.ic_open_in_app, startImageResource = R.drawable.ic_open_in_app,
iconTintColorResource = primaryTextColor, iconTintColorResource = primaryTextColor(),
highlight = BrowserMenuHighlight.LowPriority( highlight = BrowserMenuHighlight.LowPriority(
label = context.getString(R.string.browser_menu_open_app_link), label = context.getString(R.string.browser_menu_open_app_link),
notificationTint = getColor(context, R.color.whats_new_notification_color) notificationTint = getColor(context, R.color.whats_new_notification_color)
@ -326,7 +325,7 @@ open class DefaultToolbarMenu(
val historyItem = BrowserMenuImageText( val historyItem = BrowserMenuImageText(
context.getString(R.string.library_history), context.getString(R.string.library_history),
R.drawable.ic_history, R.drawable.ic_history,
primaryTextColor primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.History) onItemTapped.invoke(ToolbarMenu.Item.History)
} }
@ -334,7 +333,7 @@ open class DefaultToolbarMenu(
val bookmarksItem = BrowserMenuImageText( val bookmarksItem = BrowserMenuImageText(
context.getString(R.string.library_bookmarks), context.getString(R.string.library_bookmarks),
R.drawable.ic_bookmark_filled, R.drawable.ic_bookmark_filled,
primaryTextColor primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.Bookmarks) onItemTapped.invoke(ToolbarMenu.Item.Bookmarks)
} }
@ -342,7 +341,7 @@ open class DefaultToolbarMenu(
val downloadsItem = BrowserMenuImageText( val downloadsItem = BrowserMenuImageText(
context.getString(R.string.library_downloads), context.getString(R.string.library_downloads),
R.drawable.ic_download, R.drawable.ic_download,
primaryTextColor primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.Downloads) onItemTapped.invoke(ToolbarMenu.Item.Downloads)
} }
@ -410,35 +409,6 @@ open class DefaultToolbarMenu(
id = WebExtensionPlaceholderMenuItem.MAIN_EXTENSIONS_MENU_ID id = WebExtensionPlaceholderMenuItem.MAIN_EXTENSIONS_MENU_ID
) )
val accountManager = context.components.backgroundServices.accountManager
val account = accountManager.authenticatedAccount()
val syncItemTitle = if (account != null && accountManager.accountProfile()?.email != null) {
context.getString(R.string.sync_signed_as, accountManager.accountProfile()?.email)
} else {
context.getString(R.string.sync_menu_sign_in)
}
val syncTabsOrSignInItem =
if (tabsTrayRewrite) {
// If synced tabs are being shown in tabs tray, show sync sign in here.
BrowserMenuImageText(
syncItemTitle,
R.drawable.ic_synced_tabs,
primaryTextColor()
) {
onItemTapped.invoke(ToolbarMenu.Item.SyncAccount)
}
} else {
// If synced tabs are not shown in tabs tray, they should be shown here.
BrowserMenuImageText(
context.getString(R.string.synced_tabs),
R.drawable.ic_synced_tabs,
primaryTextColor()
) {
onItemTapped.invoke(ToolbarMenu.Item.SyncedTabs)
}
}
val findInPageItem = BrowserMenuImageText( val findInPageItem = BrowserMenuImageText(
label = context.getString(R.string.browser_menu_find_in_page), label = context.getString(R.string.browser_menu_find_in_page),
imageResource = R.drawable.mozac_ic_search, imageResource = R.drawable.mozac_ic_search,
@ -512,10 +482,10 @@ open class DefaultToolbarMenu(
startImageResource = R.drawable.ic_settings, startImageResource = R.drawable.ic_settings,
iconTintColorResource = if (hasAccountProblem) iconTintColorResource = if (hasAccountProblem)
ThemeManager.resolveAttribute(R.attr.syncDisconnected, context) else ThemeManager.resolveAttribute(R.attr.syncDisconnected, context) else
primaryTextColor, primaryTextColor(),
textColorResource = if (hasAccountProblem) textColorResource = if (hasAccountProblem)
ThemeManager.resolveAttribute(R.attr.primaryText, context) else ThemeManager.resolveAttribute(R.attr.primaryText, context) else
primaryTextColor, primaryTextColor(),
highlight = BrowserMenuHighlight.HighPriority( highlight = BrowserMenuHighlight.HighPriority(
endImageResource = R.drawable.ic_sync_disconnected, endImageResource = R.drawable.ic_sync_disconnected,
backgroundTint = context.getColorFromAttr(R.attr.syncDisconnectedBackground), backgroundTint = context.getColorFromAttr(R.attr.syncDisconnectedBackground),
@ -546,11 +516,38 @@ open class DefaultToolbarMenu(
val deleteDataOnQuit = BrowserMenuImageText( val deleteDataOnQuit = BrowserMenuImageText(
label = context.getString(R.string.delete_browsing_data_on_quit_action), label = context.getString(R.string.delete_browsing_data_on_quit_action),
imageResource = R.drawable.ic_exit, imageResource = R.drawable.ic_exit,
iconTintColorResource = primaryTextColor iconTintColorResource = primaryTextColor()
) { ) {
onItemTapped.invoke(ToolbarMenu.Item.Quit) onItemTapped.invoke(ToolbarMenu.Item.Quit)
} }
val syncedTabsItem = BrowserMenuImageText(
context.getString(R.string.synced_tabs),
R.drawable.ic_synced_tabs,
primaryTextColor()
) {
onItemTapped.invoke(ToolbarMenu.Item.SyncedTabs)
}
private fun getSyncItemTitle(): String {
val authenticatedAccount = accountManager.authenticatedAccount() != null
val email = accountManager.accountProfile()?.email
return if (authenticatedAccount && email != null) {
email
} else {
context.getString(R.string.sync_menu_sign_in)
}
}
val syncMenuItem = BrowserMenuImageText(
getSyncItemTitle(),
R.drawable.ic_synced_tabs,
primaryTextColor()
) {
onItemTapped.invoke(ToolbarMenu.Item.SyncAccount)
}
@VisibleForTesting(otherwise = PRIVATE) @VisibleForTesting(otherwise = PRIVATE)
val newCoreMenuItems by lazy { val newCoreMenuItems by lazy {
val menuItems = val menuItems =
@ -562,7 +559,7 @@ open class DefaultToolbarMenu(
historyItem, historyItem,
downloadsItem, downloadsItem,
extensionsItem, extensionsItem,
syncTabsOrSignInItem, if (tabsTrayRewrite) syncMenuItem else syncedTabsItem,
BrowserMenuDivider(), BrowserMenuDivider(),
findInPageItem, findInPageItem,
desktopSiteItem, desktopSiteItem,
@ -623,6 +620,7 @@ open class DefaultToolbarMenu(
.any { it.url == newUrl } .any { it.url == newUrl }
} }
} }
private fun getSetDefaultBrowserItem(): BrowserMenuImageText? { private fun getSetDefaultBrowserItem(): BrowserMenuImageText? {
val experiments = context.components.analytics.experiments val experiments = context.components.analytics.experiments
val browsers = BrowsersCache.all(context) val browsers = BrowsersCache.all(context)

@ -63,6 +63,7 @@ class HomeMenu(
context.getColorFromAttr(R.attr.syncDisconnectedBackground) context.getColorFromAttr(R.attr.syncDisconnectedBackground)
private val shouldUseBottomToolbar = context.settings().shouldUseBottomToolbar private val shouldUseBottomToolbar = context.settings().shouldUseBottomToolbar
private val accountManager = context.components.backgroundServices.accountManager
// 'Reconnect' and 'Quit' items aren't needed most of the time, so we'll only create the if necessary. // 'Reconnect' and 'Quit' items aren't needed most of the time, so we'll only create the if necessary.
private val reconnectToSyncItem by lazy { private val reconnectToSyncItem by lazy {
@ -91,6 +92,17 @@ class HomeMenu(
} }
} }
private fun getSyncItemTitle(): String {
val authenticatedAccount = accountManager.authenticatedAccount() != null
val email = accountManager.accountProfile()?.email
return if (authenticatedAccount && email != null) {
email
} else {
context.getString(R.string.sync_menu_sign_in)
}
}
private val oldCoreMenuItems by lazy { private val oldCoreMenuItems by lazy {
val whatsNewItem = BrowserMenuHighlightableItem( val whatsNewItem = BrowserMenuHighlightableItem(
context.getString(R.string.browser_menu_whats_new), context.getString(R.string.browser_menu_whats_new),
@ -157,16 +169,8 @@ class HomeMenu(
onItemTapped.invoke(Item.Settings) onItemTapped.invoke(Item.Settings)
} }
val accountManager = context.components.backgroundServices.accountManager
val account = accountManager.authenticatedAccount()
val syncItemTitle = if (account != null && accountManager.accountProfile()?.email != null) {
context.getString(R.string.sync_signed_as, accountManager.accountProfile()?.email)
} else {
context.getString(R.string.sync_menu_sign_in)
}
val syncedTabsItem = BrowserMenuImageText( val syncedTabsItem = BrowserMenuImageText(
syncItemTitle, getSyncItemTitle(),
R.drawable.ic_synced_tabs, R.drawable.ic_synced_tabs,
primaryTextColor primaryTextColor
) { ) {

@ -214,9 +214,6 @@
<action <action
android:id="@+id/action_browserFragment_to_settingsFragment" android:id="@+id/action_browserFragment_to_settingsFragment"
app:destination="@id/settingsFragment" /> app:destination="@id/settingsFragment" />
<action
android:id="@+id/action_browserFragment_to_syncAccountSettingsFragment"
app:destination="@id/accountSettingsFragment" />
<action <action
android:id="@+id/action_browserFragment_to_createShortcutFragment" android:id="@+id/action_browserFragment_to_createShortcutFragment"
app:destination="@id/createShortcutFragment" /> app:destination="@id/createShortcutFragment" />

@ -960,8 +960,6 @@
<string name="share_link_all_apps_subheader">All actions</string> <string name="share_link_all_apps_subheader">All actions</string>
<!-- Sub-header in the dialog to share a link to an app from the most-recent sorted list --> <!-- Sub-header in the dialog to share a link to an app from the most-recent sorted list -->
<string name="share_link_recent_apps_subheader">Recently used</string> <string name="share_link_recent_apps_subheader">Recently used</string>
<!-- An string shown when an account is signed in where %1$s is a placeholder for the email-->
<string name="sync_signed_as">Signed in as %1$s</string>
<!-- An option from the three dot menu to into sync --> <!-- An option from the three dot menu to into sync -->
<string name="sync_menu_sign_in">Sign in to sync</string> <string name="sync_menu_sign_in">Sign in to sync</string>
<!-- An option from the share dialog to sign into sync --> <!-- An option from the share dialog to sign into sync -->

Loading…
Cancel
Save