diff --git a/app/build.gradle b/app/build.gradle index 34263bcce..52c1d7a90 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,6 +77,7 @@ dependencies { implementation Deps.mozilla_browser_session implementation Deps.mozilla_browser_toolbar + implementation Deps.mozilla_feature_awesomebar implementation Deps.mozilla_feature_intent implementation Deps.mozilla_feature_session implementation Deps.mozilla_feature_toolbar diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index 34b0a5a7b..e010cafaa 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -36,7 +36,6 @@ class BrowserFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val sessionManager = requireComponents.core.sessionManager val sessionId = "1" diff --git a/app/src/main/java/org/mozilla/fenix/components/UseCases.kt b/app/src/main/java/org/mozilla/fenix/components/UseCases.kt index 95b12c96e..49c263d0f 100644 --- a/app/src/main/java/org/mozilla/fenix/components/UseCases.kt +++ b/app/src/main/java/org/mozilla/fenix/components/UseCases.kt @@ -5,6 +5,7 @@ import mozilla.components.browser.search.SearchEngineManager import mozilla.components.browser.session.SessionManager import mozilla.components.feature.search.SearchUseCases import mozilla.components.feature.session.SessionUseCases +import mozilla.components.feature.tabs.TabsUseCases /** * Component group for all use cases. Use cases are provided by feature @@ -17,5 +18,6 @@ class UseCases( ) { val searchUseCases by lazy { SearchUseCases(context, searchEngineManager, sessionManager) } - val sessionUseCases by lazy { SessionUseCases(sessionManager) } + val sessionUseCases by lazy { SessionUseCases(sessionManager) }; + val tabsUseCases by lazy { TabsUseCases(sessionManager) } } diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt index c33562a28..251dae833 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt @@ -9,11 +9,16 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat +import androidx.core.view.ViewCompat import androidx.fragment.app.Fragment +import androidx.navigation.Navigation +import androidx.navigation.fragment.FragmentNavigator import kotlinx.android.synthetic.main.fragment_search.* import mozilla.components.browser.domains.autocomplete.ShippedDomainsProvider +import mozilla.components.feature.awesomebar.AwesomeBarFeature import org.mozilla.fenix.R import org.mozilla.fenix.components.toolbar.ToolbarIntegration +import org.mozilla.fenix.ext.requireComponents class SearchFragment : Fragment() { override fun onCreateView( @@ -44,6 +49,15 @@ class SearchFragment : Fragment() { "1") ) + AwesomeBarFeature(awesomeBar, toolbar, null, onEditComplete = ::didActivateSearch) + .addSearchProvider( + requireComponents.search.searchEngineManager.getDefaultSearchEngine(requireContext()), + requireComponents.useCases.searchUseCases.defaultSearch) + .addSessionProvider( + requireComponents.core.sessionManager, + requireComponents.useCases.tabsUseCases.selectTab) + + toolbar_wrapper.clipToOutline = false toolbar.apply { textColor = ContextCompat.getColor(context, R.color.searchText) @@ -52,4 +66,11 @@ class SearchFragment : Fragment() { hintColor = ContextCompat.getColor(context, R.color.searchText) } } + + private fun didActivateSearch() { + val extras = FragmentNavigator.Extras.Builder().addSharedElement( + toolbar_wrapper, ViewCompat.getTransitionName(toolbar_wrapper)!! + ).build() + Navigation.findNavController(toolbar).navigate(R.id.action_searchFragment_to_browserFragment, null, null, extras) + } } diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml index 7760b8c45..f38461aa6 100644 --- a/app/src/main/res/layout/fragment_search.xml +++ b/app/src/main/res/layout/fragment_search.xml @@ -5,6 +5,7 @@ @@ -37,7 +38,18 @@ + android:id="@+id/awesomeBar" + android:layout_width="0dp" + android:layout_height="0dp" + android:padding="4dp" + android:visibility="gone" + android:layout_marginTop="16dp" + app:layout_constraintTop_toBottomOf="@id/toolbar_wrapper" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + mozac:awesomeBarTitleTextColor="#ffffff" + mozac:awesomeBarDescriptionTextColor="#dddddd" + mozac:awesomeBarChipTextColor="#ffffff" + mozac:awesomeBarChipBackgroundColor="#444444" /> \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 196796d75..1277d8f5e 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -10,10 +10,12 @@ /> + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index ec85cb52e..c829624a5 100644 --- a/build.gradle +++ b/build.gradle @@ -30,3 +30,9 @@ allprojects { task clean(type: Delete) { delete rootProject.buildDir } + +task showMeCache << { + configurations.compile.each { println it } +} + + diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index 31b8e0ad9..613dd60f9 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -41,6 +41,7 @@ object Deps { const val mozilla_browser_session = "org.mozilla.components:browser-session:${Versions.mozilla_android_components}" const val mozilla_browser_toolbar = "org.mozilla.components:browser-toolbar:${Versions.mozilla_android_components}" + const val mozilla_feature_awesomebar = "org.mozilla.components:feature-awesomebar:${Versions.mozilla_android_components}" const val mozilla_feature_intent = "org.mozilla.components:feature-intent:${Versions.mozilla_android_components}" const val mozilla_feature_session = "org.mozilla.components:feature-session:${Versions.mozilla_android_components}" const val mozilla_feature_storage = "org.mozilla.components:feature-storage:${Versions.mozilla_android_components}"