diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserActivity.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserActivity.kt index a6e704dec3ed..1f867cb53570 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserActivity.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserActivity.kt @@ -22,6 +22,7 @@ import android.content.Intent import android.content.Intent.EXTRA_TEXT import android.os.Bundle import android.os.Message +import android.view.View import android.widget.Toast import androidx.fragment.app.DialogFragment import androidx.lifecycle.Observer @@ -53,6 +54,7 @@ import com.duckduckgo.app.statistics.pixels.Pixel.PixelName.FIRE_DIALOG_CANCEL import com.duckduckgo.app.statistics.pixels.Pixel.PixelName.FIRE_DIALOG_PROMOTED_CANCEL import com.duckduckgo.app.tabs.model.TabEntity import kotlinx.android.synthetic.main.activity_browser.* +import kotlinx.android.synthetic.main.include_omnibar_toolbar_mockup.* import kotlinx.coroutines.* import org.jetbrains.anko.longToast import timber.log.Timber @@ -203,14 +205,14 @@ class BrowserActivity : DuckDuckGoActivity(), CoroutineScope by MainScope() { GlobalScope.launch { clearPersonalDataAction.clearTabsAndAllDataAsync(appInForeground = true, shouldFireDataClearPixel = true) clearPersonalDataAction.setAppUsedSinceLastClearFlag(false) - clearPersonalDataAction.killAndRestartProcess() + clearPersonalDataAction.killAndRestartProcess(notifyDataCleared = false) } return } - if (intent.getBooleanExtra(LAUNCHED_FROM_FIRE_EXTRA, false)) { - Timber.i("Launched from fire") + if (intent.getBooleanExtra(NOTIFY_DATA_CLEARED_EXTRA, false)) { + Timber.i("Should notify data cleared") Toast.makeText(applicationContext, R.string.fireDataCleared, Toast.LENGTH_LONG).show() } @@ -365,24 +367,33 @@ class BrowserActivity : DuckDuckGoActivity(), CoroutineScope by MainScope() { } } + override fun onAttachFragment(fragment: androidx.fragment.app.Fragment) { + super.onAttachFragment(fragment) + hideMockupOmnibar() + } + + private fun hideMockupOmnibar() { + appBarLayoutMockup.visibility = View.GONE + } + companion object { fun intent( context: Context, queryExtra: String? = null, newSearch: Boolean = false, - launchedFromFireAction: Boolean = false + notifyDataCleared: Boolean = false ): Intent { val intent = Intent(context, BrowserActivity::class.java) intent.putExtra(EXTRA_TEXT, queryExtra) intent.putExtra(NEW_SEARCH_EXTRA, newSearch) - intent.putExtra(LAUNCHED_FROM_FIRE_EXTRA, launchedFromFireAction) + intent.putExtra(NOTIFY_DATA_CLEARED_EXTRA, notifyDataCleared) return intent } const val NEW_SEARCH_EXTRA = "NEW_SEARCH_EXTRA" const val PERFORM_FIRE_ON_ENTRY_EXTRA = "PERFORM_FIRE_ON_ENTRY_EXTRA" - const val LAUNCHED_FROM_FIRE_EXTRA = "LAUNCHED_FROM_FIRE_EXTRA" + const val NOTIFY_DATA_CLEARED_EXTRA = "NOTIFY_DATA_CLEARED_EXTRA" const val LAUNCH_FROM_DEFAULT_BROWSER_DIALOG = "LAUNCH_FROM_DEFAULT_BROWSER_DIALOG" private const val APP_ENJOYMENT_DIALOG_TAG = "AppEnjoyment" diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt index 911a3f13eab5..40e82ba4c183 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt @@ -17,8 +17,6 @@ package com.duckduckgo.app.browser import android.Manifest -import android.animation.LayoutTransition.CHANGING -import android.animation.LayoutTransition.DISAPPEARING import android.annotation.SuppressLint import android.app.Activity.RESULT_OK import android.app.ActivityOptions @@ -28,10 +26,7 @@ import android.content.pm.PackageManager import android.content.res.Configuration import android.media.MediaScannerConnection import android.net.Uri -import android.os.Bundle -import android.os.Environment -import android.os.Handler -import android.os.Message +import android.os.* import android.provider.Settings import android.text.Editable import android.view.* @@ -111,7 +106,6 @@ import com.duckduckgo.widget.SearchWidgetLight import com.google.android.material.snackbar.Snackbar import dagger.android.support.AndroidSupportInjection import kotlinx.android.synthetic.main.fragment_browser_tab.* -import kotlinx.android.synthetic.main.include_add_widget_instruction_buttons.view.* import kotlinx.android.synthetic.main.include_cta_buttons.view.* import kotlinx.android.synthetic.main.include_dax_dialog_cta.* import kotlinx.android.synthetic.main.include_dax_dialog_cta.view.* @@ -265,7 +259,7 @@ class BrowserTabFragment : } } - private val logoHidingListener by lazy { LogoHidingLayoutChangeLifecycleListener(ddgLogo) } + private val homeBackgroundLogo by lazy { HomeBackgroundLogo(ddgLogo) } private val ctaViewStateObserver = Observer { it?.let { renderer.renderCtaViewState(it) } @@ -304,7 +298,6 @@ class BrowserTabFragment : configureOmnibarTextInput() configureFindInPage() configureAutoComplete() - configureKeyboardAwareLogoAnimation() decorator.decorateWithFeatures() @@ -366,7 +359,6 @@ class BrowserTabFragment : appBarLayout.setExpanded(true) viewModel.onViewResumed() - logoHidingListener.onResume() // onResume can be called for a hidden/backgrounded fragment, ensure this tab is visible. if (fragmentIsVisible()) { @@ -377,7 +369,6 @@ class BrowserTabFragment : } override fun onPause() { - logoHidingListener.onPause() dismissDownloadFragment() dismissAuthenticationDialog() super.onPause() @@ -492,7 +483,7 @@ class BrowserTabFragment : webView?.onPause() webView?.hide() omnibarScrolling.disableOmnibarScrolling(toolbarContainer) - logoHidingListener.onReadyToShowLogo() + homeBackgroundLogo.showLogo() } private fun showBrowser() { @@ -500,6 +491,7 @@ class BrowserTabFragment : webView?.show() webView?.onResume() omnibarScrolling.enableOmnibarScrolling(toolbarContainer) + homeBackgroundLogo.hideLogo() } fun submitQuery(query: String) { @@ -934,16 +926,6 @@ class BrowserTabFragment : clearTextButton.setOnClickListener { omnibarTextInput.setText("") } } - private fun configureKeyboardAwareLogoAnimation() { - newTabLayout.layoutTransition?.apply { - // we want layout transitions for when the size changes; we don't want them when items disappear (can cause glitch on call to action button) - enableTransitionType(CHANGING) - disableTransitionType(DISAPPEARING) - setDuration(LAYOUT_TRANSITION_MS) - } - rootView.addOnLayoutChangeListener(logoHidingListener) - } - private fun userSelectedAutocomplete(suggestion: AutoCompleteSuggestion) { // send pixel before submitting the query and changing the autocomplete state to empty; otherwise will send the wrong params GlobalScope.launch { @@ -1817,8 +1799,6 @@ class BrowserTabFragment : } renderIfChanged(viewState, lastSeenCtaViewState) { - - ddgLogo.show() lastSeenCtaViewState = viewState removeNewTabLayoutClickListener() if (viewState.cta != null) { @@ -1826,7 +1806,6 @@ class BrowserTabFragment : } else { hideHomeCta() hideDaxCta() - hideHomeTopCta() } } } @@ -1836,7 +1815,6 @@ class BrowserTabFragment : is HomePanelCta -> showHomeCta(configuration) is DaxBubbleCta -> showDaxCta(configuration) is DialogCta -> showDaxDialogCta(configuration) - is HomeTopPanelCta -> showHomeTopCta(configuration) } viewModel.onCtaShown() @@ -1859,9 +1837,8 @@ class BrowserTabFragment : } private fun showDaxCta(configuration: DaxBubbleCta) { - ddgLogo.hide() + homeBackgroundLogo.hideLogo() hideHomeCta() - hideHomeTopCta() configuration.showCta(daxCtaContainer) newTabLayout.setOnClickListener { daxCtaContainer.dialogTextCta.finishAnimation() } } @@ -1870,29 +1847,14 @@ class BrowserTabFragment : newTabLayout.setOnClickListener(null) } - private fun showHomeTopCta(configuration: HomeTopPanelCta) { - hideDaxCta() - hideHomeCta() - - logoHidingListener.callToActionView = ctaTopContainer - - configuration.showCta(ctaTopContainer) - ctaTopContainer.setOnClickListener { - viewModel.onUserClickTopCta(configuration) - } - ctaTopContainer.closeButton.setOnClickListener { - viewModel.onUserDismissedCta() - } - } - private fun showHomeCta(configuration: HomePanelCta) { hideDaxCta() - hideHomeTopCta() if (ctaContainer.isEmpty()) { renderHomeCta() } else { configuration.showCta(ctaContainer) } + homeBackgroundLogo.showLogo() } private fun hideDaxCta() { @@ -1904,10 +1866,6 @@ class BrowserTabFragment : ctaContainer.gone() } - private fun hideHomeTopCta() { - ctaTopContainer.gone() - } - fun renderHomeCta() { val context = context ?: return val cta = lastSeenCtaViewState?.cta ?: return @@ -1916,7 +1874,6 @@ class BrowserTabFragment : ctaContainer.removeAllViews() inflate(context, R.layout.include_cta, ctaContainer) - logoHidingListener.callToActionView = ctaContainer configuration.showCta(ctaContainer) ctaContainer.ctaOkButton.setOnClickListener { diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt index 3f24da3e7456..94f885ddcf77 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt @@ -1630,9 +1630,6 @@ class BrowserTabViewModel( } } - fun onUserClickTopCta(cta: HomeTopPanelCta) { - } - fun onUserClickCtaOkButton() { val cta = currentCtaViewState().cta ?: return ctaViewModel.onUserClickCtaOkButton(cta) @@ -1678,9 +1675,6 @@ class BrowserTabViewModel( viewModelScope.launch { ctaViewModel.onUserDismissedCta(cta) when (cta) { - is HomeTopPanelCta -> { - ctaViewState.value = currentCtaViewState().copy(cta = null) - } is HomePanelCta -> refreshCta() else -> ctaViewState.value = currentCtaViewState().copy(cta = null) } diff --git a/app/src/main/java/com/duckduckgo/app/browser/HomeBackgroundLogo.kt b/app/src/main/java/com/duckduckgo/app/browser/HomeBackgroundLogo.kt new file mode 100644 index 000000000000..c77e23e35eb0 --- /dev/null +++ b/app/src/main/java/com/duckduckgo/app/browser/HomeBackgroundLogo.kt @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2018 DuckDuckGo + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.duckduckgo.app.browser + +import android.view.View +import android.view.animation.AccelerateInterpolator +import com.duckduckgo.app.global.view.hide +import com.duckduckgo.app.global.view.show +import timber.log.Timber + +class HomeBackgroundLogo(private var ddgLogoView: View) { + + private var readyToShowLogo = false + + fun showLogo() { + this.readyToShowLogo = true + update() + } + + fun hideLogo() { + readyToShowLogo = false + update() + } + + private fun update() { + if (readyToShowLogo) { + fadeLogoIn() + } else { + fadeLogoOut() + } + } + + private fun fadeLogoIn() { + Timber.v("showLogo") + // To avoid glitches when calling show/hide logo within a small amount of time we keep this 50ms animation + ddgLogoView.animate().apply { + duration = FADE_IN_DURATION + interpolator = AccelerateInterpolator() + alpha(1f) + ddgLogoView.show() + } + } + + private fun fadeLogoOut() { + Timber.v("hideLogo") + ddgLogoView.hide() + } + + companion object { + private const val FADE_IN_DURATION = 50L + } +} diff --git a/app/src/main/java/com/duckduckgo/app/browser/LogoHidingLayoutChangeLifecycleListener.kt b/app/src/main/java/com/duckduckgo/app/browser/LogoHidingLayoutChangeLifecycleListener.kt deleted file mode 100644 index d890203d7740..000000000000 --- a/app/src/main/java/com/duckduckgo/app/browser/LogoHidingLayoutChangeLifecycleListener.kt +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2018 DuckDuckGo - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.duckduckgo.app.browser - -import android.graphics.Rect -import android.view.View -import android.view.animation.AccelerateInterpolator -import androidx.core.view.isGone -import androidx.core.view.isVisible -import com.duckduckgo.app.global.view.toDp -import timber.log.Timber - -class LogoHidingLayoutChangeLifecycleListener(private var ddgLogoView: View) : View.OnLayoutChangeListener { - - var callToActionView: View? = null - - private var readyToShowLogo = false - - fun onReadyToShowLogo() { - readyToShowLogo = true - update() - } - - override fun onLayoutChange(view: View, left: Int, top: Int, right: Int, bottom: Int, oldLeft: Int, oldTop: Int, oldRight: Int, oldBottom: Int) { - update() - } - - fun onResume() { - update() - } - - fun onPause() { - hideLogo() - } - - private fun update() { - val heightDp = getHeightDp() - Timber.v("App height now: $heightDp dp, call to action button showing: ${callToActionView?.isVisible}") - if (readyToShowLogo && enoughRoomForLogo(heightDp)) { - fadeLogoIn() - } else { - fadeLogoOut() - } - } - - private fun fadeLogoIn() { - ddgLogoView.animate().apply { - duration = FADE_IN_DURATION - interpolator = AccelerateInterpolator() - alpha(1f) - } - } - - private fun fadeLogoOut() { - ddgLogoView.animate().apply { - duration = FADE_OUT_DURATION - interpolator = AccelerateInterpolator() - alpha(0f) - } - } - - private fun hideLogo() { - ddgLogoView.alpha = 0f - } - - private fun getHeightDp(): Int { - val r = Rect() - ddgLogoView.getWindowVisibleDisplayFrame(r) - return r.height().toDp() - } - - private fun enoughRoomForLogo(heightDp: Int): Boolean { - - val isCallToActionHidden = callToActionView?.isGone ?: true - if (isCallToActionHidden) { - return true - } - val callToActionButtonHeightDp = callToActionView?.measuredHeight?.toDp() ?: 0 - val heightMinusCallToAction = heightDp - callToActionButtonHeightDp - if (heightMinusCallToAction >= MINIMUM_AVAILABLE_HEIGHT_REQUIRED_TO_SHOW_LOGO) { - return true - } - - return false - } - - companion object { - private const val MINIMUM_AVAILABLE_HEIGHT_REQUIRED_TO_SHOW_LOGO = 220 - private const val FADE_IN_DURATION = 300L - private const val FADE_OUT_DURATION = 300L - } - -} diff --git a/app/src/main/java/com/duckduckgo/app/browser/TabSwitcherButton.kt b/app/src/main/java/com/duckduckgo/app/browser/TabSwitcherButton.kt index 990ccf7ecc46..f99fd43aed05 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/TabSwitcherButton.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/TabSwitcherButton.kt @@ -45,14 +45,6 @@ class TabSwitcherButton @JvmOverloads constructor( override fun onFinishInflate() { super.onFinishInflate() View.inflate(context, R.layout.view_tab_switcher_button, this) - - setOnClickListener { - super.callOnClick() - } - - setOnLongClickListener { - super.performLongClick() - } } fun increment(callback: () -> Unit) { diff --git a/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt b/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt index ce98c72b4346..677b66cb14ff 100644 --- a/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt +++ b/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt @@ -37,8 +37,6 @@ import com.duckduckgo.app.trackerdetection.model.Entity import kotlinx.android.synthetic.main.include_cta_buttons.view.* import kotlinx.android.synthetic.main.include_cta_content.view.* import kotlinx.android.synthetic.main.include_dax_dialog_cta.view.* -import kotlinx.android.synthetic.main.include_top_cta.view.* -import java.util.* interface DialogCta { fun createCta(activity: FragmentActivity): DaxDialog @@ -410,26 +408,6 @@ sealed class HomePanelCta( ) } -sealed class HomeTopPanelCta( - override val ctaId: CtaId, - override val shownPixel: Pixel.PixelName?, - override val okPixel: Pixel.PixelName?, - override val cancelPixel: Pixel.PixelName?, - @StringRes open val description: Int -) : Cta, ViewCta { - - override fun pixelCancelParameters(): Map = emptyMap() - - override fun pixelOkParameters(): Map = emptyMap() - - override fun pixelShownParameters(): Map = emptyMap() - - override fun showCta(view: View) { - view.upperCtaTitle.text = view.context.getString(description) - view.show() - } -} - fun DaxCta.addCtaToHistory(newCta: String): String { val param = onboardingStore.onboardingDialogJourney?.split("-").orEmpty().toMutableList() val daysInstalled = minOf(appInstallStore.daysInstalled().toInt(), MAX_DAYS_ALLOWED) diff --git a/app/src/main/java/com/duckduckgo/app/fire/AutomaticDataClearer.kt b/app/src/main/java/com/duckduckgo/app/fire/AutomaticDataClearer.kt index 1c8cc6596603..078ceb3dbb8b 100644 --- a/app/src/main/java/com/duckduckgo/app/fire/AutomaticDataClearer.kt +++ b/app/src/main/java/com/duckduckgo/app/fire/AutomaticDataClearer.kt @@ -164,7 +164,7 @@ class AutomaticDataClearer( // need a moment to draw background color (reduces flickering UX) Handler().postDelayed(100) { Timber.i("Will now restart process") - clearDataAction.killAndRestartProcess() + clearDataAction.killAndRestartProcess(notifyDataCleared = true) } } else { Timber.i("Will not restart process") diff --git a/app/src/main/java/com/duckduckgo/app/fire/FireActivity.kt b/app/src/main/java/com/duckduckgo/app/fire/FireActivity.kt index 1864f00df958..f390cdfd655c 100644 --- a/app/src/main/java/com/duckduckgo/app/fire/FireActivity.kt +++ b/app/src/main/java/com/duckduckgo/app/fire/FireActivity.kt @@ -22,9 +22,9 @@ import android.content.Context import android.content.Intent import android.os.Bundle import android.os.Process +import androidx.appcompat.app.AppCompatActivity import com.duckduckgo.app.browser.BrowserActivity import com.duckduckgo.app.browser.R -import com.duckduckgo.app.global.DuckDuckGoActivity import com.duckduckgo.app.global.view.fadeTransitionConfig /** @@ -36,7 +36,7 @@ import com.duckduckgo.app.global.view.fadeTransitionConfig * * This Activity was largely inspired by https://github.com/JakeWharton/ProcessPhoenix */ -class FireActivity : DuckDuckGoActivity() { +class FireActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -53,8 +53,8 @@ class FireActivity : DuckDuckGoActivity() { companion object { private const val KEY_RESTART_INTENTS = "KEY_RESTART_INTENTS" - fun triggerRestart(context: Context) { - triggerRestart(context, getRestartIntent(context)) + fun triggerRestart(context: Context, notifyDataCleared: Boolean) { + triggerRestart(context, getRestartIntent(context, notifyDataCleared)) } private fun triggerRestart(context: Context, nextIntent: Intent) { @@ -69,8 +69,8 @@ class FireActivity : DuckDuckGoActivity() { killProcess() } - private fun getRestartIntent(context: Context): Intent { - val intent = BrowserActivity.intent(context, launchedFromFireAction = true) + private fun getRestartIntent(context: Context, notifyDataCleared: Boolean = false): Intent { + val intent = BrowserActivity.intent(context, notifyDataCleared = notifyDataCleared) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) return intent } diff --git a/app/src/main/java/com/duckduckgo/app/global/DuckDuckGoApplication.kt b/app/src/main/java/com/duckduckgo/app/global/DuckDuckGoApplication.kt index 11dc9bd99e64..36c27cb63cc3 100644 --- a/app/src/main/java/com/duckduckgo/app/global/DuckDuckGoApplication.kt +++ b/app/src/main/java/com/duckduckgo/app/global/DuckDuckGoApplication.kt @@ -159,12 +159,12 @@ open class DuckDuckGoApplication : HasAndroidInjector, Application(), LifecycleO super.onCreate() configureLogging() - configureDependencyInjection() - configureUncaughtExceptionHandler() + Timber.i("Application Started") + if (appIsRestarting()) return Timber.i("Creating DuckDuckGoApplication") - - if (appIsRestarting()) return + configureDependencyInjection() + configureUncaughtExceptionHandler() ProcessLifecycleOwner.get().lifecycle.also { it.addObserver(this) diff --git a/app/src/main/java/com/duckduckgo/app/global/view/ClearPersonalDataAction.kt b/app/src/main/java/com/duckduckgo/app/global/view/ClearPersonalDataAction.kt index 5d926907d9ce..af780317a6c4 100644 --- a/app/src/main/java/com/duckduckgo/app/global/view/ClearPersonalDataAction.kt +++ b/app/src/main/java/com/duckduckgo/app/global/view/ClearPersonalDataAction.kt @@ -42,7 +42,7 @@ interface ClearDataAction { suspend fun clearTabsAndAllDataAsync(appInForeground: Boolean, shouldFireDataClearPixel: Boolean): Unit? fun setAppUsedSinceLastClearFlag(appUsedSinceLastClear: Boolean) fun killProcess() - fun killAndRestartProcess() + fun killAndRestartProcess(notifyDataCleared: Boolean) } class ClearPersonalDataAction @Inject constructor( @@ -56,9 +56,9 @@ class ClearPersonalDataAction @Inject constructor( private val geoLocationPermissions: GeoLocationPermissions ) : ClearDataAction { - override fun killAndRestartProcess() { + override fun killAndRestartProcess(notifyDataCleared: Boolean) { Timber.i("Restarting process") - FireActivity.triggerRestart(context) + FireActivity.triggerRestart(context, notifyDataCleared) } override fun killProcess() { diff --git a/app/src/main/java/com/duckduckgo/app/global/view/FireDialog.kt b/app/src/main/java/com/duckduckgo/app/global/view/FireDialog.kt index 0ccbd9b10531..f1f609173886 100644 --- a/app/src/main/java/com/duckduckgo/app/global/view/FireDialog.kt +++ b/app/src/main/java/com/duckduckgo/app/global/view/FireDialog.kt @@ -176,7 +176,7 @@ class FireDialog( fireAnimationView.addAnimatorUpdateListener(accelerateAnimatorUpdateListener) } } else { - clearPersonalDataAction.killAndRestartProcess() + clearPersonalDataAction.killAndRestartProcess(notifyDataCleared = false) } } diff --git a/app/src/main/java/com/duckduckgo/app/launch/LaunchBridgeActivity.kt b/app/src/main/java/com/duckduckgo/app/launch/LaunchBridgeActivity.kt index a98cfd19a0c3..b8990d756479 100644 --- a/app/src/main/java/com/duckduckgo/app/launch/LaunchBridgeActivity.kt +++ b/app/src/main/java/com/duckduckgo/app/launch/LaunchBridgeActivity.kt @@ -70,6 +70,7 @@ class LaunchBridgeActivity : DuckDuckGoActivity() { private fun showHome() { startActivity(BrowserActivity.intent(this)) + overridePendingTransition(0, 0) finish() } } diff --git a/app/src/main/res/layout/activity_browser.xml b/app/src/main/res/layout/activity_browser.xml index fb9271a2f609..7e30ddc6ebae 100644 --- a/app/src/main/res/layout/activity_browser.xml +++ b/app/src/main/res/layout/activity_browser.xml @@ -16,13 +16,15 @@ ~ limitations under the License. --> - - + + @@ -34,4 +36,4 @@ android:background="?attr/colorPrimaryDark" android:visibility="gone" /> - + diff --git a/app/src/main/res/layout/activity_launch.xml b/app/src/main/res/layout/activity_launch.xml index 3329cbe44848..40ad31eed98e 100644 --- a/app/src/main/res/layout/activity_launch.xml +++ b/app/src/main/res/layout/activity_launch.xml @@ -14,12 +14,12 @@ ~ limitations under the License. --> - - + diff --git a/app/src/main/res/layout/fragment_browser_tab.xml b/app/src/main/res/layout/fragment_browser_tab.xml index 7efa36945dcb..2ab4b117b23e 100644 --- a/app/src/main/res/layout/fragment_browser_tab.xml +++ b/app/src/main/res/layout/fragment_browser_tab.xml @@ -23,16 +23,6 @@ - - - + - - + @@ -95,6 +79,5 @@ android:layout_height="match_parent" android:focusableInTouchMode="true" /> - - + \ No newline at end of file diff --git a/app/src/main/res/layout/include_find_in_page.xml b/app/src/main/res/layout/include_find_in_page.xml index 0477d991d45a..f01c2d3d7b01 100644 --- a/app/src/main/res/layout/include_find_in_page.xml +++ b/app/src/main/res/layout/include_find_in_page.xml @@ -14,7 +14,7 @@ ~ limitations under the License. --> - @@ -29,6 +30,7 @@ android:id="@+id/findInPageInput" android:layout_width="0dp" android:layout_height="match_parent" + android:layout_weight="1" android:layout_marginStart="12dp" android:layout_marginEnd="12dp" android:background="?attr/colorPrimary" @@ -53,64 +55,30 @@ android:layout_height="wrap_content" android:layout_marginEnd="10dp" android:textColor="?attr/omnibarTextColor" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@id/findInPageControlButtons" - app:layout_constraintStart_toEndOf="@id/findInPageInput" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.5" tools:text="1/10" /> - - - - - - + android:layout_marginStart="6dp" + android:contentDescription="@string/previousSearchTermDescription" + android:src="@drawable/ic_keyboard_arrow_up_24dp"/> - - - + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/include_new_browser_tab.xml b/app/src/main/res/layout/include_new_browser_tab.xml index f6c9bfe78b18..6d0a9c9595b4 100644 --- a/app/src/main/res/layout/include_new_browser_tab.xml +++ b/app/src/main/res/layout/include_new_browser_tab.xml @@ -21,22 +21,10 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="?attr/actionBarSize" - android:animateLayoutChanges="true" android:foreground="@android:color/transparent" tools:context="com.duckduckgo.app.browser.BrowserActivity" tools:showIn="@layout/fragment_browser_tab"> - - + android:layout_marginTop="@dimen/homeTabDdgLogoTopMargin" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintWidth_max="180dp" + android:visibility="gone"/> + app:layout_constraintWidth_max="600dp" + android:visibility="gone"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/include_top_cta.xml b/app/src/main/res/layout/include_top_cta.xml deleted file mode 100644 index 5c02d59a464b..000000000000 --- a/app/src/main/res/layout/include_top_cta.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/popup_window_browser_menu.xml b/app/src/main/res/layout/popup_window_browser_menu.xml index 13e294a039bd..b7e0959d5027 100644 --- a/app/src/main/res/layout/popup_window_browser_menu.xml +++ b/app/src/main/res/layout/popup_window_browser_menu.xml @@ -14,21 +14,18 @@ ~ limitations under the License. --> - + android:orientation="horizontal"> - - + android:layout_height="wrap_content"> - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml index b1b71df71b2a..5a797f91f0d0 100644 --- a/app/src/main/res/values-land/dimens.xml +++ b/app/src/main/res/values-land/dimens.xml @@ -17,4 +17,5 @@ 20dp + 80dp \ No newline at end of file diff --git a/app/src/main/res/values-sw600dp-land/dimens.xml b/app/src/main/res/values-sw600dp-land/dimens.xml index 50890f940306..cfcc3d71f905 100644 --- a/app/src/main/res/values-sw600dp-land/dimens.xml +++ b/app/src/main/res/values-sw600dp-land/dimens.xml @@ -19,5 +19,5 @@ 96dp - + 100dp \ No newline at end of file diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml index 8e6bd188290b..f60bc09b2fa8 100644 --- a/app/src/main/res/values-sw600dp/dimens.xml +++ b/app/src/main/res/values-sw600dp/dimens.xml @@ -25,4 +25,5 @@ 32dp 32dp 48dp + 200dp \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index a96851ddc505..79f18f6b0334 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -65,8 +65,6 @@ - - diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index a17b74e8c2ac..aa0b6c783f4b 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -35,5 +35,6 @@ 16dp 4dp 75dp + 100dp \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 831cec4502cc..5294b42db226 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -85,8 +85,6 @@ @color/greyishBrownTwo @color/warGreyTwo @color/white - @color/grayish - @color/greyishBrownTwo @color/grayish @color/almostBlack @@ -164,8 +162,6 @@ @color/subtleGrayTwo @color/white @color/subtleGrayTwo - @color/almostBlackDark - @color/white @color/warmerGray @color/whiteFive