Merge "Change to public POWER_SAVE_MODE_CHANGED broadcast." into rvc-dev
diff --git a/res/drawable/accessibility_captions.png b/res/drawable/accessibility_captions.png
new file mode 100644
index 0000000..5467386
--- /dev/null
+++ b/res/drawable/accessibility_captions.png
Binary files differ
diff --git a/res/drawable/accessibility_color_inversion_preview.png b/res/drawable/accessibility_color_inversion_preview.png
deleted file mode 100644
index 5c9f3ea..0000000
--- a/res/drawable/accessibility_color_inversion_preview.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/accessibility_dwell.png b/res/drawable/accessibility_dwell.png
new file mode 100644
index 0000000..b4f5598
--- /dev/null
+++ b/res/drawable/accessibility_dwell.png
Binary files differ
diff --git a/res/layout/color_inversion_preview.xml b/res/layout/accessibility_autoclick_preview.xml
similarity index 87%
rename from res/layout/color_inversion_preview.xml
rename to res/layout/accessibility_autoclick_preview.xml
index 18a0bb8..4fa3f8f 100644
--- a/res/layout/color_inversion_preview.xml
+++ b/res/layout/accessibility_autoclick_preview.xml
@@ -22,8 +22,9 @@
 
     <ImageView
         android:layout_width="match_parent"
-        android:layout_height="@dimen/color_mode_preview_height"
+        android:layout_height="@dimen/autoclick_preview_height"
         android:contentDescription="@null"
         android:scaleType="fitCenter"
-        android:src="@drawable/accessibility_color_inversion_preview"/>
+        android:src="@drawable/accessibility_dwell"/>
+
 </FrameLayout>
diff --git a/res/layout/accessibility_captions_preview.xml b/res/layout/accessibility_captions_preview.xml
new file mode 100644
index 0000000..f3c0316
--- /dev/null
+++ b/res/layout/accessibility_captions_preview.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2020 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.
+  -->
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/captioning_preview_height"
+        android:contentDescription="@null"
+        android:scaleType="fitCenter"
+        android:src="@drawable/accessibility_captions" />
+
+</FrameLayout>
diff --git a/res/raw/accessibility_color_inversion.mp4 b/res/raw/accessibility_color_inversion.mp4
new file mode 100644
index 0000000..d28b9b4
--- /dev/null
+++ b/res/raw/accessibility_color_inversion.mp4
Binary files differ
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index ef6b818..4ca9798 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -56,6 +56,8 @@
 
     <dimen name="captioning_preview_height">200dp</dimen>
 
+    <dimen name="autoclick_preview_height">200dp</dimen>
+
     <dimen name="color_mode_preview_height">320dp</dimen>
 
     <dimen name="ring_progress_bar_thickness">4dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 94972f7..b789907 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8448,7 +8448,7 @@
     <string name="notification_assistant_security_warning_summary">
         <xliff:g id="notification_assistant_name" example="Notification Assistant">%1$s</xliff:g> will be able to read all notifications,
         including personal information such as contact names and the text of messages you receive.
-        It will also be able to modify or dismiss notifications or trigger action buttons they contain.
+        This app will also be able to dismiss notifications or take action on buttons in notifications, including answering phone calls.
         \n\nThis will also give the app the ability to turn Do Not Disturb on or off and change related settings.
     </string>
 
@@ -8461,7 +8461,7 @@
     <string name="notification_listener_security_warning_summary">
         <xliff:g id="notification_listener_name">%1$s</xliff:g> will be able to read all notifications,
         including personal information such as contact names and the text of messages you receive.
-        It will also be able to dismiss notifications or trigger action buttons they contain.
+        This app will also be able to dismiss notifications or take action on buttons in notifications, including answering phone calls.
         \n\nThis will also give the app the ability to turn Do Not Disturb on or off and change related settings.
     </string>
     <string name="notification_listener_disable_warning_summary">
diff --git a/res/xml/accessibility_autoclick_settings.xml b/res/xml/accessibility_autoclick_settings.xml
index f126113..d387b58 100644
--- a/res/xml/accessibility_autoclick_settings.xml
+++ b/res/xml/accessibility_autoclick_settings.xml
@@ -19,6 +19,15 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/accessibility_autoclick_preference_title">
 
