summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFarruh Habibullaev <farruhh@google.com>2021-10-15 09:43:04 -0700
committerFarruh Habibullaev <farruhh@google.com>2021-10-20 19:00:24 +0000
commit8afe425dfbd75b8de1925df1586a49fb33dc154b (patch)
treef0c6aaa20a9bff4956aba8880ee26208cd041163
parenta67dcffa639174b24ef02ee71091dd2d1fbfd85c (diff)
downloadsetupwizard-8afe425dfbd75b8de1925df1586a49fb33dc154b.tar.gz
Add the support for fragment use in carsetupwizard library
* modify setContentFragment & setContentFragmentWithBackstack in the BaseSetupWizardActivity to support the fragment use in split-nav implementation. It renders the fragment in the viewStubContent instead of appending it. * keep backward compatibility. It's backward compatible because until splitnav is enabled, the user won't see the CX change. Once split-nav is enabled, fragment renders within view stub, instead of being appending into view, which is incorrect rendering. Test: Unit tests by modifying BaseCompatActivityTest Test: MANUALLY test for several different cases, including edge cases. BUG: b/203109230 Change-Id: Iadf19e2c3b26487ded460705e0d5766bea8a87fb
-rw-r--r--library/main/res/layout/empty_fragment_frame_layout.xml5
-rw-r--r--library/main/src/com/android/car/setupwizardlib/BaseSetupWizardActivity.java24
-rw-r--r--library/main/tests/robotests/src/com/android/car/setupwizardlib/BaseCompatActivityTest.java5
3 files changed, 30 insertions, 4 deletions
diff --git a/library/main/res/layout/empty_fragment_frame_layout.xml b/library/main/res/layout/empty_fragment_frame_layout.xml
new file mode 100644
index 0000000..0ea8da7
--- /dev/null
+++ b/library/main/res/layout/empty_fragment_frame_layout.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/empty_fragment_frame_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" /> \ No newline at end of file
diff --git a/library/main/src/com/android/car/setupwizardlib/BaseSetupWizardActivity.java b/library/main/src/com/android/car/setupwizardlib/BaseSetupWizardActivity.java
index c038375..ba7beb7 100644
--- a/library/main/src/com/android/car/setupwizardlib/BaseSetupWizardActivity.java
+++ b/library/main/src/com/android/car/setupwizardlib/BaseSetupWizardActivity.java
@@ -21,6 +21,7 @@ import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
+import android.view.ViewStub;
import androidx.annotation.CallSuper;
import androidx.annotation.LayoutRes;
@@ -49,6 +50,8 @@ import com.android.car.setupwizardlib.util.CarWizardManagerHelper;
* component attributes
*/
abstract class BaseSetupWizardActivity extends FragmentActivity {
+ private static final String TAG = BaseSetupWizardActivity.class.getSimpleName();
+
@VisibleForTesting
static final String CONTENT_FRAGMENT_TAG = "CONTENT_FRAGMENT_TAG";
/**
@@ -94,7 +97,7 @@ abstract class BaseSetupWizardActivity extends FragmentActivity {
mCarSetupWizardLayout.setBackButtonListener(v -> handleBackButtonEvent());
- mCarSetupWizardLayout.setCloseButtonListener(v-> handleCloseButton());
+ mCarSetupWizardLayout.setCloseButtonListener(v -> handleCloseButton());
resetPrimaryToolbarButtonOnClickListener();
resetSecondaryToolbarButtonOnClickListener();
@@ -174,7 +177,7 @@ abstract class BaseSetupWizardActivity extends FragmentActivity {
protected void setContentFragmentWithBackstack(Fragment fragment) {
if (mAllowFragmentCommits) {
getSupportFragmentManager().beginTransaction()
- .replace(R.id.car_setup_wizard_layout, fragment, CONTENT_FRAGMENT_TAG)
+ .replace(getFragmentContainerViewId(), fragment, CONTENT_FRAGMENT_TAG)
.addToBackStack(null)
.commit();
getSupportFragmentManager().executePendingTransactions();
@@ -202,7 +205,7 @@ abstract class BaseSetupWizardActivity extends FragmentActivity {
android.R.animator.fade_out,
android.R.animator.fade_in,
android.R.animator.fade_out)
- .replace(R.id.car_setup_wizard_layout, fragment, CONTENT_FRAGMENT_TAG)
+ .replace(getFragmentContainerViewId(), fragment, CONTENT_FRAGMENT_TAG)
.commitNow();
onContentFragmentSet(getContentFragment());
}
@@ -530,6 +533,21 @@ abstract class BaseSetupWizardActivity extends FragmentActivity {
}
@VisibleForTesting
+ int getFragmentContainerViewId() {
+ if (isSplitNavLayoutSupported()) {
+ ViewStub viewStub = findViewById(R.id.layout_content_stub);
+ viewStub.setLayoutResource(R.layout.empty_fragment_frame_layout);
+ viewStub.inflate();
+ Log.v(TAG, "fragmentContainerViewId: "
+ + getResources().getResourceEntryName(R.id.empty_fragment_frame_layout));
+ return R.id.empty_fragment_frame_layout;
+ }
+ Log.v(TAG, "fragmentContainerViewId: "
+ + getResources().getResourceEntryName(R.id.car_setup_wizard_layout));
+ return R.id.car_setup_wizard_layout;
+ }
+
+ @VisibleForTesting
boolean getAllowFragmentCommits() {
return mAllowFragmentCommits;
}
diff --git a/library/main/tests/robotests/src/com/android/car/setupwizardlib/BaseCompatActivityTest.java b/library/main/tests/robotests/src/com/android/car/setupwizardlib/BaseCompatActivityTest.java
index 7209fc9..f0427d9 100644
--- a/library/main/tests/robotests/src/com/android/car/setupwizardlib/BaseCompatActivityTest.java
+++ b/library/main/tests/robotests/src/com/android/car/setupwizardlib/BaseCompatActivityTest.java
@@ -38,7 +38,6 @@ import androidx.fragment.app.Fragment;
import com.android.car.setupwizardlib.robolectric.BaseRobolectricTest;
import com.android.car.setupwizardlib.robolectric.TestHelper;
import com.android.car.setupwizardlib.shadows.ShadowCar;
-import com.android.car.setupwizardlib.test.R;
import org.junit.Before;
import org.junit.Test;
@@ -194,6 +193,7 @@ public class BaseCompatActivityTest extends BaseRobolectricTest {
.isEqualTo(0);
// Verify that onContentFragmentSet is called with the test fragment
verify(spyBaseCompatActivity).onContentFragmentSet(fragment);
+ verify(spyBaseCompatActivity).getFragmentContainerViewId();
}
/**
@@ -213,6 +213,7 @@ public class BaseCompatActivityTest extends BaseRobolectricTest {
.isEqualTo(0);
// Verify that onContentFragmentSet is not called
verify(spyBaseCompatActivity, times(0)).onContentFragmentSet(fragment);
+ verify(spyBaseCompatActivity, times(0)).getFragmentContainerViewId();
}
/**
@@ -232,6 +233,7 @@ public class BaseCompatActivityTest extends BaseRobolectricTest {
.isEqualTo(1);
// Verify that onContentFragmentSet is called with the test fragment
verify(spyBaseCompatActivity).onContentFragmentSet(fragment);
+ verify(spyBaseCompatActivity).getFragmentContainerViewId();
}
/**
@@ -251,6 +253,7 @@ public class BaseCompatActivityTest extends BaseRobolectricTest {
.isEqualTo(0);
// Verify that onContentFragmentSet is not called
verify(spyBaseCompatActivity, times(0)).onContentFragmentSet(fragment);
+ verify(spyBaseCompatActivity, times(0)).getFragmentContainerViewId();
}
/**