Show new onboarding by default (#36349)
Shows the new onboarding flow by default and removes old unused code in Java, XML layouts and strings.
@@ -109,9 +109,6 @@ android_resources("java_resources") {
|
||||
"java/brave-res/drawable-hdpi/check.png",
|
||||
"java/brave-res/drawable-hdpi/copy_paste.png",
|
||||
"java/brave-res/drawable-hdpi/ic_ad_free_videos.png",
|
||||
"java/brave-res/drawable-hdpi/ic_brave_onboarding.png",
|
||||
"java/brave-res/drawable-hdpi/ic_onboarding_bottom_leaf.png",
|
||||
"java/brave-res/drawable-hdpi/ic_onboarding_top_leaf.png",
|
||||
"java/brave-res/drawable-hdpi/share_activity_background.png",
|
||||
"java/brave-res/drawable-mdpi/brave_ads_launch_graphic.png",
|
||||
"java/brave-res/drawable-mdpi/brave_sync_btn_laptop.png",
|
||||
@@ -125,9 +122,6 @@ android_resources("java_resources") {
|
||||
"java/brave-res/drawable-mdpi/check.png",
|
||||
"java/brave-res/drawable-mdpi/copy_paste.png",
|
||||
"java/brave-res/drawable-mdpi/ic_ad_free_videos.png",
|
||||
"java/brave-res/drawable-mdpi/ic_brave_onboarding.png",
|
||||
"java/brave-res/drawable-mdpi/ic_onboarding_bottom_leaf.png",
|
||||
"java/brave-res/drawable-mdpi/ic_onboarding_top_leaf.png",
|
||||
"java/brave-res/drawable-mdpi/share_activity_background.png",
|
||||
"java/brave-res/drawable-night-nodpi/ic_quick_action_search_and_bookmark_widget_preview.png",
|
||||
"java/brave-res/drawable-night-nodpi/widget_preview.png",
|
||||
@@ -160,9 +154,6 @@ android_resources("java_resources") {
|
||||
"java/brave-res/drawable-xhdpi/check.png",
|
||||
"java/brave-res/drawable-xhdpi/copy_paste.png",
|
||||
"java/brave-res/drawable-xhdpi/ic_ad_free_videos.png",
|
||||
"java/brave-res/drawable-xhdpi/ic_brave_onboarding.png",
|
||||
"java/brave-res/drawable-xhdpi/ic_onboarding_bottom_leaf.png",
|
||||
"java/brave-res/drawable-xhdpi/ic_onboarding_top_leaf.png",
|
||||
"java/brave-res/drawable-xhdpi/share_activity_background.png",
|
||||
"java/brave-res/drawable-xxhdpi/brave_ads_launch_graphic.png",
|
||||
"java/brave-res/drawable-xxhdpi/brave_sync_btn_laptop.png",
|
||||
@@ -176,9 +167,6 @@ android_resources("java_resources") {
|
||||
"java/brave-res/drawable-xxhdpi/check.png",
|
||||
"java/brave-res/drawable-xxhdpi/copy_paste.png",
|
||||
"java/brave-res/drawable-xxhdpi/ic_ad_free_videos.png",
|
||||
"java/brave-res/drawable-xxhdpi/ic_brave_onboarding.png",
|
||||
"java/brave-res/drawable-xxhdpi/ic_onboarding_bottom_leaf.png",
|
||||
"java/brave-res/drawable-xxhdpi/ic_onboarding_top_leaf.png",
|
||||
"java/brave-res/drawable-xxhdpi/share_activity_background.png",
|
||||
"java/brave-res/drawable-xxxhdpi/brave_ads_launch_graphic.png",
|
||||
"java/brave-res/drawable-xxxhdpi/brave_sync_btn_laptop.png",
|
||||
@@ -192,9 +180,6 @@ android_resources("java_resources") {
|
||||
"java/brave-res/drawable-xxxhdpi/check.png",
|
||||
"java/brave-res/drawable-xxxhdpi/copy_paste.png",
|
||||
"java/brave-res/drawable-xxxhdpi/ic_ad_free_videos.png",
|
||||
"java/brave-res/drawable-xxxhdpi/ic_brave_onboarding.png",
|
||||
"java/brave-res/drawable-xxxhdpi/ic_onboarding_bottom_leaf.png",
|
||||
"java/brave-res/drawable-xxxhdpi/ic_onboarding_top_leaf.png",
|
||||
"java/brave-res/drawable-xxxhdpi/share_activity_background.png",
|
||||
"java/brave-res/drawable/ad_free_card_bg.xml",
|
||||
"java/brave-res/drawable/add_custom_filter_button_background_disabled.xml",
|
||||
@@ -376,12 +361,7 @@ android_resources("java_resources") {
|
||||
"java/brave-res/drawable/ic_neon_color.xml",
|
||||
"java/brave-res/drawable/ic_news_settings.xml",
|
||||
"java/brave-res/drawable/ic_notification_icon.xml",
|
||||
"java/brave-res/drawable/ic_onboarding_arrow_down.xml",
|
||||
"java/brave-res/drawable/ic_onboarding_bg.xml",
|
||||
"java/brave-res/drawable/ic_op_color.xml",
|
||||
"java/brave-res/drawable/ic_p3a_checkbox.xml",
|
||||
"java/brave-res/drawable/ic_p3a_checkbox_filled.xml",
|
||||
"java/brave-res/drawable/ic_p3a_checkbox_outline.xml",
|
||||
"java/brave-res/drawable/ic_pause_filled.xml",
|
||||
"java/brave-res/drawable/ic_phantom.xml",
|
||||
"java/brave-res/drawable/ic_phone.xml",
|
||||
@@ -475,7 +455,6 @@ android_resources("java_resources") {
|
||||
"java/brave-res/drawable/rounded_dot_success_status.xml",
|
||||
"java/brave-res/drawable/rounded_filled.xml",
|
||||
"java/brave-res/drawable/rounded_holo_button.xml",
|
||||
"java/brave-res/drawable/rounded_onboarding_welcome_bg.xml",
|
||||
"java/brave-res/drawable/rounded_set_default_top_corners.xml",
|
||||
"java/brave-res/drawable/rounded_shape.xml",
|
||||
"java/brave-res/drawable/rounded_surface_container_background.xml",
|
||||
@@ -528,7 +507,6 @@ android_resources("java_resources") {
|
||||
"java/brave-res/layout/activity_vpn_server.xml",
|
||||
"java/brave-res/layout/activity_vpn_server_selection.xml",
|
||||
"java/brave-res/layout/activity_welcome_onboarding.xml",
|
||||
"java/brave-res/layout/activity_welcome_onboarding_default.xml",
|
||||
"java/brave-res/layout/application_item_layout.xml",
|
||||
"java/brave-res/layout/approve_tx_bottom_sheet.xml",
|
||||
"java/brave-res/layout/auto_reconnect_vpn_tutorial_item_layout.xml",
|
||||
|
||||
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 262 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 564 KiB |
|
Before Width: | Height: | Size: 481 KiB |
|
Before Width: | Height: | Size: 263 KiB |
@@ -1,9 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="28dp"
|
||||
android:height="12dp"
|
||||
android:viewportWidth="8"
|
||||
android:viewportHeight="6">
|
||||
<path
|
||||
android:pathData="M4,6L7.46,0H0.54L4,6Z"
|
||||
android:fillColor="@color/onboarding_card_bg_color"/>
|
||||
</vector>
|
||||
@@ -1,25 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="200"
|
||||
android:viewportHeight="200">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h200v200h-200z"/>
|
||||
<path
|
||||
android:pathData="M200,0H0V200H200V0Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="75.5"
|
||||
android:startY="0"
|
||||
android:endX="105.65"
|
||||
android:endY="196.68"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFA315AE"/>
|
||||
<item android:offset="1" android:color="#FF4C10E3"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
</vector>
|
||||
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2022 The Brave Authors. All rights reserved.
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
You can obtain one at https://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:state_checked="true"
|
||||
android:drawable="@drawable/ic_p3a_checkbox_filled" />
|
||||
<item
|
||||
android:state_checked="false"
|
||||
android:drawable="@drawable/ic_p3a_checkbox_outline" />
|
||||
</selector>
|
||||
@@ -1,5 +0,0 @@
|
||||
<vector android:height="24dp" android:tint="@color/brave_action_color"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2L21,5c0,-1.1 -0.89,-2 -2,-2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
|
||||
</vector>
|
||||
@@ -1,5 +0,0 @@
|
||||
<vector android:height="24dp" android:tint="@color/brave_action_color"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M19,5v14H5V5h14m0,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"/>
|
||||
</vector>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2022 The Brave Authors. All rights reserved.
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@color/onboarding_card_bg_color" />
|
||||
<corners android:radius="8dp" />
|
||||
</shape>
|
||||
@@ -4,54 +4,49 @@
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/onboarding_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/onboarding_background">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/onboarding_variant_y"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/onboarding_background">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/brave_splash_container"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="@color/schemes_surface_container_lowest"
|
||||
tools:ignore="InconsistentLayout"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
<ImageView
|
||||
android:id="@+id/brave_splash"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/ic_brave_splash_animated"
|
||||
android:contentDescription="@string/brave_onboarding_splash_logo_description"
|
||||
android:alpha="0" />
|
||||
</FrameLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/splash_anchor"
|
||||
<FrameLayout
|
||||
android:id="@+id/brave_splash_container"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="@color/schemes_surface_container_lowest"
|
||||
tools:ignore="InconsistentLayout"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
<ImageView
|
||||
android:id="@+id/brave_splash"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_begin="0dp"/>
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/ic_brave_splash_animated"
|
||||
android:contentDescription="@string/brave_onboarding_splash_logo_description"
|
||||
android:alpha="0" />
|
||||
</FrameLayout>
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/onboarding_steps_pager"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/splash_anchor"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_begin="0dp"/>
|
||||
|
||||
<include layout="@layout/activity_welcome_onboarding_default" />
|
||||
</merge>
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/onboarding_steps_pager"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -4,47 +4,42 @@
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/onboarding_container"
|
||||
android:paddingTop="@dimen/onboarding_padding_top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/onboarding_variant_y"
|
||||
android:visibility="gone"
|
||||
android:paddingTop="@dimen/onboarding_padding_top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<ImageView
|
||||
android:id="@+id/brave_splash"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:src="@drawable/ic_brave_splash_animated"
|
||||
android:contentDescription="@string/brave_onboarding_splash_logo_description"
|
||||
android:alpha="0"
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/brave_splash"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:src="@drawable/ic_brave_splash_animated"
|
||||
android:contentDescription="@string/brave_onboarding_splash_logo_description"
|
||||
android:alpha="0"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/splash_anchor"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_begin="0dp"/>
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/splash_anchor"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_begin="0dp"/>
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/onboarding_steps_pager"
|
||||
android:layout_width="0dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/splash_anchor"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<include layout="@layout/activity_welcome_onboarding_default" />
|
||||
</merge>
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/onboarding_steps_pager"
|
||||
android:layout_width="0dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/splash_anchor"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -1,182 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2026 The Brave Authors. All rights reserved.
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:showIn="@layout/activity_welcome_onboarding">
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/onboarding_default_variant"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:contentDescription="@string/brave_onboarding_background_description"
|
||||
android:scaleType="fitXY"
|
||||
app:srcCompat="@drawable/ic_onboarding_bg"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/view_leaf_top_align"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="parent"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_leaf_top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/view_leaf_top_align"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleX="1.3"
|
||||
android:scaleY="1.3"
|
||||
android:src="@drawable/ic_onboarding_top_leaf"
|
||||
android:contentDescription="@string/brave_onboarding_top_leaf_description"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_leaf_bottom"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toTopOf="@id/view_leaf_bottom_align"
|
||||
android:adjustViewBounds="true"
|
||||
android:contentDescription="@string/brave_onboarding_bottom_leaf_description"
|
||||
android:scaleX="1.3"
|
||||
android:scaleY="1.3"
|
||||
android:src="@drawable/ic_onboarding_bottom_leaf"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/view_leaf_bottom_align"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="parent"/>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fillViewport="true">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_data"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_card"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginStart="40dp"
|
||||
android:layout_marginEnd="40dp"
|
||||
android:padding="24dp"
|
||||
android:visibility="gone"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/rounded_onboarding_welcome_bg">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_card"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/privacy_onboarding"
|
||||
android:textSize="22sp"
|
||||
android:textColor="@color/onboarding_card_text_color"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_default"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:lineSpacingMultiplier="1.2"
|
||||
android:text="@string/onboarding_set_default"
|
||||
android:textSize="16sp"
|
||||
android:textColor="@color/onboarding_card_text_color"/>
|
||||
|
||||
<android.widget.CheckBox
|
||||
android:id="@+id/checkbox_crash"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:button="@drawable/ic_p3a_checkbox"
|
||||
android:gravity="top"
|
||||
android:visibility="gone"
|
||||
android:paddingStart="4dp"
|
||||
android:text="@string/p3a_crash"
|
||||
android:textColor="@color/onboarding_card_text_color"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<android.widget.CheckBox
|
||||
android:id="@+id/checkbox_p3a"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:button="@drawable/ic_p3a_checkbox"
|
||||
android:gravity="top"
|
||||
android:visibility="gone"
|
||||
android:paddingStart="4dp"
|
||||
android:text="@string/p3a_insights"
|
||||
android:textColor="@color/onboarding_card_text_color"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_positive"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@drawable/blue_48_rounded_bg"
|
||||
app:backgroundTint="@null"
|
||||
android:text="@string/set_default_browser"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="16sp"
|
||||
android:padding="4dp"
|
||||
android:minHeight="0dp"
|
||||
style="?android:attr/borderlessButtonStyle"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_negative"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="6dp"
|
||||
android:background="@android:color/transparent"
|
||||
android:text="@string/not_now"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="@color/onboarding_negative_button_color"
|
||||
android:textSize="16sp"
|
||||
style="?android:attr/borderlessButtonStyle"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_arrow_down"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:layout_gravity="center_horizontal"
|
||||
app:srcCompat="@drawable/ic_onboarding_arrow_down"
|
||||
android:contentDescription="@string/brave_onboarding_arrow_down_description"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_brave"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:contentDescription="@string/brave_onboarding_logo_description"
|
||||
android:visibility="gone"
|
||||
android:src="@drawable/ic_brave_onboarding"/>
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</merge>
|
||||
@@ -58,19 +58,19 @@
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_margin="16dp"
|
||||
android:gravity="end|center_vertical"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
android:id="@+id/tvNotNow"
|
||||
style="@style/LargeButtonBase"
|
||||
android:background="@drawable/button_transparent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/not_now"
|
||||
android:gravity="end"
|
||||
android:layout_marginEnd="2dp"
|
||||
android:textColor="@color/schemes_on_surface_variant" />
|
||||
|
||||
|
||||
@@ -9,13 +9,10 @@ import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
|
||||
import static org.chromium.build.NullUtil.assumeNonNull;
|
||||
import static org.chromium.chrome.browser.set_default_browser.BraveSetDefaultBrowserUtils.isBraveSetAsDefaultBrowser;
|
||||
import static org.chromium.chrome.browser.set_default_browser.BraveSetDefaultBrowserUtils.setDefaultBrowser;
|
||||
import static org.chromium.ui.base.ViewUtils.dpToPx;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorInflater;
|
||||
import android.animation.LayoutTransition;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Animatable2;
|
||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
@@ -23,19 +20,10 @@ import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.RemoteException;
|
||||
import android.text.SpannableString;
|
||||
import android.text.TextUtils;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.OvershootInterpolator;
|
||||
import android.view.animation.Transformation;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
@@ -59,16 +47,13 @@ import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.BraveConfig;
|
||||
import org.chromium.chrome.browser.BraveLocalState;
|
||||
import org.chromium.chrome.browser.customtabs.CustomTabActivity;
|
||||
import org.chromium.chrome.browser.day_zero.DayZeroHelper;
|
||||
import org.chromium.chrome.browser.metrics.ChangeMetricsReportingStateCalledFrom;
|
||||
import org.chromium.chrome.browser.metrics.UmaSessionStats;
|
||||
import org.chromium.chrome.browser.notifications.BravePermissionUtils;
|
||||
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
|
||||
import org.chromium.chrome.browser.preferences.BravePref;
|
||||
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
|
||||
import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl;
|
||||
import org.chromium.chrome.browser.util.BraveConstants;
|
||||
import org.chromium.chrome.browser.util.BraveTouchUtils;
|
||||
import org.chromium.chrome.browser.util.PackageUtils;
|
||||
import org.chromium.components.user_prefs.UserPrefs;
|
||||
import org.chromium.components.web_discovery.WebDiscoveryPrefs;
|
||||
@@ -96,67 +81,35 @@ import org.chromium.ui.text.SpanApplier.SpanInfo;
|
||||
@NullMarked
|
||||
public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
implements OnboardingStepAdapter.OnboardingNavigationListener {
|
||||
private static final String P3A_URL =
|
||||
"https://support.brave.app/hc/en-us/articles/9140465918093-What-is-P3A-in-Brave";
|
||||
private static final String WDP_LINK =
|
||||
"https://www.brave.com/browser/privacy/#web-discovery-project";
|
||||
|
||||
private static final String TAG = "WelcomeOnboarding";
|
||||
private static final String DAY_ZERO_DEFAULT_VARIANT = "X";
|
||||
private static final String DAY_ZERO_VARIANT_Y = "Y";
|
||||
|
||||
private static final String KEY_SPLASH_ANIMATION_FINISHED =
|
||||
"WelcomeOnboardingActivity.SplashAnimationFinished";
|
||||
private static final String KEY_VARIANT_Y_PAGE_INDEX =
|
||||
"WelcomeOnboardingActivity.VariantYPageIndex";
|
||||
private static final String KEY_PAGE_INDEX = "WelcomeOnboardingActivity.PageIndex";
|
||||
|
||||
private static final float LEAF_SCALE_ANIMATION = 1.5f;
|
||||
private static final float REDUCED_TENSION_OVERSHOOT_INTERPOLATOR = 1f;
|
||||
private static final float BRAVE_SPLASH_SCALE_ANIMATION = 0.4f;
|
||||
private static final int BRAVE_SPLASH_ANIMATION_DURATION_MS = 600;
|
||||
|
||||
private boolean mIsTablet;
|
||||
private int mCurrentStep = -1;
|
||||
private boolean mSplashAnimationFinished;
|
||||
private int mRestoredVariantYPageIndex;
|
||||
private int mRestoredPageIndex;
|
||||
|
||||
private ConstraintLayout mDefaultConstraintLayout;
|
||||
private ConstraintLayout mVariantYConstraintLayout;
|
||||
private View mVLeafAlignTop;
|
||||
private View mVLeafAlignBottom;
|
||||
private ImageView mIvLeafTop;
|
||||
private ImageView mIvLeafBottom;
|
||||
private ImageView mBraveSplash;
|
||||
private ImageView mIvBrave;
|
||||
private ImageView mIvArrowDown;
|
||||
private LinearLayout mLayoutCard;
|
||||
private TextView mTvCard;
|
||||
private TextView mTvDefault;
|
||||
private Button mBtnPositive;
|
||||
private Button mBtnNegative;
|
||||
private CheckBox mCheckboxCrash;
|
||||
private CheckBox mCheckboxP3a;
|
||||
private FrameLayout mBraveSplashContainer;
|
||||
@Nullable private FrameLayout mBraveSplashContainer;
|
||||
|
||||
private Guideline mSplashGuideline;
|
||||
private ViewPager2 mVariantYPager;
|
||||
@Nullable private OnboardingStepAdapter mVariantYAdapter;
|
||||
private ViewPager2 mOnboardingPager;
|
||||
|
||||
private OnboardingStepAdapter mStepAdapter;
|
||||
private PageBounceAnimator mPageBounceAnimator;
|
||||
|
||||
private String mDayZeroVariant = "";
|
||||
private SpannableString mWdpLearnMore;
|
||||
@Nullable private PageBounceAnimator mPageBounceAnimator;
|
||||
private boolean mIsP3aManaged;
|
||||
private boolean mIsCrashReportingManaged;
|
||||
|
||||
private enum CurrentOnboardingPage {
|
||||
SET_AS_DEFAULT,
|
||||
NOTIFICATION_PERMISSION,
|
||||
WDP_PAGE,
|
||||
ANALYTICS_CONSENT_PAGE
|
||||
}
|
||||
|
||||
@Nullable private CurrentOnboardingPage mCurrentOnboardingPage;
|
||||
|
||||
private void checkReferral() {
|
||||
InstallReferrerClient referrerClient = InstallReferrerClient.newBuilder(this).build();
|
||||
referrerClient.startConnection(
|
||||
@@ -207,35 +160,13 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
}
|
||||
|
||||
private void enableWebDiscoverPreference() {
|
||||
if ((isWDPSettingAvailable() && mCurrentOnboardingPage == CurrentOnboardingPage.WDP_PAGE)
|
||||
|| isVariantY()) {
|
||||
UserPrefs.get(assumeNonNull(getProfileProviderSupplier().get()).getOriginalProfile())
|
||||
.setBoolean(BravePref.WEB_DISCOVERY_ENABLED, true);
|
||||
}
|
||||
UserPrefs.get(assumeNonNull(getProfileProviderSupplier().get()).getOriginalProfile())
|
||||
.setBoolean(BravePref.WEB_DISCOVERY_ENABLED, true);
|
||||
}
|
||||
|
||||
private void nextOnboardingStepForDefaultVariant() {
|
||||
if (isActivityFinishingOrDestroyed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
mCurrentStep++;
|
||||
if (mCurrentStep == 0) {
|
||||
handleSetAsDefaultStep();
|
||||
} else if (mCurrentStep == 1) {
|
||||
handleWDPStep();
|
||||
} else if (mCurrentStep == 2) {
|
||||
handleAnalyticsConsentPage();
|
||||
} else {
|
||||
finalStep(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void finalStep(final boolean showSearchWidgetPromoPanel) {
|
||||
if (showSearchWidgetPromoPanel) {
|
||||
ChromeSharedPreferences.getInstance()
|
||||
.writeBoolean(OnboardingPrefManager.SHOULD_SHOW_SEARCH_WIDGET_PROMO, true);
|
||||
}
|
||||
private void finalStep() {
|
||||
ChromeSharedPreferences.getInstance()
|
||||
.writeBoolean(OnboardingPrefManager.SHOULD_SHOW_SEARCH_WIDGET_PROMO, true);
|
||||
CustomizeBraveMenu.initDefaultInvisibleItems(getResources());
|
||||
OnboardingPrefManager.getInstance().setP3aOnboardingShown(true);
|
||||
|
||||
@@ -282,26 +213,6 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
}
|
||||
}
|
||||
|
||||
private void handleSetAsDefaultStep() {
|
||||
mCurrentOnboardingPage = CurrentOnboardingPage.SET_AS_DEFAULT;
|
||||
if (!maybeRequestDefaultBrowser()) {
|
||||
nextOnboardingStepForDefaultVariant();
|
||||
}
|
||||
}
|
||||
|
||||
private void handleWDPStep() {
|
||||
if (!isWDPSettingAvailable()) {
|
||||
nextOnboardingStepForDefaultVariant();
|
||||
return;
|
||||
}
|
||||
|
||||
mCurrentOnboardingPage = CurrentOnboardingPage.WDP_PAGE;
|
||||
if (isDefaultVariant() && mIvBrave != null) {
|
||||
mIvBrave.setVisibility(View.VISIBLE);
|
||||
}
|
||||
showWDPPage();
|
||||
}
|
||||
|
||||
private boolean isWDPSettingAvailable() {
|
||||
if (!BraveConfig.WEB_DISCOVERY_ENABLED) {
|
||||
return false;
|
||||
@@ -311,74 +222,6 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
.isManagedPreference(WebDiscoveryPrefs.WEB_DISCOVERY_ENABLED);
|
||||
}
|
||||
|
||||
private void handleAnalyticsConsentPage() {
|
||||
// If both settings are managed by policy, skip this page entirely
|
||||
if (mIsP3aManaged && mIsCrashReportingManaged) {
|
||||
nextOnboardingStepForDefaultVariant();
|
||||
return;
|
||||
}
|
||||
|
||||
mCurrentOnboardingPage = CurrentOnboardingPage.ANALYTICS_CONSENT_PAGE;
|
||||
int margin = mIsTablet ? 250 : 60;
|
||||
setLeafAnimation(mVLeafAlignTop, mIvLeafTop, margin, true);
|
||||
setLeafAnimation(mVLeafAlignBottom, mIvLeafBottom, margin, false);
|
||||
|
||||
if (mLayoutCard != null) {
|
||||
mLayoutCard.setVisibility(View.GONE);
|
||||
}
|
||||
if (mTvDefault != null) {
|
||||
mTvDefault.setVisibility(View.GONE);
|
||||
}
|
||||
if (mIvArrowDown != null) {
|
||||
mIvArrowDown.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (mTvCard != null) {
|
||||
mTvCard.setText(getResources().getString(R.string.p3a_title));
|
||||
}
|
||||
if (mBtnPositive != null) {
|
||||
mBtnPositive.setText(getResources().getString(R.string.continue_text));
|
||||
}
|
||||
if (mBtnNegative != null) {
|
||||
mBtnNegative.setText(getResources().getString(R.string.learn_more_onboarding));
|
||||
mBtnNegative.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if (!mIsCrashReportingManaged) {
|
||||
final boolean isCrashReporting = getCrashReportingPreference();
|
||||
if (mCheckboxCrash != null) {
|
||||
mCheckboxCrash.setChecked(isCrashReporting);
|
||||
mCheckboxCrash.setOnCheckedChangeListener(
|
||||
(buttonView, isChecked) -> setMetricsReportingConsent(isChecked, false));
|
||||
}
|
||||
}
|
||||
|
||||
if (!mIsP3aManaged) {
|
||||
final boolean isP3aEnabled = getP3aPreference();
|
||||
if (mCheckboxP3a != null) {
|
||||
mCheckboxP3a.setChecked(isP3aEnabled);
|
||||
mCheckboxP3a.setOnCheckedChangeListener(
|
||||
(buttonView, isChecked) -> setP3aConsent(isChecked));
|
||||
}
|
||||
}
|
||||
|
||||
if (mTvCard != null) {
|
||||
mTvCard.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (mCheckboxCrash != null) {
|
||||
mCheckboxCrash.setVisibility(mIsCrashReportingManaged ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
if (mCheckboxP3a != null) {
|
||||
mCheckboxP3a.setVisibility(mIsP3aManaged ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
if (mLayoutCard != null) {
|
||||
mLayoutCard.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (mIvArrowDown != null) {
|
||||
mIvArrowDown.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
private void setMetricsReportingConsent(final boolean consent, final boolean markAsShown) {
|
||||
try {
|
||||
// Updates reporting consent for first run.
|
||||
@@ -403,113 +246,6 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
}
|
||||
}
|
||||
|
||||
private void showWDPPage() {
|
||||
if (isDefaultVariant()) {
|
||||
int margin = mIsTablet ? 250 : 60;
|
||||
setLeafAnimation(mVLeafAlignTop, mIvLeafTop, margin, true);
|
||||
setLeafAnimation(mVLeafAlignBottom, mIvLeafBottom, margin, false);
|
||||
|
||||
if (mLayoutCard != null) {
|
||||
mLayoutCard.setVisibility(View.GONE);
|
||||
}
|
||||
if (mIvArrowDown != null) {
|
||||
mIvArrowDown.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (mTvCard != null) {
|
||||
mTvCard.setText(getResources().getString(R.string.wdp_title));
|
||||
}
|
||||
|
||||
if (mTvDefault != null) {
|
||||
mTvDefault.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
mTvDefault.setText(mWdpLearnMore);
|
||||
}
|
||||
|
||||
if (mBtnPositive != null) {
|
||||
mBtnPositive.setText(getResources().getString(R.string.sure_ill_help_onboarding));
|
||||
}
|
||||
if (mBtnNegative != null) {
|
||||
mBtnNegative.setText(getResources().getString(R.string.maybe_later));
|
||||
mBtnNegative.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if (mTvCard != null) {
|
||||
mTvCard.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if (mTvDefault != null) {
|
||||
mTvDefault.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (mLayoutCard != null) {
|
||||
mLayoutCard.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (mIvArrowDown != null) {
|
||||
mIvArrowDown.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (mCheckboxCrash != null) {
|
||||
mCheckboxCrash.setVisibility(View.GONE);
|
||||
}
|
||||
if (mCheckboxP3a != null) {
|
||||
mCheckboxP3a.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setLeafAnimation(
|
||||
View leafAlignView, ImageView leafView, float leafMargin, boolean isTopLeaf) {
|
||||
if (leafMargin > 0 && leafAlignView != null) {
|
||||
int margin = dpToPx(this, leafMargin);
|
||||
Animation animation =
|
||||
new Animation() {
|
||||
@Override
|
||||
protected void applyTransformation(float time, Transformation t) {
|
||||
transformLeaf(time, margin, leafAlignView, isTopLeaf);
|
||||
}
|
||||
};
|
||||
animation.setDuration(800);
|
||||
leafAlignView.startAnimation(animation);
|
||||
}
|
||||
if (leafView != null) {
|
||||
leafView.animate()
|
||||
.scaleX(LEAF_SCALE_ANIMATION)
|
||||
.scaleY(LEAF_SCALE_ANIMATION)
|
||||
.setDuration(800);
|
||||
}
|
||||
}
|
||||
|
||||
private void transformLeaf(
|
||||
final float time, final int margin, final View leafAlignView, final boolean isTopLeaf) {
|
||||
ViewGroup.MarginLayoutParams layoutParams =
|
||||
(ViewGroup.MarginLayoutParams) leafAlignView.getLayoutParams();
|
||||
if (isTopLeaf) {
|
||||
layoutParams.bottomMargin =
|
||||
margin - (int) ((margin - layoutParams.bottomMargin) * time);
|
||||
} else {
|
||||
layoutParams.topMargin = margin - (int) ((margin - layoutParams.topMargin) * time);
|
||||
}
|
||||
leafAlignView.setLayoutParams(layoutParams);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(
|
||||
int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
if (requestCode == BravePermissionUtils.NOTIFICATION_PERMISSION_CODE) {
|
||||
if (isDefaultVariant()) {
|
||||
nextOnboardingStepForDefaultVariant();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
assert requestCode == BraveConstants.DEFAULT_BROWSER_ROLE_REQUEST_CODE;
|
||||
if (isDefaultVariant()) {
|
||||
nextOnboardingStepForDefaultVariant();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void performPreInflationStartup() {
|
||||
super.performPreInflationStartup();
|
||||
@@ -525,7 +261,7 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
setContentView(R.layout.activity_welcome_onboarding);
|
||||
|
||||
mSplashGuideline = findViewById(R.id.splash_anchor);
|
||||
mVariantYPager = findViewById(R.id.onboarding_steps_pager);
|
||||
mOnboardingPager = findViewById(R.id.onboarding_steps_pager);
|
||||
|
||||
final ChromeClickableSpan wdpLearnMoreClickableSpan =
|
||||
new ChromeClickableSpan(
|
||||
@@ -533,91 +269,21 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
(textView) -> CustomTabActivity.showInfoPage(this, WDP_LINK));
|
||||
final String wdpText = getResources().getString(R.string.wdp_text);
|
||||
|
||||
mWdpLearnMore =
|
||||
final SpannableString wdpLearnMore =
|
||||
SpanApplier.applySpans(
|
||||
wdpText,
|
||||
new SpanInfo("<learn_more>", "</learn_more>", wdpLearnMoreClickableSpan));
|
||||
|
||||
if (mVariantYPager != null) {
|
||||
mVariantYPager.setUserInputEnabled(false);
|
||||
mPageBounceAnimator = new PageBounceAnimator(mVariantYPager);
|
||||
mVariantYAdapter = new OnboardingStepAdapter(mWdpLearnMore, this);
|
||||
mVariantYPager.setAdapter(mVariantYAdapter);
|
||||
}
|
||||
mOnboardingPager.setUserInputEnabled(false);
|
||||
mPageBounceAnimator = new PageBounceAnimator(mOnboardingPager);
|
||||
mStepAdapter = new OnboardingStepAdapter(wdpLearnMore, this);
|
||||
mOnboardingPager.setAdapter(mStepAdapter);
|
||||
|
||||
mDefaultConstraintLayout = findViewById(R.id.onboarding_default_variant);
|
||||
mVariantYConstraintLayout = findViewById(R.id.onboarding_variant_y);
|
||||
mBraveSplash = findViewById(R.id.brave_splash);
|
||||
mBraveSplashContainer = findViewById(R.id.brave_splash_container);
|
||||
assert !mIsTablet || mBraveSplashContainer != null
|
||||
: "R.id.brave_splash_container must be declared on tablet layout.";
|
||||
mIvLeafTop = findViewById(R.id.iv_leaf_top);
|
||||
mIvLeafBottom = findViewById(R.id.iv_leaf_bottom);
|
||||
mVLeafAlignTop = findViewById(R.id.view_leaf_top_align);
|
||||
mVLeafAlignBottom = findViewById(R.id.view_leaf_bottom_align);
|
||||
mIvBrave = findViewById(R.id.iv_brave);
|
||||
mIvArrowDown = findViewById(R.id.iv_arrow_down);
|
||||
mLayoutCard = findViewById(R.id.layout_card);
|
||||
mTvCard = findViewById(R.id.tv_card);
|
||||
mTvDefault = findViewById(R.id.tv_default);
|
||||
mCheckboxCrash = findViewById(R.id.checkbox_crash);
|
||||
mCheckboxP3a = findViewById(R.id.checkbox_p3a);
|
||||
mBtnPositive = findViewById(R.id.btn_positive);
|
||||
mBtnNegative = findViewById(R.id.btn_negative);
|
||||
LinearLayout layoutData = findViewById(R.id.layout_data);
|
||||
LayoutTransition layoutTransition = new LayoutTransition();
|
||||
layoutTransition.setDuration(1000);
|
||||
if (layoutData != null) {
|
||||
layoutData.setLayoutTransition(layoutTransition);
|
||||
}
|
||||
|
||||
int margin = mIsTablet ? 200 : 50;
|
||||
|
||||
if (mVLeafAlignTop != null) {
|
||||
ViewGroup.MarginLayoutParams topLeafParams =
|
||||
(ViewGroup.MarginLayoutParams) mVLeafAlignTop.getLayoutParams();
|
||||
topLeafParams.bottomMargin = margin;
|
||||
mVLeafAlignTop.setLayoutParams(topLeafParams);
|
||||
}
|
||||
|
||||
if (mVLeafAlignBottom != null) {
|
||||
ViewGroup.MarginLayoutParams bottomLeafParams =
|
||||
(ViewGroup.MarginLayoutParams) mVLeafAlignBottom.getLayoutParams();
|
||||
bottomLeafParams.topMargin = margin;
|
||||
mVLeafAlignBottom.setLayoutParams(bottomLeafParams);
|
||||
}
|
||||
|
||||
if (mBtnPositive != null) {
|
||||
BraveTouchUtils.ensureMinTouchTarget(mBtnPositive);
|
||||
}
|
||||
if (mCheckboxCrash != null) {
|
||||
BraveTouchUtils.ensureMinTouchTarget(mCheckboxCrash);
|
||||
}
|
||||
if (mCheckboxP3a != null) {
|
||||
BraveTouchUtils.ensureMinTouchTarget(mCheckboxP3a);
|
||||
}
|
||||
|
||||
if (mBtnPositive != null) {
|
||||
mBtnPositive.setOnClickListener(
|
||||
view -> {
|
||||
if (mCurrentStep != 0 || !maybeRequestDefaultBrowser()) {
|
||||
enableWebDiscoverPreference();
|
||||
nextOnboardingStepForDefaultVariant();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (mBtnNegative != null) {
|
||||
mBtnNegative.setOnClickListener(
|
||||
view -> {
|
||||
if (mCurrentOnboardingPage
|
||||
== CurrentOnboardingPage.ANALYTICS_CONSENT_PAGE) {
|
||||
CustomTabActivity.showInfoPage(this, P3A_URL);
|
||||
} else {
|
||||
nextOnboardingStepForDefaultVariant();
|
||||
}
|
||||
});
|
||||
}
|
||||
checkReferral();
|
||||
if (PackageUtils.isFirstInstall(this)) {
|
||||
ChromeSharedPreferences.getInstance()
|
||||
@@ -636,49 +302,27 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
!PrivacyPreferencesManagerImpl.getInstance()
|
||||
.isUsageAndCrashReportingPermittedByPolicy();
|
||||
|
||||
mDayZeroVariant = DayZeroHelper.getDayZeroVariant();
|
||||
// Filter out day zero variants different from X and Y.
|
||||
if (TextUtils.isEmpty(mDayZeroVariant)
|
||||
|| (!mDayZeroVariant.equals(DAY_ZERO_VARIANT_Y)
|
||||
&& !mDayZeroVariant.equals(DAY_ZERO_DEFAULT_VARIANT))) {
|
||||
mDayZeroVariant = DAY_ZERO_DEFAULT_VARIANT;
|
||||
if (!mIsCrashReportingManaged) {
|
||||
final boolean isCrashReporting = getCrashReportingPreference();
|
||||
mStepAdapter.setCrashReportingChecked(isCrashReporting);
|
||||
} else {
|
||||
mStepAdapter.setCrashReportingManaged(true);
|
||||
}
|
||||
|
||||
if (isVariantY()) {
|
||||
if (!mIsCrashReportingManaged) {
|
||||
final boolean isCrashReporting = getCrashReportingPreference();
|
||||
if (mVariantYAdapter != null) {
|
||||
mVariantYAdapter.setCrashReportingChecked(isCrashReporting);
|
||||
}
|
||||
} else if (mVariantYAdapter != null) {
|
||||
mVariantYAdapter.setCrashReportingManaged(true);
|
||||
}
|
||||
|
||||
if (!mIsP3aManaged) {
|
||||
final boolean isP3aEnabled = getP3aPreference();
|
||||
if (mVariantYAdapter != null) {
|
||||
mVariantYAdapter.setP3aChecked(isP3aEnabled);
|
||||
}
|
||||
} else if (mVariantYAdapter != null) {
|
||||
mVariantYAdapter.setP3aManaged(true);
|
||||
}
|
||||
mVariantYConstraintLayout.setVisibility(View.VISIBLE);
|
||||
if (mSplashAnimationFinished) {
|
||||
if (mBraveSplashContainer != null) {
|
||||
mBraveSplashContainer.setVisibility(View.GONE);
|
||||
}
|
||||
if (mVariantYPager != null) {
|
||||
mVariantYPager.setCurrentItem(mRestoredVariantYPageIndex, false);
|
||||
mVariantYPager.setVisibility(View.VISIBLE);
|
||||
}
|
||||
} else {
|
||||
final AnimatedVectorDrawable vectorDrawable = getAnimatedVectorDrawable();
|
||||
vectorDrawable.start();
|
||||
}
|
||||
|
||||
if (!mIsP3aManaged) {
|
||||
final boolean isP3aEnabled = getP3aPreference();
|
||||
mStepAdapter.setP3aChecked(isP3aEnabled);
|
||||
} else {
|
||||
mDefaultConstraintLayout.setVisibility(View.VISIBLE);
|
||||
nextOnboardingStepForDefaultVariant();
|
||||
mStepAdapter.setP3aManaged(true);
|
||||
}
|
||||
if (mSplashAnimationFinished) {
|
||||
if (mBraveSplashContainer != null) {
|
||||
mBraveSplashContainer.setVisibility(View.GONE);
|
||||
}
|
||||
mOnboardingPager.setCurrentItem(mRestoredPageIndex, false);
|
||||
mOnboardingPager.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
playAnimatedVectorDrawable();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -686,9 +330,7 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putBoolean(KEY_SPLASH_ANIMATION_FINISHED, mSplashAnimationFinished);
|
||||
if (mVariantYPager != null) {
|
||||
outState.putInt(KEY_VARIANT_Y_PAGE_INDEX, mVariantYPager.getCurrentItem());
|
||||
}
|
||||
outState.putInt(KEY_PAGE_INDEX, mOnboardingPager.getCurrentItem());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -698,20 +340,13 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
return;
|
||||
}
|
||||
mSplashAnimationFinished = state.getBoolean(KEY_SPLASH_ANIMATION_FINISHED, false);
|
||||
mRestoredVariantYPageIndex = state.getInt(KEY_VARIANT_Y_PAGE_INDEX, 0);
|
||||
mRestoredPageIndex = state.getInt(KEY_PAGE_INDEX, 0);
|
||||
}
|
||||
|
||||
private boolean isDefaultVariant() {
|
||||
return mDayZeroVariant.equals(DAY_ZERO_DEFAULT_VARIANT);
|
||||
}
|
||||
|
||||
private boolean isVariantY() {
|
||||
return mDayZeroVariant.equals(DAY_ZERO_VARIANT_Y);
|
||||
}
|
||||
|
||||
private AnimatedVectorDrawable getAnimatedVectorDrawable() {
|
||||
final AnimatedVectorDrawable result = (AnimatedVectorDrawable) mBraveSplash.getDrawable();
|
||||
result.registerAnimationCallback(
|
||||
private void playAnimatedVectorDrawable() {
|
||||
final AnimatedVectorDrawable vectorDrawable =
|
||||
(AnimatedVectorDrawable) mBraveSplash.getDrawable();
|
||||
vectorDrawable.registerAnimationCallback(
|
||||
new Animatable2.AnimationCallback() {
|
||||
|
||||
@Override
|
||||
@@ -728,11 +363,11 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
if (mIsTablet) {
|
||||
fadeBraveSplashContainer();
|
||||
} else {
|
||||
animateBraveSplash(result);
|
||||
animateBraveSplash(vectorDrawable);
|
||||
}
|
||||
}
|
||||
});
|
||||
return result;
|
||||
vectorDrawable.start();
|
||||
}
|
||||
|
||||
private boolean getCrashReportingPreference() {
|
||||
@@ -763,19 +398,14 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
return isP3aEnabled;
|
||||
}
|
||||
|
||||
private void showVariantYPagerAfterSplash() {
|
||||
if (mVariantYPager != null) {
|
||||
mVariantYPager.setCurrentItem(isWDPSettingAvailable() ? 0 : 1, false);
|
||||
mVariantYPager.setVisibility(View.VISIBLE);
|
||||
}
|
||||
private void showPagerAfterSplash() {
|
||||
mOnboardingPager.setCurrentItem(isWDPSettingAvailable() ? 0 : 1, false);
|
||||
mOnboardingPager.setVisibility(View.VISIBLE);
|
||||
mSplashAnimationFinished = true;
|
||||
maybeRequestDefaultBrowser();
|
||||
}
|
||||
|
||||
private void fadeBraveSplashContainer() {
|
||||
if (mBraveSplashContainer == null) {
|
||||
return;
|
||||
}
|
||||
Animator animator =
|
||||
AnimatorInflater.loadAnimator(
|
||||
WelcomeOnboardingActivity.this, R.animator.ic_brave_splash_fade_out);
|
||||
@@ -789,8 +419,8 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(@NonNull Animator animation) {
|
||||
mBraveSplashContainer.setVisibility(View.GONE);
|
||||
showVariantYPagerAfterSplash();
|
||||
assumeNonNull(mBraveSplashContainer).setVisibility(View.GONE);
|
||||
showPagerAfterSplash();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -845,10 +475,7 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
mSplashGuideline.getLayoutParams();
|
||||
guidelineLayoutParams.guideBegin = Math.round(splashBottomPx);
|
||||
mSplashGuideline.setLayoutParams(guidelineLayoutParams);
|
||||
if (mBraveSplashContainer != null) {
|
||||
mBraveSplashContainer.setVisibility(View.GONE);
|
||||
}
|
||||
showVariantYPagerAfterSplash();
|
||||
showPagerAfterSplash();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -864,15 +491,13 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
.start();
|
||||
}
|
||||
|
||||
private boolean maybeRequestDefaultBrowser() {
|
||||
private void maybeRequestDefaultBrowser() {
|
||||
if (isActivityFinishingOrDestroyed()) {
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
if (!isBraveSetAsDefaultBrowser(this)) {
|
||||
setDefaultBrowser(this);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -885,18 +510,16 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase
|
||||
if (position == 2) {
|
||||
// If both settings are managed by policy, skip this page entirely
|
||||
if (mIsP3aManaged && mIsCrashReportingManaged) {
|
||||
finalStep(true);
|
||||
finalStep();
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (mPageBounceAnimator != null) {
|
||||
mPageBounceAnimator.animateToPosition(position);
|
||||
}
|
||||
mPageBounceAnimator.animateToPosition(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss() {
|
||||
finalStep(true);
|
||||
finalStep();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
<color name="onboarding_progressbar_secondary_bg">#212529</color>
|
||||
|
||||
<color name="onboarding_card_bg_color">#1E2029</color>
|
||||
<color name="onboarding_card_text_color">#F0F2FF</color>
|
||||
<color name="onboarding_negative_button_color">#A0A5EB</color>
|
||||
|
||||
<color name="scan_qr_code_text_color">#F0F2FF</color>
|
||||
|
||||
@@ -99,7 +99,6 @@
|
||||
|
||||
<color name="onboarding_welcome_text_color">#F0F2FF</color>
|
||||
<color name="onboarding_card_bg_color">@android:color/white</color>
|
||||
<color name="onboarding_card_text_color">#212529</color>
|
||||
<color name="onboarding_negative_button_color">#4C54D2</color>
|
||||
<color name="onboarding_search_highlight_color">#737ADE</color>
|
||||
<color name="onboarding_arrow_color">#4D54D3</color>
|
||||
|
||||
@@ -21,8 +21,8 @@ import org.chromium.brave.browser.firstrun.R;
|
||||
import org.chromium.build.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* RecyclerView adapter for the variant-B onboarding ViewPager2, inflating one layout per step and
|
||||
* delegating navigation requests to the host via {@link OnboardingNavigationListener}.
|
||||
* RecyclerView adapter for the onboarding ViewPager2, inflating one layout per step and delegating
|
||||
* navigation requests to the host via {@link OnboardingNavigationListener}.
|
||||
*/
|
||||
@NullMarked
|
||||
public class OnboardingStepAdapter
|
||||
@@ -123,7 +123,7 @@ public class OnboardingStepAdapter
|
||||
mP3aManaged = managed;
|
||||
}
|
||||
|
||||
abstract static class OnboardingBaseViewHolder extends RecyclerView.ViewHolder {
|
||||
public abstract static class OnboardingBaseViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
public OnboardingBaseViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
@@ -50,11 +50,6 @@ public class PageBounceAnimator {
|
||||
@Nullable private ValueAnimator mPageAnimator;
|
||||
@Nullable private ValueAnimator mBounceAnimator;
|
||||
|
||||
/** Listener called when a page finishes settling. */
|
||||
public interface OnPageShownListener {
|
||||
void onPageShown(final int position);
|
||||
}
|
||||
|
||||
/** Creates a new animator bound to the provided ViewPager2. */
|
||||
public PageBounceAnimator(final ViewPager2 viewPager) {
|
||||
mViewPager = viewPager;
|
||||
@@ -138,11 +133,6 @@ public class PageBounceAnimator {
|
||||
mPageAnimator.start();
|
||||
}
|
||||
|
||||
/** Returns the adapter position of the currently snapped page. */
|
||||
public int getCurrentPosition() {
|
||||
return mViewPager.getCurrentItem();
|
||||
}
|
||||
|
||||
private void playBounce(final int targetPosition) {
|
||||
if (mBounceAnimator != null && mBounceAnimator.isRunning()) {
|
||||
mBounceAnimator.cancel();
|
||||
|
||||
@@ -753,24 +753,12 @@ This file contains all "about" strings. It is set to NOT be translated, in tran
|
||||
</message>
|
||||
|
||||
<!-- Onboarding strings -->
|
||||
<message name="IDS_PRIVACY_ONBOARDING" desc="Text for privacy onboarding">
|
||||
Privacy. Made simple.
|
||||
</message>
|
||||
<message name="IDS_ONBOARDING_SET_DEFAULT" desc="Text for set default onboarding">
|
||||
With Brave as default, every link you tap opens with Brave's privacy protections.
|
||||
</message>
|
||||
<message name="IDS_P3A_TITLE" desc="Text for p3a title onboarding">
|
||||
Help make Brave better
|
||||
</message>
|
||||
<message name="IDS_P3A_SUBTITLE" desc="Text for p3a subtitle onboarding">
|
||||
Let us know which features you're enjoying the most.
|
||||
</message>
|
||||
<message name="IDS_P3A_CRASH" desc="Text for p3a crash onboarding">
|
||||
Send diagnostic reports if you experience a crash or freeze.
|
||||
</message>
|
||||
<message name="IDS_P3A_INSIGHTS" desc="Text for p3a insights onboarding">
|
||||
Share private and anonymous product insights about what features are being used by Brave's users.
|
||||
</message>
|
||||
<message name="IDS_WDP_TITLE" desc="Text for WDP title onboarding">
|
||||
Help Brave Search grow
|
||||
</message>
|
||||
@@ -783,21 +771,6 @@ This file contains all "about" strings. It is set to NOT be translated, in tran
|
||||
<message name="IDS_BRAVE_ONBOARDING_SPLASH_LOGO_DESCRIPTION" desc="Accessibility description for the onboarding splash logo">
|
||||
Brave logo
|
||||
</message>
|
||||
<message name="IDS_BRAVE_ONBOARDING_BACKGROUND_DESCRIPTION" desc="Accessibility description for the onboarding background image">
|
||||
Onboarding background
|
||||
</message>
|
||||
<message name="IDS_BRAVE_ONBOARDING_TOP_LEAF_DESCRIPTION" desc="Accessibility description for the onboarding top leaf decoration">
|
||||
Top leaf decoration
|
||||
</message>
|
||||
<message name="IDS_BRAVE_ONBOARDING_BOTTOM_LEAF_DESCRIPTION" desc="Accessibility description for the onboarding bottom leaf decoration">
|
||||
Bottom leaf decoration
|
||||
</message>
|
||||
<message name="IDS_BRAVE_ONBOARDING_ARROW_DOWN_DESCRIPTION" desc="Accessibility description for the onboarding down arrow">
|
||||
Scroll down
|
||||
</message>
|
||||
<message name="IDS_BRAVE_ONBOARDING_LOGO_DESCRIPTION" desc="Accessibility description for the onboarding Brave logo">
|
||||
Brave logo
|
||||
</message>
|
||||
<message name="IDS_BRAVE_ONBOARDING_HELP_BRAVE_SEARCH_ILLUSTRATION_DESCRIPTION" desc="Accessibility description for the help Brave Search onboarding illustration">
|
||||
Help Brave Search illustration
|
||||
</message>
|
||||
@@ -843,9 +816,6 @@ This file contains all "about" strings. It is set to NOT be translated, in tran
|
||||
<message name="IDS_SKIP" desc="Text for skip button in onboarding">
|
||||
Skip
|
||||
</message>
|
||||
<message name="IDS_LEARN_MORE_ONBOARDING" desc="Text for learn more button onboarding">
|
||||
Learn more
|
||||
</message>
|
||||
<message name="IDS_TROUBLESHOOTING_ONBOARDING" desc="Text for trouble shooting page for onboarding">
|
||||
Troubleshooting onboarding
|
||||
</message>
|
||||
|
||||