+    <com.android.settingslib.widget.LayoutPreference
+        android:key="accessibility_autoclick_preview"
+        android:layout="@layout/accessibility_autoclick_preview"
+        android:persistent="false"
+        android:selectable="false"
+        android:title="@string/summary_placeholder"
+        settings:allowDividerBelow="true"
+        settings:searchable="false" />
+
     <com.android.settingslib.widget.RadioButtonPreference
         android:key="accessibility_control_autoclick_default"
         android:title="@string/accessibility_autoclick_default_title"
diff --git a/res/xml/accessibility_color_inversion_settings.xml b/res/xml/accessibility_color_inversion_settings.xml
index ba0d6fd..f44d41f 100644
--- a/res/xml/accessibility_color_inversion_settings.xml
+++ b/res/xml/accessibility_color_inversion_settings.xml
@@ -21,14 +21,14 @@
     android:persistent="false"
     android:title="@string/accessibility_display_inversion_preference_title">
 
-    <com.android.settingslib.widget.LayoutPreference
+    <com.android.settings.widget.VideoPreference
         android:key="color_inversion_preview"
-        android:layout="@layout/color_inversion_preview"
         android:persistent="false"
         android:selectable="false"
         android:title="@string/summary_placeholder"
-        settings:allowDividerAbove="true"
         settings:allowDividerBelow="true"
+        settings:animation="@raw/accessibility_color_inversion"
+        settings:controller="com.android.settings.widget.VideoPreferenceController"
         settings:searchable="false" />
 
 </PreferenceScreen>
diff --git a/res/xml/captioning_settings.xml b/res/xml/captioning_settings.xml
index 2a709f2..7ae93b9 100644
--- a/res/xml/captioning_settings.xml
+++ b/res/xml/captioning_settings.xml
@@ -21,11 +21,21 @@
     android:persistent="false"
     android:title="@string/accessibility_captioning_title">
 
+    <com.android.settingslib.widget.LayoutPreference
+        android:key="captions_preview"
+        android:layout="@layout/accessibility_captions_preview"
+        android:persistent="false"
+        android:selectable="false"
+        android:title="@string/summary_placeholder"
+        settings:allowDividerBelow="true"
+        settings:searchable="false" />
+
     <SwitchPreference
         android:key="captioning_preference_switch"
         android:persistent="false"
         android:summary="@string/accessibility_caption_master_switch_summary"
-        android:title="@string/accessibility_caption_master_switch_title" />
+        android:title="@string/accessibility_caption_master_switch_title"
+        settings:allowDividerAbove="true" />
 
     <Preference
         android:fragment="com.android.settings.accessibility.CaptionAppearanceFragment"
diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
index a0aa6db..4179ea3 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
@@ -68,11 +68,13 @@
 
         final int result = bm.canAuthenticate(authenticators);
 
-        if (result == BiometricManager.BIOMETRIC_SUCCESS
-                || result == BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE) {
-            Log.e(TAG, "Unexpected result: " + result);
-            finish();
-            return;
+        if (!WizardManagerHelper.isAnySetupWizard(getIntent())) {
+            if (result == BiometricManager.BIOMETRIC_SUCCESS
+                    || result == BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE) {
+                Log.e(TAG, "Unexpected result: " + result);
+                finish();
+                return;
+            }
         }
 
         if (authenticators == BiometricManager.Authenticators.DEVICE_CREDENTIAL) {
diff --git a/src/com/android/settings/biometrics/face/FaceSettings.java b/src/com/android/settings/biometrics/face/FaceSettings.java
index 08cfa70..c1ee545 100644
--- a/src/com/android/settings/biometrics/face/FaceSettings.java
+++ b/src/com/android/settings/biometrics/face/FaceSettings.java
@@ -336,7 +336,22 @@
                         keys.add(hasEnrolled ? PREF_KEY_ENROLL_FACE_UNLOCK
                                 : PREF_KEY_DELETE_FACE_DATA);
                     }
+
+                    if (!isAttentionSupported(context)) {
+                        keys.add(FaceSettingsAttentionPreferenceController.KEY);
+                    }
+
                     return keys;
                 }
+
+                private boolean isAttentionSupported(Context context) {
+                    FaceFeatureProvider featureProvider = FeatureFactory.getFactory(
+                            context).getFaceFeatureProvider();
+                    boolean isAttentionSupported = false;
+                    if (featureProvider != null) {
+                        isAttentionSupported = featureProvider.isAttentionSupported(context);
+                    }
+                    return isAttentionSupported;
+                }
             };
 }
