diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 71cc520..67d0276 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -956,8 +956,6 @@
         <activity android:name="ChooseLockPassword" android:exported="false"
             android:windowSoftInputMode="stateVisible|adjustResize"/>
 
-        <activity android:name="ChooseLockPatternTutorial" android:exported="false"/>
-
         <!-- Runs in the phone process since it needs access to the Phone object -->
         <activity android:name=".deviceinfo.Status"
                 android:label="@string/device_status_activity_title"
diff --git a/res/layout-land/choose_lock_pattern_tutorial.xml b/res/layout-land/choose_lock_pattern_tutorial.xml
deleted file mode 100644
index 362853b..0000000
--- a/res/layout-land/choose_lock_pattern_tutorial.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.android.internal.widget.LinearLayoutWithDefaultTouchRecepient
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/topLayout"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <!-- Top: pattern and information -->
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dip"
-        android:layout_weight="1"
-        android:orientation="horizontal">
-
-        <!-- left side: lock pattern. Given the square aspect, this will be the smaller of the
-             two dimensions (height) -->
-        <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
-             android:layout_width="match_parent"
-             android:layout_height="match_parent"/>
-
-        <!-- right side: instructions and buttons -->
-        <!-- header message -->
-        <ScrollView
-            android:layout_width="0dip"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:layout_marginStart="25dip">
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:padding="5dip">
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:gravity="center_horizontal"
-                    android:text="@string/lock_title"
-                    android:paddingBottom="10dip"
-                    style="?android:attr/textAppearanceLarge"
-                />
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:textAppearance="?android:attr/textAppearanceMedium"
-                    android:textSize="18sp"
-                    android:text="@string/lock_intro_message"
-                />
-
-            </LinearLayout>
-
-        </ScrollView>
-
-    </LinearLayout>
-
-    <!-- Bottom: cancel/next buttons -->
-    <LinearLayout
-        style="@style/SecurityPreferenceButtonContainer"
-        android:orientation="horizontal">
-
-        <!-- left / top button: skip, or re-try -->
-        <Button android:id="@+id/skip_button"
-            style="@style/SecurityPreferenceButton"
-            android:text="@string/lockpattern_tutorial_cancel_label"/>
-
-        <!-- right / bottom button: confirm or ok -->
-        <Button android:id="@+id/next_button"
-            style="@style/SecurityPreferenceButton"
-            android:text="@string/lockpattern_tutorial_continue_label"/>
-
-    </LinearLayout>
-
-</com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
-
diff --git a/res/layout-sw600dp-land/choose_lock_pattern_tutorial.xml b/res/layout-sw600dp-land/choose_lock_pattern_tutorial.xml
deleted file mode 100644
index 00ef039..0000000
--- a/res/layout-sw600dp-land/choose_lock_pattern_tutorial.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.android.internal.widget.LinearLayoutWithDefaultTouchRecepient
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/topLayout"
-    android:orientation="horizontal"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <!-- left side: lock pattern example widget -->
-    <RelativeLayout
-        android:layout_width="0dip"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:gravity="center_horizontal|center_vertical"
-        android:orientation="horizontal">
-
-        <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
-             android:layout_width="354dip"
-             android:layout_height="354dip"
-             aspect="square"/>
-
-     </RelativeLayout>
-
-    <!-- right side: instructions and buttons -->
-    <RelativeLayout
-        android:layout_width="0dip"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:gravity="center_horizontal">
-
-        <!-- navigation buttons -->
-        <LinearLayout android:id="@+id/buttonContainer"
-            style="@style/SecurityPreferenceButtonContainer"
-            android:layout_alignParentEnd="true"
-            android:layout_alignParentBottom="true"
-            android:orientation="horizontal">
-
-            <!-- left / top button: skip, or re-try -->
-            <Button android:id="@+id/skip_button"
-                style="@style/SecurityPreferenceButton"
-                android:text="@string/lockpattern_tutorial_cancel_label"/>
-
-            <!-- right / bottom button: confirm or ok -->
-            <Button android:id="@+id/next_button"
-                style="@style/SecurityPreferenceButton"
-                android:text="@string/lockpattern_tutorial_continue_label"/>
-
-        </LinearLayout>
-
-        <!-- header message -->
-        <ScrollView
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_alignParentTop="true"
-            android:layout_marginTop="20dip"
-            android:layout_marginStart="20dip"
-            android:gravity="center_vertical|center_horizontal"
-            android:layout_above="@id/buttonContainer">
-
-            <TextView android:id="@+id/headerText"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/lock_intro_message"
-                android:textAppearance="?android:attr/textAppearanceLarge"/>
-
-        </ScrollView>
-
-    </RelativeLayout>>
-
-</com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
-
diff --git a/res/layout-sw600dp/choose_lock_pattern_tutorial.xml b/res/layout-sw600dp/choose_lock_pattern_tutorial.xml
deleted file mode 100644
index e0221bf..0000000
--- a/res/layout-sw600dp/choose_lock_pattern_tutorial.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.android.internal.widget.LinearLayoutWithDefaultTouchRecepient
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/topLayout"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:gravity="center_horizontal">
-
-    <!-- top: instructions and buttons -->
-    <!-- header message -->
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="96dip">
-
-        <TextView android:id="@+id/headerText"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceLarge"
-            android:text="@string/lock_intro_message"/>
-
-    </ScrollView>
-
-    <!-- bottom: lock pattern -->
-    <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
-         android:layout_width="354dip"
-         android:layout_height="354dip"
-         android:layout_marginTop="80dip"
-         aspect="square"/>
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0dip"
-        android:layout_weight="1"/>
-
-    <RelativeLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <LinearLayout
-            style="@style/SecurityPreferenceButtonContainer"
-            android:layout_alignParentEnd="true"
-            android:orientation="horizontal">
-
-            <!-- left / top button: skip, or re-try -->
-            <Button android:id="@+id/skip_button"
-                style="@style/SecurityPreferenceButton"
-                android:text="@string/lockpattern_tutorial_cancel_label"/>
-
-            <!-- right / bottom button: confirm or ok -->
-            <Button android:id="@+id/next_button"
-                style="@style/SecurityPreferenceButton"
-                android:text="@string/lockpattern_tutorial_continue_label"/>
-
-        </LinearLayout>
-
-    </RelativeLayout>
-
-</com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
diff --git a/res/layout/choose_lock_pattern_tutorial.xml b/res/layout/choose_lock_pattern_tutorial.xml
deleted file mode 100644
index 8514550..0000000
--- a/res/layout/choose_lock_pattern_tutorial.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_height="match_parent"
-    android:layout_width="match_parent"
-    android:gravity="center_horizontal">
-
-    <!-- top: instructions and buttons -->
-    <!-- header message -->
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="0dip"
-        android:layout_weight="1">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:padding="5dip">
-
-            <!-- Top: instructions -->
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center_horizontal"
-                android:text="@string/lock_title"
-                android:paddingBottom="10dip"
-                style="?android:attr/textAppearanceLarge"
-                android:visibility="visible"
-            />
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:text="@string/lock_intro_message"
-            />
-
-            <!-- bottom: lock pattern -->
-            <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
-                 android:layout_width="200dip"
-                 android:layout_height="200dip"
-                 android:layout_marginTop="10dip"
-                 android:layout_gravity="start"/>
-
-        </LinearLayout>
-
-    </ScrollView>
-
-    <LinearLayout
-        style="@style/SecurityPreferenceButtonContainer"
-        android:orientation="horizontal">
-
-        <!-- left / top button: skip, or re-try -->
-        <Button android:id="@+id/skip_button"
-            style="@style/SecurityPreferenceButton"
-            android:text="@string/lockpattern_tutorial_cancel_label"/>
-
-        <!-- right / bottom button: confirm or ok -->
-        <Button android:id="@+id/next_button"
-            style="@style/SecurityPreferenceButton"
-            android:text="@string/lockpattern_tutorial_continue_label"/>
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 97f2af3..58ea839 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2432,24 +2432,6 @@
     <!-- Displayed when user launches a widget configuration activity that was uninstalled -->
     <string name="activity_not_found">Application is not installed on your phone.</string>
 
