Loading components/feature/customtabs/src/main/java/mozilla/components/feature/customtabs/CustomTabsToolbarFeature.kt +18 −6 Original line number Diff line number Diff line Loading @@ -6,9 +6,11 @@ package mozilla.components.feature.customtabs import android.content.Intent import android.graphics.Bitmap import android.graphics.Color import android.graphics.drawable.BitmapDrawable import android.net.Uri import android.support.annotation.VisibleForTesting import android.support.v4.content.ContextCompat import mozilla.components.browser.menu.BrowserMenuBuilder Loading Loading @@ -63,11 +65,11 @@ class CustomTabsToolbarFeature( // Add navigation close action addCloseButton(config.closeButtonIcon) // Add action button addActionButton(config.actionButtonConfig) addActionButton(session, config.actionButtonConfig) // Show share button if (config.showShareMenuItem) addShareButton(session) // Add menu items if (config.menuItems.isNotEmpty()) addMenuItems(config.menuItems) if (config.menuItems.isNotEmpty()) addMenuItems(session, config.menuItems) // Explicitly set the title regardless of the customTabConfig settings toolbar.titleTextSize = TITLE_TEXT_SIZE Loading Loading @@ -109,14 +111,18 @@ class CustomTabsToolbarFeature( } @VisibleForTesting internal fun addActionButton(buttonConfig: CustomTabActionButtonConfig?) { internal fun addActionButton(session: Session, buttonConfig: CustomTabActionButtonConfig?) { buttonConfig?.let { config -> val button = Toolbar.ActionButton( BitmapDrawable(context.resources, config.icon), config.description ) { emitActionButtonFact() config.pendingIntent.send() config.pendingIntent.send( context, 0, Intent(null, Uri.parse(session.url)) ) } toolbar.addBrowserAction(button) Loading @@ -138,9 +144,15 @@ class CustomTabsToolbarFeature( } @VisibleForTesting internal fun addMenuItems(menuItems: List<CustomTabMenuItem>) { internal fun addMenuItems(session: Session, menuItems: List<CustomTabMenuItem>) { menuItems.map { SimpleBrowserMenuItem(it.name) { it.pendingIntent.send() } SimpleBrowserMenuItem(it.name) { it.pendingIntent.send( context, 0, Intent(null, Uri.parse(session.url)) ) } }.also { items -> val combinedItems = menuBuilder?.let { builder -> builder.items + items } ?: items val combinedExtras = menuBuilder?.let { Loading components/feature/customtabs/src/test/java/mozilla/components/feature/customtabs/CustomTabsToolbarFeatureTest.kt +9 −8 Original line number Diff line number Diff line Loading @@ -213,7 +213,7 @@ class CustomTabsToolbarFeatureTest { feature.initialize(session) verify(feature).addActionButton(null) verify(feature).addActionButton(any(), any()) } @Test Loading @@ -229,8 +229,9 @@ class CustomTabsToolbarFeatureTest { val pendingIntent: PendingIntent = mock() `when`(session.customTabConfig).thenReturn(customTabConfig) `when`(session.url).thenReturn("https://example.com") feature.addActionButton(null) feature.addActionButton(session, null) verify(toolbar, never()).addBrowserAction(any()) Loading @@ -240,13 +241,13 @@ class CustomTabsToolbarFeatureTest { `when`(actionConfig.pendingIntent).thenReturn(pendingIntent) `when`(actionConfig.icon).thenReturn(closeButtonIcon) feature.addActionButton(actionConfig) feature.addActionButton(session, actionConfig) verify(toolbar).addBrowserAction(captor.capture()) val button = captor.value.createView(FrameLayout(RuntimeEnvironment.application)) button.performClick() verify(pendingIntent).send() verify(pendingIntent).send(any(), anyInt(), any()) } @Test Loading @@ -261,13 +262,13 @@ class CustomTabsToolbarFeatureTest { feature.initialize(session) verify(feature, never()).addMenuItems(anyList()) verify(feature, never()).addMenuItems(any(), anyList()) `when`(customTabConfig.menuItems).thenReturn(listOf(CustomTabMenuItem("Share", mock()))) feature.initialize(session) verify(feature).addMenuItems(anyList()) verify(feature).addMenuItems(any(), anyList()) } @Test Loading @@ -281,7 +282,7 @@ class CustomTabsToolbarFeatureTest { `when`(session.customTabConfig).thenReturn(customTabConfig) `when`(customTabConfig.menuItems).thenReturn(emptyList()) feature.addMenuItems(listOf(CustomTabMenuItem("Share", mock()))) feature.addMenuItems(session, listOf(CustomTabMenuItem("Share", mock()))) verify(toolbar).setMenuBuilder(captor.capture()) assertEquals(1, captor.value.items.size) Loading @@ -299,7 +300,7 @@ class CustomTabsToolbarFeatureTest { `when`(customTabConfig.menuItems).thenReturn(emptyList()) `when`(builder.items).thenReturn(listOf(mock(), mock())) feature.addMenuItems(listOf(CustomTabMenuItem("Share", mock()))) feature.addMenuItems(session, listOf(CustomTabMenuItem("Share", mock()))) verify(toolbar).setMenuBuilder(captor.capture()) Loading docs/changelog.md +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ permalink: /changelog/ * **feature-customtabs** * Added fact emitting. * Bugfix to call with app-contributed pending intents from menu items and action buttons. # 0.50.0 Loading Loading
components/feature/customtabs/src/main/java/mozilla/components/feature/customtabs/CustomTabsToolbarFeature.kt +18 −6 Original line number Diff line number Diff line Loading @@ -6,9 +6,11 @@ package mozilla.components.feature.customtabs import android.content.Intent import android.graphics.Bitmap import android.graphics.Color import android.graphics.drawable.BitmapDrawable import android.net.Uri import android.support.annotation.VisibleForTesting import android.support.v4.content.ContextCompat import mozilla.components.browser.menu.BrowserMenuBuilder Loading Loading @@ -63,11 +65,11 @@ class CustomTabsToolbarFeature( // Add navigation close action addCloseButton(config.closeButtonIcon) // Add action button addActionButton(config.actionButtonConfig) addActionButton(session, config.actionButtonConfig) // Show share button if (config.showShareMenuItem) addShareButton(session) // Add menu items if (config.menuItems.isNotEmpty()) addMenuItems(config.menuItems) if (config.menuItems.isNotEmpty()) addMenuItems(session, config.menuItems) // Explicitly set the title regardless of the customTabConfig settings toolbar.titleTextSize = TITLE_TEXT_SIZE Loading Loading @@ -109,14 +111,18 @@ class CustomTabsToolbarFeature( } @VisibleForTesting internal fun addActionButton(buttonConfig: CustomTabActionButtonConfig?) { internal fun addActionButton(session: Session, buttonConfig: CustomTabActionButtonConfig?) { buttonConfig?.let { config -> val button = Toolbar.ActionButton( BitmapDrawable(context.resources, config.icon), config.description ) { emitActionButtonFact() config.pendingIntent.send() config.pendingIntent.send( context, 0, Intent(null, Uri.parse(session.url)) ) } toolbar.addBrowserAction(button) Loading @@ -138,9 +144,15 @@ class CustomTabsToolbarFeature( } @VisibleForTesting internal fun addMenuItems(menuItems: List<CustomTabMenuItem>) { internal fun addMenuItems(session: Session, menuItems: List<CustomTabMenuItem>) { menuItems.map { SimpleBrowserMenuItem(it.name) { it.pendingIntent.send() } SimpleBrowserMenuItem(it.name) { it.pendingIntent.send( context, 0, Intent(null, Uri.parse(session.url)) ) } }.also { items -> val combinedItems = menuBuilder?.let { builder -> builder.items + items } ?: items val combinedExtras = menuBuilder?.let { Loading
components/feature/customtabs/src/test/java/mozilla/components/feature/customtabs/CustomTabsToolbarFeatureTest.kt +9 −8 Original line number Diff line number Diff line Loading @@ -213,7 +213,7 @@ class CustomTabsToolbarFeatureTest { feature.initialize(session) verify(feature).addActionButton(null) verify(feature).addActionButton(any(), any()) } @Test Loading @@ -229,8 +229,9 @@ class CustomTabsToolbarFeatureTest { val pendingIntent: PendingIntent = mock() `when`(session.customTabConfig).thenReturn(customTabConfig) `when`(session.url).thenReturn("https://example.com") feature.addActionButton(null) feature.addActionButton(session, null) verify(toolbar, never()).addBrowserAction(any()) Loading @@ -240,13 +241,13 @@ class CustomTabsToolbarFeatureTest { `when`(actionConfig.pendingIntent).thenReturn(pendingIntent) `when`(actionConfig.icon).thenReturn(closeButtonIcon) feature.addActionButton(actionConfig) feature.addActionButton(session, actionConfig) verify(toolbar).addBrowserAction(captor.capture()) val button = captor.value.createView(FrameLayout(RuntimeEnvironment.application)) button.performClick() verify(pendingIntent).send() verify(pendingIntent).send(any(), anyInt(), any()) } @Test Loading @@ -261,13 +262,13 @@ class CustomTabsToolbarFeatureTest { feature.initialize(session) verify(feature, never()).addMenuItems(anyList()) verify(feature, never()).addMenuItems(any(), anyList()) `when`(customTabConfig.menuItems).thenReturn(listOf(CustomTabMenuItem("Share", mock()))) feature.initialize(session) verify(feature).addMenuItems(anyList()) verify(feature).addMenuItems(any(), anyList()) } @Test Loading @@ -281,7 +282,7 @@ class CustomTabsToolbarFeatureTest { `when`(session.customTabConfig).thenReturn(customTabConfig) `when`(customTabConfig.menuItems).thenReturn(emptyList()) feature.addMenuItems(listOf(CustomTabMenuItem("Share", mock()))) feature.addMenuItems(session, listOf(CustomTabMenuItem("Share", mock()))) verify(toolbar).setMenuBuilder(captor.capture()) assertEquals(1, captor.value.items.size) Loading @@ -299,7 +300,7 @@ class CustomTabsToolbarFeatureTest { `when`(customTabConfig.menuItems).thenReturn(emptyList()) `when`(builder.items).thenReturn(listOf(mock(), mock())) feature.addMenuItems(listOf(CustomTabMenuItem("Share", mock()))) feature.addMenuItems(session, listOf(CustomTabMenuItem("Share", mock()))) verify(toolbar).setMenuBuilder(captor.capture()) Loading
docs/changelog.md +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ permalink: /changelog/ * **feature-customtabs** * Added fact emitting. * Bugfix to call with app-contributed pending intents from menu items and action buttons. # 0.50.0 Loading