diff --git a/src/com/android/settings/panel/MediaOutputGroupPanel.java b/src/com/android/settings/panel/MediaOutputGroupPanel.java
index 4a37c52..d98c0b1 100644
--- a/src/com/android/settings/panel/MediaOutputGroupPanel.java
+++ b/src/com/android/settings/panel/MediaOutputGroupPanel.java
@@ -148,7 +148,7 @@
     @Override
     public void onDeviceListUpdate(List<MediaDevice> devices) {
         if (mCallback != null) {
-            mCallback.onGroupChanged();
+            mCallback.onHeaderChanged();
         }
     }
 
diff --git a/src/com/android/settings/panel/MediaOutputPanel.java b/src/com/android/settings/panel/MediaOutputPanel.java
index 1145c42..2a9669a 100644
--- a/src/com/android/settings/panel/MediaOutputPanel.java
+++ b/src/com/android/settings/panel/MediaOutputPanel.java
@@ -82,20 +82,6 @@
     private MediaOutputPanel(Context context, String packageName) {
         mContext = context.getApplicationContext();
         mPackageName = TextUtils.isEmpty(packageName) ? "" : packageName;
-
-        if (!TextUtils.isEmpty(mPackageName)) {
-            mMediaSessionManager = mContext.getSystemService(MediaSessionManager.class);
-            for (MediaController controller : mMediaSessionManager.getActiveSessions(null)) {
-                if (TextUtils.equals(controller.getPackageName(), mPackageName)) {
-                    mMediaController = controller;
-                    break;
-                }
-            }
-        }
-
-        if (mMediaController == null) {
-            Log.e(TAG, "Unable to find " + mPackageName + " media controller");
-        }
     }
 
     @Override
@@ -228,6 +214,19 @@
 
     @OnLifecycleEvent(ON_START)
     public void onStart() {
+        if (!TextUtils.isEmpty(mPackageName)) {
+            mMediaSessionManager = mContext.getSystemService(MediaSessionManager.class);
+            for (MediaController controller : mMediaSessionManager.getActiveSessions(null)) {
+                if (TextUtils.equals(controller.getPackageName(), mPackageName)) {
+                    mMediaController = controller;
+                    mMediaController.registerCallback(mCb);
+                    break;
+                }
+            }
+        }
+        if (mMediaController == null) {
+            Log.d(TAG, "No media controller for " + mPackageName);
+        }
         if (mLocalMediaManager == null) {
             mLocalMediaManager = new LocalMediaManager(mContext, mPackageName, null);
         }
@@ -237,6 +236,9 @@
 
     @OnLifecycleEvent(ON_STOP)
     public void onStop() {
+        if (mMediaController != null) {
+            mMediaController.unregisterCallback(mCb);
+        }
         mLocalMediaManager.unregisterCallback(this);
         mLocalMediaManager.stopScan();
     }
@@ -245,4 +247,13 @@
     public int getViewType() {
         return PanelContent.VIEW_TYPE_SLIDER;
     }
+
+    private final MediaController.Callback mCb = new MediaController.Callback() {
+        @Override
+        public void onMetadataChanged(MediaMetadata metadata) {
+            if (mCallback != null) {
+                mCallback.onHeaderChanged();
+            }
+        }
+    };
 }
diff --git a/src/com/android/settings/panel/PanelContentCallback.java b/src/com/android/settings/panel/PanelContentCallback.java
index ce8ea22..989082f 100644
--- a/src/com/android/settings/panel/PanelContentCallback.java
+++ b/src/com/android/settings/panel/PanelContentCallback.java
@@ -28,8 +28,8 @@
     void onCustomizedButtonStateChanged();
 
     /**
-     * It will be called when group content is changed. For example, to add/remove a device into
+     * It will be called when header content is changed. For example, to add/remove a device into
      * a group
      */
-    void onGroupChanged();
+    void onHeaderChanged();
 }
diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java
index 30cc2a8..ed5c755 100644
--- a/src/com/android/settings/panel/PanelFragment.java
+++ b/src/com/android/settings/panel/PanelFragment.java
@@ -426,8 +426,10 @@
         }
 
         @Override
-        public void onGroupChanged() {
+        public void onHeaderChanged() {
             ThreadUtils.postOnMainThread(() -> {
+                mTitleIcon.setImageIcon(mPanel.getIcon().toIcon(getContext()));
+                mHeaderTitle.setText(mPanel.getTitle());
                 mHeaderSubtitle.setText(mPanel.getSubTitle());
             });
         }
diff --git a/tests/robotests/src/com/android/settings/panel/FakePanelContent.java b/tests/robotests/src/com/android/settings/panel/FakePanelContent.java
index 4d91f52..bf2ac0d 100644
--- a/tests/robotests/src/com/android/settings/panel/FakePanelContent.java
+++ b/tests/robotests/src/com/android/settings/panel/FakePanelContent.java
@@ -42,6 +42,7 @@
 
     public static final Intent INTENT = new Intent();
 
+    private CharSequence mTitle = TITLE;
     private CharSequence mSubTitle;
     private IconCompat mIcon;
     private int mViewType;
@@ -51,22 +52,26 @@
         return mIcon;
     }
 
