Remove temp GAIA education screen from PS setup code
With this change the temp GAIA education screen is removed from private space setup code and adds a new loading screen with "Just a sec" title in the activity while the gms intent in launched to fix blank screen issue. Screenrecording link: b/336822960#comment7 Bug: 336822960 Test: Manual Change-Id: I9ee41835b39c194fefb970321b7a9d5a30f87306
This commit is contained in:
		@@ -1,111 +0,0 @@
 | 
			
		||||
<!--
 | 
			
		||||
  ~ Copyright (C) 2024 The Android Open Source Project
 | 
			
		||||
  ~
 | 
			
		||||
  ~ 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.
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
<com.google.android.setupdesign.GlifLayout
 | 
			
		||||
    xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    android:id="@+id/ps_account_intro_screen"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent"
 | 
			
		||||
    android:filterTouchesWhenObscured="true">
 | 
			
		||||
    <LinearLayout
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:orientation="vertical">
 | 
			
		||||
        <ImageView
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginLeft="24dp"
 | 
			
		||||
            android:layout_marginRight="24dp"
 | 
			
		||||
            android:contentDescription="@null"
 | 
			
		||||
            android:src="@drawable/ic_security_privacy_alert_primary"/>
 | 
			
		||||
        <TextView
 | 
			
		||||
            style="@style/PrivateSpaceSetupTextFontStyle"
 | 
			
		||||
            android:fontFamily="google-sans"
 | 
			
		||||
            android:text="@string/private_space_gaia_education_title"
 | 
			
		||||
            android:layout_margin="24dp"
 | 
			
		||||
            android:layout_marginTop="40dp"
 | 
			
		||||
            android:gravity="center"
 | 
			
		||||
            android:textSize="28sp"/>
 | 
			
		||||
        <TextView
 | 
			
		||||
            style="@style/PrivateSpaceSetupTextFontStyle"
 | 
			
		||||
            android:layout_marginLeft="24dp"
 | 
			
		||||
            android:layout_marginRight="24dp"
 | 
			
		||||
            android:layout_marginBottom="40dp"
 | 
			
		||||
            android:textSize="14sp"
 | 
			
		||||
            android:text="@string/private_space_gaia_education_description"/>
 | 
			
		||||
        <TextView
 | 
			
		||||
            style="@style/PrivateSpaceSetupTextFontStyle"
 | 
			
		||||
            android:layout_marginLeft="24dp"
 | 
			
		||||
            android:layout_marginRight="24dp"
 | 
			
		||||
            android:layout_marginBottom="16dp"
 | 
			
		||||
            android:textSize="14sp"
 | 
			
		||||
            android:text="@string/private_space_gaia_education_header"/>
 | 
			
		||||
        <RelativeLayout
 | 
			
		||||
            style="@style/PrivateSpaceSetupBulletPointLayoutStyle"
 | 
			
		||||
            android:paddingTop="8dp"
 | 
			
		||||
            android:paddingBottom="8dp">
 | 
			
		||||
            <ImageView
 | 
			
		||||
                android:id="@+id/point1"
 | 
			
		||||
                style="@style/PrivateSpaceBulletPointIconStyle"
 | 
			
		||||
                android:contentDescription="@null"
 | 
			
		||||
                android:src="@drawable/ic_text_dot" />
 | 
			
		||||
            <TextView
 | 
			
		||||
                style="@style/PrivateSpaceBulletPointTextFontStyle"
 | 
			
		||||
                android:layout_toRightOf="@+id/point1"
 | 
			
		||||
                android:textSize="14sp"
 | 
			
		||||
                android:text="@string/private_space_gaia_education_bullet1"/>
 | 
			
		||||
        </RelativeLayout>
 | 
			
		||||
        <RelativeLayout
 | 
			
		||||
            style="@style/PrivateSpaceSetupBulletPointLayoutStyle">
 | 
			
		||||
            <ImageView
 | 
			
		||||
                android:id="@+id/point2"
 | 
			
		||||
                style="@style/PrivateSpaceBulletPointIconStyle"
 | 
			
		||||
                android:contentDescription="@null"
 | 
			
		||||
                android:src="@drawable/ic_text_dot" />
 | 
			
		||||
            <TextView
 | 
			
		||||
                style="@style/PrivateSpaceBulletPointTextFontStyle"
 | 
			
		||||
                android:layout_toRightOf="@+id/point2"
 | 
			
		||||
                android:textSize="14sp"
 | 
			
		||||
                android:text="@string/private_space_gaia_education_bullet2"/>
 | 
			
		||||
        </RelativeLayout>
 | 
			
		||||
        <RelativeLayout
 | 
			
		||||
            style="@style/PrivateSpaceSetupBulletPointLayoutStyle">
 | 
			
		||||
            <ImageView
 | 
			
		||||
                android:id="@+id/point3"
 | 
			
		||||
                style="@style/PrivateSpaceBulletPointIconStyle"
 | 
			
		||||
                android:contentDescription="@null"
 | 
			
		||||
                android:src="@drawable/ic_text_dot" />
 | 
			
		||||
            <TextView
 | 
			
		||||
                style="@style/PrivateSpaceBulletPointTextFontStyle"
 | 
			
		||||
                android:layout_toRightOf="@+id/point3"
 | 
			
		||||
                android:textSize="14sp"
 | 
			
		||||
                android:text="@string/private_space_gaia_education_bullet3"/>
 | 
			
		||||
        </RelativeLayout>
 | 
			
		||||
        <RelativeLayout
 | 
			
		||||
            style="@style/PrivateSpaceSetupBulletPointLayoutStyle">
 | 
			
		||||
            <ImageView
 | 
			
		||||
                android:id="@+id/point4"
 | 
			
		||||
                style="@style/PrivateSpaceBulletPointIconStyle"
 | 
			
		||||
                android:contentDescription="@null"
 | 
			
		||||
                android:src="@drawable/ic_text_dot" />
 | 
			
		||||
            <TextView
 | 
			
		||||
                style="@style/PrivateSpaceBulletPointTextFontStyle"
 | 
			
		||||
                android:layout_toRightOf="@+id/point4"
 | 
			
		||||
                android:textSize="14sp"
 | 
			
		||||
                android:text="@string/private_space_gaia_education_bullet4"/>
 | 
			
		||||
        </RelativeLayout>
 | 
			
		||||
    </LinearLayout>
 | 
			
		||||
