Merge "[FRP] Shrink lock screen when keyboard pops up" into lmp-mr1-dev
diff --git a/src/com/android/settings/SetupChooseLockPassword.java b/src/com/android/settings/SetupChooseLockPassword.java
index 0c7e57f..4274205 100644
--- a/src/com/android/settings/SetupChooseLockPassword.java
+++ b/src/com/android/settings/SetupChooseLockPassword.java
@@ -26,6 +26,7 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowInsets;
 
 /**
  * Setup Wizard's version of ChooseLockPassword screen. It inherits the logic and basic structure
@@ -92,12 +93,15 @@
         }
     }
 
-    public static class SetupChooseLockPasswordFragment extends ChooseLockPasswordFragment {
+    public static class SetupChooseLockPasswordFragment extends ChooseLockPasswordFragment
+            implements View.OnApplyWindowInsetsListener {
 
         @Override
         public View onCreateView(LayoutInflater inflater, ViewGroup container,
                 Bundle savedInstanceState) {
             final View view = inflater.inflate(R.layout.setup_template, container, false);
+            View scrollView = view.findViewById(R.id.bottom_scroll_view);
+            scrollView.setOnApplyWindowInsetsListener(this);
             ViewGroup setupContent = (ViewGroup) view.findViewById(R.id.setup_content);
             inflater.inflate(R.layout.setup_choose_lock_password, setupContent, true);
             return view;
@@ -129,5 +133,20 @@
             SetupChooseLockPassword activity = (SetupChooseLockPassword) getActivity();
             activity.mNavigationBar.getNextButton().setText(text);
         }
+
+        @Override
+        public WindowInsets onApplyWindowInsets(View view, WindowInsets insets) {
+            SetupChooseLockPassword activity = (SetupChooseLockPassword) getActivity();
+            final int bottomMargin = Math.max(insets.getSystemWindowInsetBottom()
+                    - activity.mNavigationBar.getView().getHeight(), 0);
+            ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
+            lp.setMargins(lp.leftMargin, lp.topMargin, lp.rightMargin, bottomMargin);
+            view.setLayoutParams(lp);
+            return insets.replaceSystemWindowInsets(
+                    insets.getSystemWindowInsetLeft(),
+                    insets.getSystemWindowInsetTop(),
+                    insets.getSystemWindowInsetRight(),
+                    0 /* bottom */);
+        }
     }
 }