+    public void setIcon(IconCompat icon) {
+        mIcon = icon;
+    }
+
     @Override
     public CharSequence getSubTitle() {
         return mSubTitle;
     }
 
-    public void setIcon(IconCompat icon) {
-        mIcon = icon;
-    }
-
     public void setSubTitle(CharSequence subTitle) {
         mSubTitle = subTitle;
     }
 
     @Override
     public CharSequence getTitle() {
-        return TITLE;
+        return mTitle;
+    }
+
+    public void setTitle(CharSequence title) {
+        mTitle = title;
     }
 
     @Override
diff --git a/tests/robotests/src/com/android/settings/panel/MediaOutputPanelTest.java b/tests/robotests/src/com/android/settings/panel/MediaOutputPanelTest.java
index b95c9d0..07f01fc 100644
--- a/tests/robotests/src/com/android/settings/panel/MediaOutputPanelTest.java
+++ b/tests/robotests/src/com/android/settings/panel/MediaOutputPanelTest.java
@@ -41,6 +41,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
@@ -62,7 +63,6 @@
     private MediaController mMediaController;
     @Mock
     private MediaMetadata mMediaMetadata;
-
     @Mock
     private LocalMediaManager mLocalMediaManager;
     @Mock
@@ -71,6 +71,8 @@
     private MediaOutputPanel mPanel;
     private Context mContext;
     private List<MediaController> mMediaControllers = new ArrayList<>();
+    private ArgumentCaptor<MediaController.Callback> mControllerCbs =
+            ArgumentCaptor.forClass(MediaController.Callback.class);
 
     @Before
     public void setUp() {
@@ -112,6 +114,7 @@
     public void onStart_shouldRegisterCallback() {
         mPanel.onStart();
 
+        verify(mMediaController).registerCallback(any());
         verify(mLocalMediaManager).registerCallback(any());
         verify(mLocalMediaManager).startScan();
     }
@@ -167,6 +170,7 @@
 
     @Test
     public void getTitle_withMetadata_returnArtistName() {
+        mPanel.onStart();
         when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST)).thenReturn(TEST_ARTIST);
         when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
 
@@ -201,6 +205,7 @@
 
     @Test
     public void getSubTitle_withMetadata_returnAlbumName() {
+        mPanel.onStart();
         when(mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ALBUM)).thenReturn(TEST_ALBUM);
         when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
 
@@ -243,4 +248,15 @@
 
         verify(mLocalMediaManager).releaseSession();
     }
+
+    @Test
+    public void onMetadataChanged_verifyCallOnHeaderChanged() {
+        mPanel.onStart();
+        verify(mMediaController).registerCallback(mControllerCbs.capture());
+        final MediaController.Callback controllerCallbacks = mControllerCbs.getValue();
+
+        controllerCallbacks.onMetadataChanged(mMediaMetadata);
+
+        verify(mCallback).onHeaderChanged();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java b/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java
index 1976557..07ca48b 100644
--- a/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java
@@ -41,6 +41,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
@@ -51,7 +52,10 @@
 @RunWith(RobolectricTestRunner.class)
 public class PanelFragmentTest {
 
+    private static final String TITLE = "title";
+    private static final String TITLE2 = "title2";
     private static final String SUBTITLE = "subtitle";
+    private static final String SUBTITLE2 = "subtitle2";
 
     private Context mContext;
     private PanelFragment mPanelFragment;
@@ -59,6 +63,8 @@
     private FakeFeatureFactory mFakeFeatureFactory;
     private PanelFeatureProvider mPanelFeatureProvider;
     private FakePanelContent mFakePanelContent;
+    private ArgumentCaptor<PanelContentCallback> mPanelContentCbs = ArgumentCaptor.forClass(
+            PanelContentCallback.class);
 
     private final String FAKE_EXTRA = "fake_extra";
 
@@ -69,9 +75,11 @@
         mPanelFeatureProvider = spy(new PanelFeatureProviderImpl());
         mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
         mFakeFeatureFactory.panelFeatureProvider = mPanelFeatureProvider;
-        mFakePanelContent = new FakePanelContent();
+        mFakePanelContent = spy(new FakePanelContent());
         doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any());
+    }
 