</com.google.android.setupdesign.GlifLayout>
 | 
			
		||||
@@ -25,5 +25,5 @@
 | 
			
		||||
    android:icon="@drawable/ic_private_space_icon"
 | 
			
		||||
    app:sudUsePartnerHeavyTheme="true"
 | 
			
		||||
    app:sudIllustrationType="default"
 | 
			
		||||
    app:sucHeaderText="@string/private_space_pre_finish_title">
 | 
			
		||||
</com.google.android.setupdesign.GlifLoadingLayout>
 | 
			
		||||
    app:sucHeaderText="@string/private_space_wait_screen_title">
 | 
			
		||||
</com.google.android.setupdesign.GlifLoadingLayout>
 | 
			
		||||
@@ -35,9 +35,6 @@
 | 
			
		||||
        <action
 | 
			
		||||
            android:id="@+id/action_set_lock_fragment"
 | 
			
		||||
            app:destination="@id/ps_profile_lock_fragment"/>
 | 
			
		||||
        <action
 | 
			
		||||
            android:id="@+id/action_account_intro_fragment"
 | 
			
		||||
            app:destination="@id/ps_account_intro_fragment"/>
 | 
			
		||||
    </fragment>
 | 
			
		||||
    <fragment android:id="@+id/ps_profile_error_fragment"
 | 
			
		||||
              android:name="com.android.settings.privatespace.PrivateProfileCreationError"
 | 
			
		||||
@@ -59,9 +56,6 @@
 | 
			
		||||
    <fragment android:id="@+id/ps_account_error_fragment"
 | 
			
		||||
              android:name="com.android.settings.privatespace.PrivateSpaceAccountLoginError"
 | 
			
		||||
              android:label="fragment_account_error">
 | 
			
		||||
        <action
 | 
			
		||||
            android:id="@+id/action_advance_login_error"
 | 
			
		||||
            app:destination="@id/ps_account_intro_fragment"/>
 | 
			
		||||
        <action
 | 
			
		||||
            android:id="@+id/action_skip_account_login"
 | 
			
		||||
            app:destination="@id/ps_profile_lock_fragment"/>
 | 
			
		||||
