Fix 2385283: Add DevicePolicyManager calls to LockScreen.
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 4a8b543..2d36f03 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -78,10 +78,16 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        mLockPatternUtils = new LockPatternUtils(getContentResolver());
-        mRequestedMode = getIntent().getIntExtra("password_mode", mRequestedMode);
-        mPasswordMinLength = getIntent().getIntExtra("password_min_length", mPasswordMinLength);
-        mPasswordMaxLength = getIntent().getIntExtra("password_max_length", mPasswordMaxLength);
+        mLockPatternUtils = new LockPatternUtils(this);
+        if (mLockPatternUtils.isDevicePolicyActive()) {
+            mRequestedMode = mLockPatternUtils.getRequestedPasswordMode();
+            mPasswordMinLength = mLockPatternUtils.getRequestedMinimumPasswordLength();
+        } else {
+            mRequestedMode = getIntent().getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY,
+                    mRequestedMode);
+            mPasswordMinLength = getIntent().getIntExtra(PASSWORD_MIN_KEY, mPasswordMinLength);
+        }
+        mPasswordMaxLength = getIntent().getIntExtra(PASSWORD_MAX_KEY, mPasswordMaxLength);
         initViews();
         mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this);
         if (savedInstanceState == null) {
@@ -91,19 +97,22 @@
     }
 
     private void initViews() {
-        if (LockPatternUtils.MODE_PIN == mRequestedMode
-                || LockPatternUtils.MODE_PASSWORD == mRequestedMode) {
-            setContentView(R.layout.choose_lock_pin);
-            // TODO: alphanumeric layout
-            // setContentView(R.layout.choose_lock_password);
-            for (int i = 0; i < digitIds.length; i++) {
-                Button button = (Button) findViewById(digitIds[i]);
-                button.setOnClickListener(this);
-                button.setText(Integer.toString(i));
-            }
-            findViewById(R.id.ok).setOnClickListener(this);
-            findViewById(R.id.cancel).setOnClickListener(this);
+        switch(mRequestedMode) {
+            case LockPatternUtils.MODE_PIN:
+            case LockPatternUtils.MODE_PASSWORD:
+            case LockPatternUtils.MODE_PATTERN:
+                setContentView(R.layout.choose_lock_pin);
+                // TODO: alphanumeric layout
+                // setContentView(R.layout.choose_lock_password);
+                for (int i = 0; i < digitIds.length; i++) {
+                    Button button = (Button) findViewById(digitIds[i]);
+                    button.setOnClickListener(this);
+                    button.setText(Integer.toString(i));
+                }
+                break;
         }
+        findViewById(R.id.ok).setOnClickListener(this);
+        findViewById(R.id.cancel).setOnClickListener(this);
         findViewById(R.id.backspace).setOnClickListener(this);
         mPasswordTextView = (TextView) findViewById(R.id.pinDisplay);
         mHeaderText = (TextView) findViewById(R.id.headerText);
@@ -179,8 +188,6 @@
                             // TODO: move these to LockPatternUtils
                             mLockPatternUtils.setLockPatternEnabled(false);
                             mLockPatternUtils.saveLockPattern(null);
-
-
                             mLockPatternUtils.saveLockPassword(pin);
                             finish();
                         } else {
diff --git a/src/com/android/settings/ChooseLockPatternTutorial.java b/src/com/android/settings/ChooseLockPatternTutorial.java
index 6e92ca8..757dc40 100644
--- a/src/com/android/settings/ChooseLockPatternTutorial.java
+++ b/src/com/android/settings/ChooseLockPatternTutorial.java
@@ -25,15 +25,15 @@
 
 public class ChooseLockPatternTutorial extends Activity implements View.OnClickListener {
     private static final int REQUESTCODE_EXAMPLE = 1;
-    
+
     private View mNextButton;
     private View mSkipButton;
-    
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         // Don't show the tutorial if the user has seen it before.
-        LockPatternUtils lockPatternUtils = new LockPatternUtils(getContentResolver());
+        LockPatternUtils lockPatternUtils = new LockPatternUtils(this);
         if (savedInstanceState == null && lockPatternUtils.isPatternEverChosen()) {
             Intent intent = new Intent();
             intent.setClassName("com.android.settings", "com.android.settings.ChooseLockPattern");
@@ -43,7 +43,7 @@
             initViews();
         }
     }
-    
+
     private void initViews() {
         setContentView(R.layout.choose_lock_pattern_tutorial);
         mNextButton = findViewById(R.id.next_button);
@@ -70,6 +70,6 @@
             finish();
         }
     }
-    
+
 }
 
diff --git a/src/com/android/settings/ChooseLockSettingsHelper.java b/src/com/android/settings/ChooseLockSettingsHelper.java
index ab2f8c0..3697b28e 100644
--- a/src/com/android/settings/ChooseLockSettingsHelper.java
+++ b/src/com/android/settings/ChooseLockSettingsHelper.java
@@ -27,7 +27,7 @@
 
     public ChooseLockSettingsHelper(Activity activity) {
         mActivity = activity;
-        mLockPatternUtils = new LockPatternUtils(activity.getContentResolver());
+        mLockPatternUtils = new LockPatternUtils(activity);
     }
 
     public LockPatternUtils utils() {
diff --git a/src/com/android/settings/ConfirmLockPassword.java b/src/com/android/settings/ConfirmLockPassword.java
index 0cbc158..5308f88 100644
--- a/src/com/android/settings/ConfirmLockPassword.java
+++ b/src/com/android/settings/ConfirmLockPassword.java
@@ -39,7 +39,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        mLockPatternUtils = new LockPatternUtils(getContentResolver());
+        mLockPatternUtils = new LockPatternUtils(this);
         initViews();
     }
 
diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/ConfirmLockPattern.java
index a91b45f..eb9a4d8 100644
--- a/src/com/android/settings/ConfirmLockPattern.java
+++ b/src/com/android/settings/ConfirmLockPattern.java
@@ -80,7 +80,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        mLockPatternUtils = new LockPatternUtils(getContentResolver());
+        mLockPatternUtils = new LockPatternUtils(this);
 
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.confirm_lock_pattern);
@@ -94,7 +94,7 @@
         final LinearLayoutWithDefaultTouchRecepient topLayout
                 = (LinearLayoutWithDefaultTouchRecepient) findViewById(
                 R.id.topLayout);
-        topLayout.setDefaultTouchRecepient(mLockPatternView);        
+        topLayout.setDefaultTouchRecepient(mLockPatternView);
 
         Intent intent = getIntent();
         if (intent != null) {
@@ -161,7 +161,7 @@
                 } else {
                     mFooterTextView.setText(R.string.lockpattern_need_to_unlock_footer);
                 }
-                
+
                 mLockPatternView.setEnabled(true);
                 mLockPatternView.enableInput();
                 break;
@@ -176,7 +176,7 @@
                 } else {
                     mFooterTextView.setText(R.string.lockpattern_need_to_unlock_wrong_footer);
                 }
-                
+
                 mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong);
                 mLockPatternView.setEnabled(true);
                 mLockPatternView.enableInput();
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index fd4a411..d33e1e8 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -53,7 +53,7 @@
     private View mFinalView;
     private Button mFinalButton;
 
-    /** 
+    /**
      * The user has gone through the multiple confirmation, so now we go ahead
      * and invoke the Checkin Service to reset the device to its factory-default
      * state (rebooting in the process).
@@ -65,7 +65,7 @@
                     return;
                 }
 
-                ICheckinService service = 
+                ICheckinService service =
                         ICheckinService.Stub.asInterface(ServiceManager.getService("checkin"));
                 if (service != null) {
                     try {
@@ -159,7 +159,7 @@
      * click in order to initiate a confirmation sequence.  This method is
      * called from various other points in the code to reset the activity to
      * this base state.
-     * 
+     *
      * <p>Reinflating views from resources is expensive and prevents us from
      * caching widget pointers, so we use a single-inflate pattern:  we lazy-
      * inflate each view, caching all of the widget pointers we'll need at the
@@ -184,7 +184,7 @@
         mInitialView = null;
         mFinalView = null;
         mInflater = LayoutInflater.from(this);
-        mLockUtils = new LockPatternUtils(getContentResolver());
+        mLockUtils = new LockPatternUtils(this);
 
         establishInitialState();
     }
diff --git a/src/com/android/settings/MediaFormat.java b/src/com/android/settings/MediaFormat.java
index e414569..40ae0d7 100644
--- a/src/com/android/settings/MediaFormat.java
+++ b/src/com/android/settings/MediaFormat.java
@@ -147,7 +147,7 @@
      * click in order to initiate a confirmation sequence.  This method is
      * called from various other points in the code to reset the activity to
      * this base state.
-     * 
+     *
      * <p>Reinflating views from resources is expensive and prevents us from
      * caching widget pointers, so we use a single-inflate pattern:  we lazy-
      * inflate each view, caching all of the widget pointers we'll need at the
@@ -172,7 +172,7 @@
         mInitialView = null;
         mFinalView = null;
         mInflater = LayoutInflater.from(this);
-        mLockUtils = new LockPatternUtils(getContentResolver());
+        mLockUtils = new LockPatternUtils(this);
 
         establishInitialState();
     }
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 6564e3e..d4f721c 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -89,6 +89,10 @@
     private static final String LOCATION_GPS = "location_gps";
     private static final String ASSISTED_GPS = "assisted_gps";
 
+    // Default password lengths if device policy isn't in effect. Ignored otherwise.
+    private static final int PASSWORD_MIN_LENGTH = 4;
+    private static final int PASSWORD_MAX_LENGTH = 16;
+
     // Credential storage
     private CredentialStorage mCredentialStorage = new CredentialStorage();
 
@@ -217,14 +221,12 @@
         if ("none".equals(value)) {
             mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST);
         } else if ("password".equals(value) || "pin".equals(value)) {
-            final int minLength = 4; // TODO: get from policy store.
-            final int maxLength = 16;
             final int mode = "password".equals(value)
                     ? LockPatternUtils.MODE_PASSWORD : LockPatternUtils.MODE_PIN;
             Intent intent = new Intent().setClassName(PACKAGE, CHOOSE_LOCK_PIN);
             intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, mode);
-            intent.putExtra(ChooseLockPassword.PASSWORD_MIN_KEY, minLength);
-            intent.putExtra(ChooseLockPassword.PASSWORD_MAX_KEY, maxLength);
+            intent.putExtra(ChooseLockPassword.PASSWORD_MIN_KEY, PASSWORD_MIN_LENGTH);
+            intent.putExtra(ChooseLockPassword.PASSWORD_MAX_KEY, PASSWORD_MAX_LENGTH);
             startActivityForResult(intent, UPDATE_PASSWORD_REQUEST);
         } else if ("pattern".equals(value)) {
             boolean showTutorial = !lockPatternUtils.isPatternEverChosen();