+    private void initFakeActivity() {
         mActivity = spy(Robolectric.buildActivity(FakeSettingsPanelActivity.class).setup().get());
 
         mPanelFragment =
@@ -86,6 +94,7 @@
 
     @Test
     public void onCreateView_countdownLatch_setup() {
+        initFakeActivity();
         mPanelFragment.onCreateView(LayoutInflater.from(mContext),
                 new LinearLayout(mContext), null);
         PanelSlicesLoaderCountdownLatch countdownLatch =
@@ -99,6 +108,7 @@
 
     @Test
     public void onCreate_logsOpenEvent() {
+        initFakeActivity();
         verify(mFakeFeatureFactory.metricsFeatureProvider).action(
                 0,
                 SettingsEnums.PAGE_VISIBLE,
@@ -109,6 +119,7 @@
 
     @Test
     public void onDestroy_logCloseEvent() {
+        initFakeActivity();
         mPanelFragment.onDestroyView();
         verify(mFakeFeatureFactory.metricsFeatureProvider).action(
                 0,
@@ -120,6 +131,7 @@
 
     @Test
     public void panelSeeMoreClick_logsCloseEvent() {
+        initFakeActivity();
         final View.OnClickListener listener = mPanelFragment.getSeeMoreListener();
         listener.onClick(null);
         verify(mActivity).finish();
@@ -136,6 +148,7 @@
 
     @Test
     public void panelDoneClick_logsCloseEvent() {
+        initFakeActivity();
         final View.OnClickListener listener = mPanelFragment.getCloseListener();
         listener.onClick(null);
         verify(mActivity).finish();
@@ -178,10 +191,49 @@
 
     @Test
     public void notSupportIcon_displayDefaultHeaderLayout() {
-        final View titleView = mPanelFragment.mLayoutView.findViewById(R.id.panel_title);
-        final View panelHeader = mPanelFragment.mLayoutView.findViewById(R.id.panel_header);
+        final ActivityController<FakeSettingsPanelActivity> activityController =
+                Robolectric.buildActivity(FakeSettingsPanelActivity.class);
+        activityController.setup();
+        final PanelFragment panelFragment = (PanelFragment)
+                Objects.requireNonNull(activityController
+                        .get()
+                        .getSupportFragmentManager()
+                        .findFragmentById(R.id.main_content));
+
+        final View titleView = panelFragment.mLayoutView.findViewById(R.id.panel_title);
+        final View panelHeader = panelFragment.mLayoutView.findViewById(R.id.panel_header);
 
         assertThat(panelHeader.getVisibility()).isEqualTo(View.GONE);
         assertThat(titleView.getVisibility()).isEqualTo(View.VISIBLE);
     }
+
+    @Test
+    public void onHeaderChanged_updateHeader_verifyTitle() {
+        mFakePanelContent.setIcon(IconCompat.createWithResource(mContext, R.drawable.ic_android));
+        mFakePanelContent.setTitle(TITLE);
+        mFakePanelContent.setSubTitle(SUBTITLE);
+        final ActivityController<FakeSettingsPanelActivity> activityController =
+                Robolectric.buildActivity(FakeSettingsPanelActivity.class);
+        activityController.setup();
+        final PanelFragment panelFragment = (PanelFragment)
+                Objects.requireNonNull(activityController
+                        .get()
+                        .getSupportFragmentManager()
+                        .findFragmentById(R.id.main_content));
+        final TextView headerTitle = panelFragment.mLayoutView.findViewById(R.id.header_title);
+        final TextView headerSubtitle = panelFragment.mLayoutView.findViewById(
+                R.id.header_subtitle);
+
+        assertThat(headerTitle.getText()).isEqualTo(TITLE);
+        assertThat(headerSubtitle.getText()).isEqualTo(SUBTITLE);
+
+        mFakePanelContent.setTitle(TITLE2);
+        mFakePanelContent.setSubTitle(SUBTITLE2);
+        verify(mFakePanelContent).registerCallback(mPanelContentCbs.capture());
+        final PanelContentCallback panelContentCallbacks = mPanelContentCbs.getValue();
+        panelContentCallbacks.onHeaderChanged();
+
+        assertThat(headerTitle.getText()).isEqualTo(TITLE2);
+        assertThat(headerSubtitle.getText()).isEqualTo(SUBTITLE2);
+    }
 }
\ No newline at end of file