@@ -73,16 +67,10 @@
 | 
			
		||||
            android:id="@+id/action_lock_success_fragment"
 | 
			
		||||
            app:destination="@id/ps_pre_finish_delay_fragment"/>
 | 
			
		||||
    </fragment>
 | 
			
		||||
    <fragment android:id="@+id/ps_account_intro_fragment"
 | 
			
		||||
              android:name="com.android.settings.privatespace.PrivateSpaceGaiaEducationFragment"
 | 
			
		||||
              android:label="fragment_ps_account_intro">
 | 
			
		||||
        <action
 | 
			
		||||
            android:id="@+id/action_account_lock_fragment"
 | 
			
		||||
            app:destination="@id/ps_profile_lock_fragment"/>
 | 
			
		||||
        <action
 | 
			
		||||
            android:id="@+id/action_advance_login_error"
 | 
			
		||||
            app:destination="@id/ps_account_error_fragment"/>
 | 
			
		||||
    </fragment>
 | 
			
		||||
    <action android:id="@+id/action_pre_finish_delay_fragment"
 | 
			
		||||
            app:destination="@id/ps_pre_finish_delay_fragment"/>
 | 
			
		||||
    <action android:id="@+id/action_advance_login_error"
 | 
			
		||||
            app:destination="@id/ps_account_error_fragment"/>
 | 
			
		||||
    <action android:id="@+id/show_set_lock_fragment"
 | 
			
		||||
            app:destination="@id/ps_profile_lock_fragment"/>
 | 
			
		||||
</navigation>
 | 
			
		||||
 
 | 
			
		||||
@@ -1374,7 +1374,7 @@
 | 
			
		||||
    <!-- Label for private space lock setup button to choose a new lock. [CHAR LIMIT=50] -->
 | 
			
		||||
    <string name="private_space_set_lock_label">Choose new lock</string>
 | 
			
		||||
    <!-- Title for private space setup pre completion screen to add a delay. [CHAR LIMIT=30] -->
 | 
			
		||||
    <string name="private_space_pre_finish_title">Just a sec\u2026</string>
 | 
			
		||||
    <string name="private_space_wait_screen_title">Just a sec\u2026</string>
 | 
			
		||||
    <!-- Title for private space setup success screen. [CHAR LIMIT=30] -->
 | 
			
		||||
    <string name="private_space_success_title">All set!</string>
 | 
			
		||||
    <!-- Summary for the private space setup success screen. [CHAR LIMIT=NONE] -->
 | 
			
		||||
@@ -1401,22 +1401,6 @@
 | 
			
		||||
    <string name="private_space_choose_your_password_header">Set a password for your private space</string>
 | 
			
		||||
    <!-- Header for private space choose your pattern screen [CHAR LIMIT=40] -->
 | 
			
		||||
    <string name="private_space_choose_your_pattern_header">Set a pattern for your private space</string>
 | 
			
		||||
    <!-- Title for private space GAIA education screen [CHAR LIMIT=90] -->
 | 
			
		||||
    <string name="private_space_gaia_education_title">Create a Google Account to help keep your data private</string>
 | 
			
		||||
    <!-- Description for private space GAIA education screen [CHAR LIMIT=120] -->
 | 
			
		||||
    <string name="private_space_gaia_education_description">On the next screen you can sign in to an account to use with your private space</string>
 | 
			
		||||
    <!-- Sub header for private space GAIA education screen [CHAR LIMIT=120] -->
 | 
			
		||||
    <string name="private_space_gaia_education_header"><b>Create a dedicated account to help stop data appearing outside private space, such as:</b></string>
 | 
			
		||||
    <!-- Text for private space GAIA education screen [CHAR LIMIT=90] -->
 | 
			
		||||
    <string name="private_space_gaia_education_bullet1">Synced photos, files, emails, contacts, calendar events, and other data</string>
 | 
			
		||||
    <!-- Text for private space GAIA education screen [CHAR LIMIT=60] -->
 | 
			
		||||
    <string name="private_space_gaia_education_bullet2">App download history and recommendations</string>
 | 
			
		||||
    <!-- Text for private space GAIA education screen [CHAR LIMIT=60] -->
 | 
			
		||||
    <string name="private_space_gaia_education_bullet3">Browsing history, bookmarks, and saved passwords</string>
 | 
			
		||||
    <!-- Text for private space GAIA education screen [CHAR LIMIT=90] -->
 | 
			
		||||
    <string name="private_space_gaia_education_bullet4">Suggested content related to your activity in private space apps</string>
 | 
			
		||||
    <!-- Text for button in private space GAIA education screen to start login [CHAR LIMIT=20] -->
 | 
			
		||||
    <string name="private_space_gaia_education_got_it">Got it</string>
 | 
			
		||||
    <!-- The title of the category for settings related to the private space lock  [CHAR LIMIT=20] -->
 | 
			
		||||
    <string name="private_space_category_lock">Lock</string>
 | 
			
		||||
    <!-- The title of the category for settings related to hiding the private space  [CHAR LIMIT=20] -->
 | 
			
		||||
 
 | 
			
		||||