-    <!-- ChooseLockPatternTutorial --> <skip />
-    <!-- ChooseLockPatternTutorial, button labels: This is to cancel the tutorial -->
-    <string name="skip_button_label">Cancel</string>
-    <!-- ChooseLockPatternTutorial, button labels: Continue to the next page of the tutorial -->
-    <string name="next_button_label">Next</string>
-    <!-- ChooseLockPatternTutorial, tutorial screen title -->
-    <string name="lock_title" product="tablet">Securing your tablet</string>
-    <!-- ChooseLockPatternTutorial, tutorial screen title -->
-    <string name="lock_title" product="default">Securing your phone</string>
-    <!-- ChooseLockPatternTutorial, tutorial screen text -->
-    <string name="lock_intro_message" product="tablet">Protect your tablet from unauthorized use by creating a personal screen unlock pattern. Slide your finger to connect the dots in any order on the next screen.  You need to connect at least four dots.
-        \n\nReady to start? Touch Next.
-    </string>
-    <!-- ChooseLockPatternTutorial, tutorial screen text -->
-    <string name="lock_intro_message" product="default">Protect your phone from unauthorized use by creating a personal screen unlock pattern. Slide your finger to connect at least four dots in any order on the next screen.
-        \n\nReady to start? Touch Next.
-    </string>
-
     <!-- Applications Settings --> <skip />
     <!-- Applications settings screen, setting option name for the user to go to the screen to manage installed applications  -->
     <string name="manageapplications_settings_title">Manage apps</string>
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 6854305..14671d1 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -383,11 +383,7 @@
                     startActivity(intent);
                 }
             } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) {
-                boolean showTutorial = !mChooseLockSettingsHelper.utils().isPatternEverChosen();
-                Intent intent = new Intent();
-                intent.setClass(getActivity(), showTutorial
-                        ? ChooseLockPatternTutorial.class
-                        : ChooseLockPattern.class);
+                Intent intent = new Intent(getActivity(), ChooseLockPattern.class);
                 intent.putExtra("key_lock_method", "pattern");
                 intent.putExtra(CONFIRM_CREDENTIALS, false);
                 intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK,
diff --git a/src/com/android/settings/ChooseLockPatternTutorial.java b/src/com/android/settings/ChooseLockPatternTutorial.java
deleted file mode 100644
index 5dbd616..0000000
--- a/src/com/android/settings/ChooseLockPatternTutorial.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2008 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;
-
-import java.util.ArrayList;
-
-import com.android.internal.widget.LockPatternUtils;
-import com.android.internal.widget.LockPatternView;
-
-import android.app.Fragment;
-import android.content.Intent;
-import android.os.Bundle;
-import android.preference.PreferenceActivity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-public class ChooseLockPatternTutorial extends PreferenceActivity {
-
-    // required constructor for fragments
-    public ChooseLockPatternTutorial() {
-
-    }
-
-    @Override
-    public Intent getIntent() {
-        Intent modIntent = new Intent(super.getIntent());
-        modIntent.putExtra(EXTRA_SHOW_FRAGMENT, ChooseLockPatternTutorialFragment.class.getName());
-        modIntent.putExtra(EXTRA_NO_HEADERS, true);
-        return modIntent;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        CharSequence msg = getText(R.string.lockpassword_choose_your_pattern_header);
-        showBreadCrumbs(msg, msg);
-    }
-
-    public static class ChooseLockPatternTutorialFragment extends Fragment
-            implements View.OnClickListener {
-        private View mNextButton;
-        private View mSkipButton;
-        private LockPatternView mPatternView;
-
-        @Override
-        public void onCreate(Bundle savedInstanceState) {
-            super.onCreate(savedInstanceState);
-            // Don't show the tutorial if the user has seen it before.
-            LockPatternUtils lockPatternUtils = new LockPatternUtils(getActivity());
-            if (savedInstanceState == null && lockPatternUtils.isPatternEverChosen()) {
-                Intent intent = new Intent(getActivity(), ChooseLockPattern.class);
-                intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
-                intent.putExtra("confirm_credentials", false);
-                final boolean isFallback = getActivity().getIntent()
-                    .getBooleanExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false);
-                intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK,
-                                isFallback);
-                startActivity(intent);
-                getActivity().finish();
-            }
-        }
-
-        @Override
-        public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                Bundle savedInstanceState) {
-            View view = inflater.inflate(R.layout.choose_lock_pattern_tutorial, null);
-            mNextButton = view.findViewById(R.id.next_button);
-            mNextButton.setOnClickListener(this);
-            mSkipButton = view.findViewById(R.id.skip_button);
-            mSkipButton.setOnClickListener(this);
-
-            // Set up LockPatternView to be a non-interactive demo animation
-            mPatternView = (LockPatternView) view.findViewById(R.id.lockPattern);
-            ArrayList<LockPatternView.Cell> demoPattern = new ArrayList<LockPatternView.Cell>();
-            demoPattern.add(LockPatternView.Cell.of(0,0));
-            demoPattern.add(LockPatternView.Cell.of(0,1));
-            demoPattern.add(LockPatternView.Cell.of(1,1));
-            demoPattern.add(LockPatternView.Cell.of(2,1));
-            mPatternView.setPattern(LockPatternView.DisplayMode.Animate, demoPattern);
-            mPatternView.disableInput();
-
-            return view;
-        }
-
-        public void onClick(View v) {
-            if (v == mSkipButton) {
-                // Canceling, so finish all
-                getActivity().setResult(ChooseLockPattern.RESULT_FINISHED);
-                getActivity().finish();
-            } else if (v == mNextButton) {
-                final boolean isFallback = getActivity().getIntent()
-                    .getBooleanExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false);
-                Intent intent = new Intent(getActivity(), ChooseLockPattern.class);
-                intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
-                intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK,
-                                isFallback);
-                startActivity(intent);
-                getActivity().overridePendingTransition(0, 0); // no animation
-                getActivity().finish();
-            }
-        }
-    }
-}
