Fix the security related API change for PreferenceActivity

Bug: 10118761
Change-Id: I63501d6c2b5f561d7ab8b7362498665d805d5e1e
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsActivity.java b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsActivity.java
index c28d729..4366348 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsActivity.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsActivity.java
@@ -16,6 +16,8 @@
 
 package com.android.inputmethod.dictionarypack;
 
+import com.android.inputmethod.latin.utils.FragmentUtils;
+
 import android.content.Intent;
 import android.os.Bundle;
 import android.preference.PreferenceActivity;
@@ -45,6 +47,6 @@
     // TODO: Uncomment the override annotation once we start using SDK version 19.
     // @Override
     public boolean isValidFragment(String fragmentName) {
-        return fragmentName.equals(DEFAULT_FRAGMENT);
+        return FragmentUtils.isValidFragment(fragmentName);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/about/AboutPreferences.java b/java/src/com/android/inputmethod/latin/about/AboutPreferences.java
new file mode 100644
index 0000000..f60b189
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/about/AboutPreferences.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2013 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.inputmethod.latin.about;
+
+import android.app.Fragment;
+
+/**
+ * Dummy class of AboutPreferences. Never use this.
+ */
+public final class AboutPreferences extends Fragment {
+    private AboutPreferences() {
+        // Prevents this from being instantiated
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettingsActivity.java b/java/src/com/android/inputmethod/latin/settings/DebugSettingsActivity.java
index ef6ab2a..a23e377 100644
--- a/java/src/com/android/inputmethod/latin/settings/DebugSettingsActivity.java
+++ b/java/src/com/android/inputmethod/latin/settings/DebugSettingsActivity.java
@@ -21,6 +21,7 @@
 import android.preference.PreferenceActivity;
 
 import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.utils.FragmentUtils;
 
 public final class DebugSettingsActivity extends PreferenceActivity {
     private static final String DEFAULT_FRAGMENT = DebugSettings.class.getName();
@@ -42,6 +43,6 @@
     // TODO: Uncomment the override annotation once we start using SDK version 19.
     // @Override
     public boolean isValidFragment(String fragmentName) {
-        return fragmentName.equals(DEFAULT_FRAGMENT);
+        return FragmentUtils.isValidFragment(fragmentName);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java b/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java
index ad68f8c..c899507 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java
@@ -16,6 +16,8 @@
 
 package com.android.inputmethod.latin.settings;
 
+import com.android.inputmethod.latin.utils.FragmentUtils;
+
 import android.content.Intent;
 import android.preference.PreferenceActivity;
 
@@ -36,6 +38,6 @@
     // TODO: Uncomment the override annotation once we start using SDK version 19.
     // @Override
     public boolean isValidFragment(String fragmentName) {
-        return fragmentName.equals(DEFAULT_FRAGMENT);
+        return FragmentUtils.isValidFragment(fragmentName);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsActivity.java b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsActivity.java
index aba5637..df9a761 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsActivity.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsActivity.java
@@ -16,6 +16,8 @@
 
 package com.android.inputmethod.latin.spellcheck;
 
+import com.android.inputmethod.latin.utils.FragmentUtils;
+
 import android.content.Intent;
 import android.os.Bundle;
 import android.preference.PreferenceActivity;
@@ -42,6 +44,6 @@
     // TODO: Uncomment the override annotation once we start using SDK version 19.
     // @Override
     public boolean isValidFragment(String fragmentName) {
-        return fragmentName.equals(DEFAULT_FRAGMENT);
+        return FragmentUtils.isValidFragment(fragmentName);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/FragmentUtils.java b/java/src/com/android/inputmethod/latin/utils/FragmentUtils.java
new file mode 100644
index 0000000..ee2b97b
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/FragmentUtils.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2013 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.inputmethod.latin.utils;
+
+import com.android.inputmethod.dictionarypack.DictionarySettingsFragment;
+import com.android.inputmethod.latin.about.AboutPreferences;
+import com.android.inputmethod.latin.settings.AdditionalSubtypeSettings;
+import com.android.inputmethod.latin.settings.DebugSettings;
+import com.android.inputmethod.latin.settings.SettingsFragment;
+import com.android.inputmethod.latin.spellcheck.SpellCheckerSettingsFragment;
+import com.android.inputmethod.latin.userdictionary.UserDictionaryAddWordFragment;
+import com.android.inputmethod.latin.userdictionary.UserDictionaryList;
+import com.android.inputmethod.latin.userdictionary.UserDictionaryLocalePicker;
+import com.android.inputmethod.latin.userdictionary.UserDictionarySettings;
+import com.android.inputmethod.research.FeedbackFragment;
+
+import java.util.HashSet;
+
+public class FragmentUtils {
+    private static final HashSet<String> sLatinImeFragments = new HashSet<String>();
+    static {
+        sLatinImeFragments.add(DictionarySettingsFragment.class.getName());
+        sLatinImeFragments.add(AboutPreferences.class.getName());
+        sLatinImeFragments.add(AdditionalSubtypeSettings.class.getName());
+        sLatinImeFragments.add(DebugSettings.class.getName());
+        sLatinImeFragments.add(SettingsFragment.class.getName());
+        sLatinImeFragments.add(SpellCheckerSettingsFragment.class.getName());
+        sLatinImeFragments.add(UserDictionaryAddWordFragment.class.getName());
+        sLatinImeFragments.add(UserDictionaryList.class.getName());
+        sLatinImeFragments.add(UserDictionaryLocalePicker.class.getName());
+        sLatinImeFragments.add(UserDictionarySettings.class.getName());
+        sLatinImeFragments.add(FeedbackFragment.class.getName());
+    }
+
+    public static boolean isValidFragment(String fragmentName) {
+        return sLatinImeFragments.contains(fragmentName);
+    }
+}