From b3650cacffec30c8b9be47bfc5eec6e53a989221 Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Mon, 20 May 2019 16:17:14 -0700 Subject: [PATCH] For #2399 - Wires up tracking protection onboarding card --- .../OnboardingPrivacyNoticeViewHolder.kt | 2 +- .../OnboardingTrackingProtectionViewHolder.kt | 38 ++++++++++++++++++- .../settings/TrackingProtectionFragment.kt | 2 + .../ic_onboarding_tracking_protection.xml | 19 ++++++++++ .../layout/onboarding_tracking_protection.xml | 28 ++++++++++---- app/src/main/res/values/dimens.xml | 2 +- 6 files changed, 81 insertions(+), 10 deletions(-) create mode 100644 app/src/main/res/drawable/ic_onboarding_tracking_protection.xml diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingPrivacyNoticeViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingPrivacyNoticeViewHolder.kt index b5c4b8c75..3fbd5f44a 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingPrivacyNoticeViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingPrivacyNoticeViewHolder.kt @@ -17,7 +17,7 @@ class OnboardingPrivacyNoticeViewHolder(view: View) : RecyclerView.ViewHolder(vi init { val icon = view.context.getDrawable(R.drawable.ic_onboarding_privacy_notice) - val size = view.context.dimen(R.dimen.onboarding_privacy_notice_icon_height_width) + val size = view.context.dimen(R.dimen.onboarding_header_icon_height_width) icon?.setBounds(0, 0, size, size) view.header_text.setCompoundDrawables(icon, null, null, null) diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt index 197e3a642..559119b70 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt @@ -7,17 +7,53 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding import android.view.View import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.onboarding_tracking_protection.view.* +import org.jetbrains.anko.dimen import org.mozilla.fenix.R +import org.mozilla.fenix.ext.components +import org.mozilla.fenix.utils.Settings -class OnboardingTrackingProtectionViewHolder(view: View) : RecyclerView.ViewHolder(view) { +class OnboardingTrackingProtectionViewHolder(val view: View) : RecyclerView.ViewHolder(view) { init { + val icon = view.context.getDrawable(R.drawable.ic_onboarding_tracking_protection) + val size = view.context.dimen(R.dimen.onboarding_header_icon_height_width) + icon?.setBounds(0, 0, size, size) + + view.header_text.setCompoundDrawables(icon, null, null, null) + val appName = view.context.getString(R.string.app_name) view.description_text.text = view.context.getString( R.string.onboarding_tracking_protection_description, appName ) + + val switch = view.tracking_protection_toggle + + switch.isChecked = Settings.getInstance(view.context).shouldUseTrackingProtection + + switch.setOnCheckedChangeListener { _, isChecked -> + updateTrackingProtectionSetting(isChecked) + } + } + + private fun updateTrackingProtectionSetting(enabled: Boolean) { + Settings.getInstance(view.context).setTrackingProtection(enabled) + with(view.context.components.core) { + val policy = createTrackingProtectionPolicy(enabled) + engine.settings.trackingProtectionPolicy = policy + with(sessionManager) { + sessions.forEach { + if (enabled) + getEngineSession(it)?.enableTrackingProtection(policy) else + getEngineSession(it)?.disableTrackingProtection() + } + } + } + + view.context.components.useCases.sessionUseCases.reload.invoke() + } + companion object { const val LAYOUT_ID = R.layout.onboarding_tracking_protection } diff --git a/app/src/main/java/org/mozilla/fenix/settings/TrackingProtectionFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/TrackingProtectionFragment.kt index d4fe3f4bd..bc38fb7bb 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/TrackingProtectionFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/TrackingProtectionFragment.kt @@ -30,6 +30,8 @@ class TrackingProtectionFragment : PreferenceFragmentCompat() { val trackingProtectionKey = context!!.getPreferenceKey(R.string.pref_key_tracking_protection) val preferenceTP = findPreference(trackingProtectionKey) + + preferenceTP?.isChecked = Settings.getInstance(context!!).shouldUseTrackingProtection preferenceTP?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue -> Settings.getInstance(requireContext()).setTrackingProtection(newValue = newValue as Boolean) diff --git a/app/src/main/res/drawable/ic_onboarding_tracking_protection.xml b/app/src/main/res/drawable/ic_onboarding_tracking_protection.xml new file mode 100644 index 000000000..0b4841cc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_onboarding_tracking_protection.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/layout/onboarding_tracking_protection.xml b/app/src/main/res/layout/onboarding_tracking_protection.xml index f3b90e8b5..e0ab8ba94 100644 --- a/app/src/main/res/layout/onboarding_tracking_protection.xml +++ b/app/src/main/res/layout/onboarding_tracking_protection.xml @@ -2,8 +2,8 @@ - + android:textAppearance="@style/HeaderTextStyle" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@id/tracking_protection_toggle"/> + - \ No newline at end of file + android:textAppearance="@style/Body14TextStyle" + android:layout_marginTop="12dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/header_text" + app:layout_constraintBottom_toBottomOf="parent"/> + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index ace7e1e69..526072860 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -33,6 +33,6 @@ 46dp - 32dp + 32dp \ No newline at end of file