@@ -29,6 +29,7 @@ import static com.android.settings.privatespace.PrivateSpaceSetupActivity.SET_LO
 | 
			
		||||
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.os.UserHandle;
 | 
			
		||||
import android.util.Log;
 | 
			
		||||
 | 
			
		||||
import androidx.activity.result.ActivityResult;
 | 
			
		||||
@@ -70,11 +71,20 @@ public class PrivateProfileContextHelperActivity extends FragmentActivity {
 | 
			
		||||
        if (savedInstanceState == null) {
 | 
			
		||||
            int action = getIntent().getIntExtra(EXTRA_ACTION_TYPE, -1);
 | 
			
		||||
            if (action == ACCOUNT_LOGIN_ACTION) {
 | 
			
		||||
                setContentView(R.layout.private_space_wait_screen);
 | 
			
		||||
                PrivateSpaceLoginFeatureProvider privateSpaceLoginFeatureProvider =
 | 
			
		||||
                        FeatureFactory.getFeatureFactory().getPrivateSpaceLoginFeatureProvider();
 | 
			
		||||
                if (!privateSpaceLoginFeatureProvider.initiateAccountLogin(
 | 
			
		||||
                        this, mAddAccountToPrivateProfile)) {
 | 
			
		||||
                    setResult(RESULT_OK);
 | 
			
		||||
                UserHandle userHandle =
 | 
			
		||||
                        PrivateSpaceMaintainer.getInstance(this).getPrivateProfileHandle();
 | 
			
		||||
                if (userHandle != null) {
 | 
			
		||||
                    if (!privateSpaceLoginFeatureProvider.initiateAccountLogin(
 | 
			
		||||
                            createContextAsUser(userHandle, 0), mAddAccountToPrivateProfile)) {
 | 
			
		||||
                        setResult(RESULT_OK);
 | 
			
		||||
                        finish();
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    Log.w(TAG, "Private profile user handle is null");
 | 
			
		||||
                    setResult(RESULT_CANCELED);
 | 
			
		||||
                    finish();
 | 
			
		||||
                }
 | 
			
		||||
            } else if (action == SET_LOCK_ACTION) {
 | 
			
		||||
 
 | 
			
		||||
@@ -16,8 +16,12 @@
 | 
			
		||||
 | 
			
		||||
package com.android.settings.privatespace;
 | 
			
		||||
 | 
			
		||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.ACCOUNT_LOGIN_ACTION;
 | 
			
		||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.EXTRA_ACTION_TYPE;
 | 
			
		||||
 | 
			
		||||
import android.annotation.SuppressLint;
 | 
			
		||||
import android.app.settings.SettingsEnums;
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.view.LayoutInflater;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
@@ -85,8 +89,7 @@ public class PrivateSpaceAccountLoginError extends InstrumentedFragment {
 | 
			
		||||
            mMetricsFeatureProvider.action(
 | 
			
		||||
                    getContext(),
 | 
			
		||||
                    SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_TRY_CREATE_ACCOUNT_AGAIN);
 | 
			
		||||
            NavHostFragment.findNavController(PrivateSpaceAccountLoginError.this)
 | 
			
		||||
                    .navigate(R.id.action_advance_login_error);
 | 
			
		||||
            startAccountLogin();
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -102,4 +105,13 @@ public class PrivateSpaceAccountLoginError extends InstrumentedFragment {
 | 
			
		||||
                    .navigate(R.id.action_skip_account_login);
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Start new activity in private profile to add an account to private profile */
 | 
			
		||||
    private void startAccountLogin() {
 | 
			
		||||
        Intent intent = new Intent(getContext(), PrivateProfileContextHelperActivity.class);
 | 
			
		||||
        intent.putExtra(EXTRA_ACTION_TYPE, ACCOUNT_LOGIN_ACTION);
 | 
			
		||||
        mMetricsFeatureProvider.action(
 | 
			
		||||
                getContext(), SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_START);
 | 
			
		||||
        getActivity().startActivityForResult(intent, ACCOUNT_LOGIN_ACTION);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -16,8 +16,14 @@
 | 
			
		||||
 | 
			
		||||
package com.android.settings.privatespace;
 | 
			
		||||
 | 
			
		||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.ACCOUNT_LOGIN_ACTION;
 | 
			
		||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.EXTRA_ACTION_TYPE;
 | 
			
		||||
 | 
			
		||||
import android.app.settings.SettingsEnums;
 | 
			
		||||
import android.content.BroadcastReceiver;
 | 
			
		||||
import android.content.Context;
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
import android.content.IntentFilter;
 | 
			
		||||
import android.net.ConnectivityManager;
 | 
			
		||||
import android.net.NetworkInfo;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
@@ -42,12 +48,31 @@ import com.google.android.setupdesign.GlifLayout;
 | 
			
		||||
public class PrivateSpaceCreationFragment extends InstrumentedFragment {
 | 
			
		||||
    private static final String TAG = "PrivateSpaceCreateFrag";
 | 
			
		||||
    private static final int PRIVATE_SPACE_CREATE_POST_DELAY_MS = 1000;
 | 
			
		||||
    private static final int PRIVATE_SPACE_ACCOUNT_LOGIN_POST_DELAY_MS = 5000;
 | 
			
		||||
    private static final Handler sHandler = new Handler(Looper.getMainLooper());
 | 
			
		||||
    private Runnable mRunnable =
 | 
			
		||||
            () -> {
 | 
			
		||||
                createPrivateSpace();
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
    private Runnable mAccountLoginRunnable =
 | 
			
		||||
            () -> {
 | 
			
		||||
                unRegisterReceiver();
 | 
			
		||||
                startAccountLogin();
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
    final BroadcastReceiver mProfileAccessReceiver = new  BroadcastReceiver() {
 | 
			
		||||
        @Override
 | 
			
		||||
        public void onReceive(Context context, Intent intent) {
 | 
			
		||||
            final String action = intent.getAction();
 | 
			
		||||
            if (action.equals(Intent.ACTION_PROFILE_ACCESSIBLE)) {
 | 
			
		||||
                Log.i(TAG, "onReceive " + action);
 | 
			
		||||
                sHandler.removeCallbacks(mAccountLoginRunnable);
 | 
			
		||||
                sHandler.post(mAccountLoginRunnable);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onCreate(@Nullable Bundle savedInstanceState) {
 | 
			
		||||
        if (android.os.Flags.allowPrivateProfile()
 | 
			
		||||
@@ -82,6 +107,7 @@ public class PrivateSpaceCreationFragment extends InstrumentedFragment {
 | 
			
		||||
        super.onResume();
 | 
			
		||||
        // Ensures screen visibility to user by introducing a 1-second delay before creating private
 | 
			
		||||
        // space.
 | 
			
		||||
        sHandler.removeCallbacks(mRunnable);
 | 
			
		||||
        sHandler.postDelayed(mRunnable, PRIVATE_SPACE_CREATE_POST_DELAY_MS);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -97,8 +123,9 @@ public class PrivateSpaceCreationFragment extends InstrumentedFragment {
 | 
			
		||||
            mMetricsFeatureProvider.action(
 | 
			
		||||
                    getContext(), SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_SPACE_CREATED, true);
 | 
			
		||||
            if (isConnectedToInternet()) {
 | 
			
		||||
                NavHostFragment.findNavController(PrivateSpaceCreationFragment.this)
 | 
			
		||||
                        .navigate(R.id.action_account_intro_fragment);
 | 
			
		||||
                registerReceiver();
 | 
			
		||||
                sHandler.postDelayed(
 | 
			
		||||
                        mAccountLoginRunnable, PRIVATE_SPACE_ACCOUNT_LOGIN_POST_DELAY_MS);
 | 
			
		||||
            } else {
 | 
			
		||||
                NavHostFragment.findNavController(PrivateSpaceCreationFragment.this)
 | 
			
		||||
                        .navigate(R.id.action_set_lock_fragment);
 | 
			
		||||
@@ -127,4 +154,25 @@ public class PrivateSpaceCreationFragment extends InstrumentedFragment {
 | 
			
		||||
        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
 | 
			
		||||
        return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Start new activity in private profile to add an account to private profile */
 | 
			
		||||
    private void startAccountLogin() {
 | 
			
		||||
        Intent intent = new Intent(getContext(), PrivateProfileContextHelperActivity.class);
 | 
			
		||||
        intent.putExtra(EXTRA_ACTION_TYPE, ACCOUNT_LOGIN_ACTION);
 | 
			
		||||
        mMetricsFeatureProvider.action(
 | 
			
		||||
                getContext(), SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_START);
 | 
			
		||||
        getActivity().startActivityForResult(intent, ACCOUNT_LOGIN_ACTION);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void registerReceiver() {
 | 
			
		||||
        IntentFilter filter = new IntentFilter();
 | 
			
		||||
        filter.addAction(Intent.ACTION_PROFILE_ACCESSIBLE);
 | 
			
		||||
        getActivity().registerReceiver(mProfileAccessReceiver, filter);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void unRegisterReceiver() {
 | 
			
		||||
        if (mProfileAccessReceiver != null) {
 | 
			
		||||
            getActivity().unregisterReceiver(mProfileAccessReceiver);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,125 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2024 The Android Open Source Project
 | 
			
		||||
 *
 | 
			
		||||
 * 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.android.settings.privatespace;
 | 
			
		||||
 | 
			
		||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.ACCOUNT_LOGIN_ACTION;
 | 
			
		||||
import static com.android.settings.privatespace.PrivateSpaceSetupActivity.EXTRA_ACTION_TYPE;
 | 
			
		||||
 | 
			
		||||
import android.app.settings.SettingsEnums;
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.os.UserHandle;
 | 
			
		||||
import android.util.Log;
 | 
			
		||||
import android.view.LayoutInflater;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
import android.view.ViewGroup;
 | 
			
		||||
 | 
			
		||||
import androidx.activity.OnBackPressedCallback;
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
import androidx.annotation.Nullable;
 | 
			
		||||
import androidx.navigation.fragment.NavHostFragment;
 | 
			
		||||
 | 
			
		||||
import com.android.settings.R;
 | 
			
		||||
import com.android.settings.core.InstrumentedFragment;
 | 
			
		||||
 | 
			
		||||
import com.google.android.setupcompat.template.FooterBarMixin;
 | 
			
		||||
import com.google.android.setupcompat.template.FooterButton;
 | 
			
		||||
import com.google.android.setupdesign.GlifLayout;
 | 
			
		||||
 | 
			
		||||
/** Fragment for GAIA education screen */
 | 
			
		||||
public class PrivateSpaceGaiaEducationFragment extends InstrumentedFragment {
 | 
			
		||||
    private static final String TAG = "PrivateSpaceGaiaEduFrag";
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onCreate(@Nullable Bundle savedInstanceState) {
 | 
			
		||||
        if (android.os.Flags.allowPrivateProfile()
 | 
			
		||||
                && android.multiuser.Flags.enablePrivateSpaceFeatures()) {
 | 
			
		||||
            super.onCreate(savedInstanceState);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @NonNull
 | 
			
		||||
    @Override
 | 
			
		||||
    public View onCreateView(
 | 
			
		||||
            @NonNull LayoutInflater inflater,
 | 
			
		||||
            @Nullable ViewGroup container,
 | 
			
		||||
            @Nullable Bundle savedInstanceState) {
 | 
			
		||||
        GlifLayout rootView =
 | 
			
		||||
                (GlifLayout)
 | 
			
		||||
                        inflater.inflate(
 | 
			
		||||
                                R.layout.private_space_gaia_education_screen, container, false);
 | 
			
		||||
        final FooterBarMixin mixin = rootView.getMixin(FooterBarMixin.class);
 | 
			
		||||
        mixin.setPrimaryButton(
 | 
			
		||||
                new FooterButton.Builder(getContext())
 | 
			
		||||
                        .setText(R.string.private_space_gaia_education_got_it)
 | 
			
		||||
                        .setListener(onStartLogin())
 | 
			
		||||
                        .setButtonType(FooterButton.ButtonType.NEXT)
 | 
			
		||||
                        .setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Primary)
 | 
			
		||||
                        .build());
 | 
			
		||||
        mixin.setSecondaryButton(
 | 
			
		||||
                new FooterButton.Builder(getContext())
 | 
			
		||||
                        .setText(R.string.skip_label)
 | 
			
		||||
                        .setListener(onSkip())
 | 
			
		||||
                        .setButtonType(FooterButton.ButtonType.NEXT)
 | 
			
		||||
                        .setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Secondary)
 | 
			
		||||
                        .build());
 | 
			
		||||
        OnBackPressedCallback callback =
 | 
			
		||||
                new OnBackPressedCallback(true /* enabled by default */) {
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void handleOnBackPressed() {
 | 
			
		||||
                        // Handle the back button event. We intentionally don't want to allow back
 | 
			
		||||
                        // button to work in this screen during the setup flow.
 | 
			
		||||
                    }
 | 
			
		||||
                };
 | 
			
		||||
        requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
 | 
			
		||||
 | 
			
		||||
        return rootView;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public int getMetricsCategory() {
 | 
			
		||||
        return METRICS_CATEGORY_UNKNOWN;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private View.OnClickListener onSkip() {
 | 
			
		||||
        return v -> {
 | 
			
		||||
            NavHostFragment.findNavController(PrivateSpaceGaiaEducationFragment.this)
 | 
			
		||||
                    .navigate(R.id.action_account_lock_fragment);
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private View.OnClickListener onStartLogin() {
 | 
			
		||||
        return v -> {
 | 
			
		||||
            startAccountLogin();
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** Start new activity in private profile to add an account to private profile */
 | 
			
		||||
    private void startAccountLogin() {
 | 
			
		||||
        UserHandle userHandle =
 | 
			
		||||
                PrivateSpaceMaintainer.getInstance(getActivity()).getPrivateProfileHandle();
 | 
			
		||||
        if (userHandle != null) {
 | 
			
		||||
            Intent intent = new Intent(getContext(), PrivateProfileContextHelperActivity.class);
 | 
			
		||||
            intent.putExtra(EXTRA_ACTION_TYPE, ACCOUNT_LOGIN_ACTION);
 | 
			
		||||
            mMetricsFeatureProvider.action(
 | 
			
		||||
                    getContext(), SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_START);
 | 
			
		||||
            getActivity().startActivityForResultAsUser(intent, ACCOUNT_LOGIN_ACTION, userHandle);
 | 
			
		||||
        } else {
 | 
			
		||||
            Log.w(TAG, "Private profile user handle is null");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -65,7 +65,7 @@ public class PrivateSpaceSetupActivity extends FragmentActivity {
 | 
			
		||||
            if (resultCode == RESULT_OK) {
 | 
			
		||||
                mMetricsFeatureProvider.action(
 | 
			
		||||
                        this, SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_ACCOUNT_LOGIN_SUCCESS, true);
 | 
			
		||||
                mNavHostFragment.getNavController().navigate(R.id.action_account_lock_fragment);
 | 
			
		||||
                mNavHostFragment.getNavController().navigate(R.id.show_set_lock_fragment);
 | 
			
		||||
            } else {
 | 
			
		||||
                mMetricsFeatureProvider.action(
 | 
			
		||||
                        this,
 | 
			
		||||
 
 | 
			
		||||
@@ -92,7 +92,7 @@ public class SetupPreFinishDelayFragment extends InstrumentedFragment {
 | 
			
		||||
            @Nullable Bundle savedInstanceState) {
 | 
			
		||||
        GlifLayout rootView =
 | 
			
		||||
                (GlifLayout)
 | 
			
		||||
                        inflater.inflate(R.layout.private_space_pre_finish_delay, container, false);
 | 
			
		||||
                        inflater.inflate(R.layout.private_space_wait_screen, container, false);
 | 
			
		||||
        OnBackPressedCallback callback =
 | 
			
		||||
                new OnBackPressedCallback(true /* enabled by default */) {
 | 
			
		||||
                    @Override
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user