Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move Duck.ai to standalone Activity #5784

Merged
merged 16 commits into from
Mar 20, 2025
Merged
Prev Previous commit
Next Next commit
Use BrowserNav to launch a new tab
joshliebe committed Mar 20, 2025
commit e4bd5e32f55f01c8d526b48a7e9bfd90e43a8a30
Original file line number Diff line number Diff line change
@@ -42,7 +42,6 @@ import androidx.viewpager2.widget.ViewPager2
import androidx.webkit.ServiceWorkerClientCompat
import androidx.webkit.ServiceWorkerControllerCompat
import androidx.webkit.WebViewFeature
import com.duckduckgo.anvil.annotations.ContributeToActivityStarter
import com.duckduckgo.anvil.annotations.InjectWith
import com.duckduckgo.app.browser.BrowserViewModel.Command
import com.duckduckgo.app.browser.BrowserViewModel.Command.Query
@@ -83,7 +82,6 @@ import com.duckduckgo.app.tabs.model.TabEntity
import com.duckduckgo.appbuildconfig.api.AppBuildConfig
import com.duckduckgo.autofill.api.emailprotection.EmailProtectionLinkVerifier
import com.duckduckgo.browser.api.ui.BrowserScreens.BookmarksScreenNoParams
import com.duckduckgo.browser.api.ui.BrowserScreens.BrowserActivityWithParams
import com.duckduckgo.common.ui.DuckDuckGoActivity
import com.duckduckgo.common.ui.experiments.visual.store.VisualDesignExperimentDataStore
import com.duckduckgo.common.ui.view.dialog.TextAlertDialogBuilder
@@ -96,7 +94,6 @@ import com.duckduckgo.common.utils.playstore.PlayStoreUtils
import com.duckduckgo.di.scopes.ActivityScope
import com.duckduckgo.duckchat.api.DuckChat
import com.duckduckgo.navigation.api.GlobalActivityStarter
import com.duckduckgo.navigation.api.getActivityParams
import com.duckduckgo.savedsites.impl.bookmarks.BookmarksActivity.Companion.SAVED_SITE_URL_EXTRA
import com.duckduckgo.site.permissions.impl.ui.SitePermissionScreenNoParams
import javax.inject.Inject
@@ -109,7 +106,6 @@ import timber.log.Timber

// open class so that we can test BrowserApplicationStateInfo
@InjectWith(ActivityScope::class)
@ContributeToActivityStarter(BrowserActivityWithParams::class)
open class BrowserActivity : DuckDuckGoActivity() {

@Inject
@@ -434,10 +430,6 @@ open class BrowserActivity : DuckDuckGoActivity() {
return
}

intent.getActivityParams(BrowserActivityWithParams::class.java)?.let {
intent.putExtra(EXTRA_TEXT, it.url)
}

if (intent.getBooleanExtra(LAUNCH_FROM_DEFAULT_BROWSER_DIALOG, false)) {
Timber.i("launch from default browser")
setResult(DefaultBrowserPage.DEFAULT_BROWSER_RESULT_CODE_DIALOG_INTERNAL)
Original file line number Diff line number Diff line change
@@ -23,13 +23,6 @@ import com.duckduckgo.navigation.api.GlobalActivityStarter
*/
sealed class BrowserScreens {

/**
* Use this model to launch the Browser screen
*/
data class BrowserActivityWithParams(
val url: String,
) : GlobalActivityStarter.ActivityParams

/**
* Use this model to launch the standalone WebView
*/
Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@ import android.webkit.WebView
import com.duckduckgo.anvil.annotations.InjectWith
import com.duckduckgo.app.di.AppCoroutineScope
import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.browser.api.ui.BrowserScreens.BrowserActivityWithParams
import com.duckduckgo.app.tabs.BrowserNav
import com.duckduckgo.common.ui.DuckDuckGoActivity
import com.duckduckgo.common.ui.viewbinding.viewBinding
import com.duckduckgo.common.utils.DispatcherProvider
@@ -39,7 +39,6 @@ import com.duckduckgo.duckchat.impl.RealDuckChatJSHelper.Companion.DUCK_CHAT_FEA
import com.duckduckgo.duckchat.impl.databinding.ActivityDuckChatWebviewBinding
import com.duckduckgo.js.messaging.api.JsMessageCallback
import com.duckduckgo.js.messaging.api.JsMessaging
import com.duckduckgo.navigation.api.GlobalActivityStarter
import javax.inject.Inject
import javax.inject.Named
import kotlinx.coroutines.CoroutineScope
@@ -71,7 +70,7 @@ class DuckChatWebViewActivity : DuckDuckGoActivity() {
lateinit var dispatcherProvider: DispatcherProvider

@Inject
lateinit var globalActivityStarter: GlobalActivityStarter
lateinit var browserNav: BrowserNav

private val binding: ActivityDuckChatWebviewBinding by viewBinding()

@@ -100,13 +99,7 @@ class DuckChatWebViewActivity : DuckDuckGoActivity() {
view?.requestFocusNodeHref(resultMsg)
val newWindowUrl = resultMsg?.data?.getString("url")
if (newWindowUrl != null) {
val intent = globalActivityStarter.startIntent(
this@DuckChatWebViewActivity,
BrowserActivityWithParams(
url = newWindowUrl,
),
)
startActivity(intent)
startActivity(browserNav.openInNewTab(this@DuckChatWebViewActivity, newWindowUrl))
return true
} else {
pixel.fire(DEDICATED_WEBVIEW_URL_EXTRACTION_FAILED)