Loading java/src/com/android/inputmethod/latin/LatinIME.java +1 −1 Original line number Diff line number Diff line Loading @@ -1450,7 +1450,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } final boolean shouldShowImportantNotice = ImportantNoticeUtils.shouldShowImportantNotice(this); ImportantNoticeUtils.shouldShowImportantNotice(this, currentSettingsValues); final boolean shouldShowSuggestionCandidates = currentSettingsValues.mInputAttributes.mShouldShowSuggestions && currentSettingsValues.isSuggestionsEnabledPerUserSettings(); Loading java/src/com/android/inputmethod/latin/settings/SettingsValues.java +4 −0 Original line number Diff line number Diff line Loading @@ -237,6 +237,10 @@ public class SettingsValues { return mSuggestionsEnabledPerUserSettings; } public boolean isPersonalizationEnabled() { return mUsePersonalizedDicts; } public boolean isWordSeparator(final int code) { return mSpacingAndPunctuations.isWordSeparator(code); } Loading java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java +2 −1 Original line number Diff line number Diff line Loading @@ -213,7 +213,8 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick // it has been shown once already or not, and if in the setup wizard). If applicable, it shows // the notice. In all cases, it returns true if it was shown, false otherwise. public boolean maybeShowImportantNoticeTitle() { if (!ImportantNoticeUtils.shouldShowImportantNotice(getContext())) { final SettingsValues currentSettingsValues = Settings.getInstance().getCurrent(); if (!ImportantNoticeUtils.shouldShowImportantNotice(getContext(), currentSettingsValues)) { return false; } if (getWidth() <= 0) { Loading java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java +7 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.util.Log; import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.settings.SettingsValues; import java.util.concurrent.TimeUnit; Loading Loading @@ -105,7 +106,12 @@ public final class ImportantNoticeUtils { return elapsedTime >= TIMEOUT_OF_IMPORTANT_NOTICE; } public static boolean shouldShowImportantNotice(final Context context) { public static boolean shouldShowImportantNotice(final Context context, final SettingsValues settingsValues) { // Check to see whether personalization is enabled by the user. if (!settingsValues.isPersonalizationEnabled()) { return false; } if (!hasNewImportantNotice(context)) { return false; } Loading tests/src/com/android/inputmethod/latin/utils/ImportantNoticeUtilsTests.java +33 −9 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.inputmethod.latin.utils; import static com.android.inputmethod.latin.utils.ImportantNoticeUtils.KEY_IMPORTANT_NOTICE_VERSION; import static com.android.inputmethod.latin.utils.ImportantNoticeUtils.KEY_TIMESTAMP_OF_FIRST_IMPORTANT_NOTICE; import static org.mockito.Mockito.when; import android.content.Context; import android.content.SharedPreferences; Loading @@ -25,6 +26,11 @@ import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.MediumTest; import android.text.TextUtils; import com.android.inputmethod.latin.settings.SettingsValues; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.concurrent.TimeUnit; @MediumTest Loading @@ -34,6 +40,8 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { private ImportantNoticePreferences mImportantNoticePreferences; @Mock private SettingsValues mMockSettingsValues; private static class ImportantNoticePreferences { private final SharedPreferences mPref; Loading Loading @@ -97,8 +105,10 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { @Override protected void setUp() throws Exception { super.setUp(); MockitoAnnotations.initMocks(this); mImportantNoticePreferences = new ImportantNoticePreferences(getContext()); mImportantNoticePreferences.save(); when(mMockSettingsValues.isPersonalizationEnabled()).thenReturn(true); } @Override Loading @@ -117,9 +127,9 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { // Check internal state of {@link ImportantNoticeUtils.shouldShowImportantNotice(Context)} // after fresh install. assertEquals("Has new imortant notice after fresh install", true, assertEquals("Has new important notice after fresh install", true, ImportantNoticeUtils.hasNewImportantNotice(getContext())); assertEquals("Next important norice title after fresh install", false, TextUtils.isEmpty( assertEquals("Next important notice title after fresh install", false, TextUtils.isEmpty( ImportantNoticeUtils.getNextImportantNoticeTitle(getContext()))); assertEquals("Is in system setup wizard after fresh install", false, ImportantNoticeUtils.isInSystemSetupWizard(getContext())); Loading @@ -131,14 +141,14 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { mImportantNoticePreferences.getLong(KEY_TIMESTAMP_OF_FIRST_IMPORTANT_NOTICE)); assertEquals("Current boolean before update", true, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); } public void testUpdateVersion() { mImportantNoticePreferences.clear(); assertEquals("Current boolean before update", true, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version before update", 0, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version before update ", 1, Loading @@ -151,7 +161,7 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { ImportantNoticeUtils.updateLastImportantNoticeVersion(getContext()); assertEquals("Current boolean after update", false, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version after update", 1, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version after update", 2, Loading Loading @@ -180,7 +190,7 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { // Call {@link ImportantNoticeUtils#shouldShowImportantNotice(Context)} before timeout. assertEquals("Current boolean before timeout 1", true, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version before timeout 1", 0, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version before timeout 1", 1, Loading @@ -197,7 +207,7 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { // Call {@link ImportantNoticeUtils#shouldShowImportantNotice(Context)} before timeout // again. assertEquals("Current boolean before timeout 2", true, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version before timeout 2", 0, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version before timeout 2", 1, Loading @@ -213,7 +223,7 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { // Call {@link ImportantNoticeUtils#shouldShowImportantNotice(Context)} after timeout. assertEquals("Current boolean after timeout 1", false, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version after timeout 1", 1, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version after timeout 1", 2, Loading @@ -229,7 +239,7 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { // Call {@link ImportantNoticeUtils#shouldShowImportantNotice(Context)} after timeout again. assertEquals("Current boolean after timeout 2", false, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version after timeout 2", 1, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version after timeout 2", 2, Loading @@ -241,4 +251,18 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { assertEquals("Current contents after timeout 2", true, TextUtils.isEmpty( ImportantNoticeUtils.getNextImportantNoticeContents(getContext()))); } public void testPersonalizationSetting() { mImportantNoticePreferences.clear(); // Personalization enabled. when(mMockSettingsValues.isPersonalizationEnabled()).thenReturn(true); assertEquals("Current boolean with personalization enabled", true, ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); // Personalization disabled. when(mMockSettingsValues.isPersonalizationEnabled()).thenReturn(false); assertEquals("Current boolean with personalization disabled", false, ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); } } Loading
java/src/com/android/inputmethod/latin/LatinIME.java +1 −1 Original line number Diff line number Diff line Loading @@ -1450,7 +1450,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } final boolean shouldShowImportantNotice = ImportantNoticeUtils.shouldShowImportantNotice(this); ImportantNoticeUtils.shouldShowImportantNotice(this, currentSettingsValues); final boolean shouldShowSuggestionCandidates = currentSettingsValues.mInputAttributes.mShouldShowSuggestions && currentSettingsValues.isSuggestionsEnabledPerUserSettings(); Loading
java/src/com/android/inputmethod/latin/settings/SettingsValues.java +4 −0 Original line number Diff line number Diff line Loading @@ -237,6 +237,10 @@ public class SettingsValues { return mSuggestionsEnabledPerUserSettings; } public boolean isPersonalizationEnabled() { return mUsePersonalizedDicts; } public boolean isWordSeparator(final int code) { return mSpacingAndPunctuations.isWordSeparator(code); } Loading
java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java +2 −1 Original line number Diff line number Diff line Loading @@ -213,7 +213,8 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick // it has been shown once already or not, and if in the setup wizard). If applicable, it shows // the notice. In all cases, it returns true if it was shown, false otherwise. public boolean maybeShowImportantNoticeTitle() { if (!ImportantNoticeUtils.shouldShowImportantNotice(getContext())) { final SettingsValues currentSettingsValues = Settings.getInstance().getCurrent(); if (!ImportantNoticeUtils.shouldShowImportantNotice(getContext(), currentSettingsValues)) { return false; } if (getWidth() <= 0) { Loading
java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java +7 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.util.Log; import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.settings.SettingsValues; import java.util.concurrent.TimeUnit; Loading Loading @@ -105,7 +106,12 @@ public final class ImportantNoticeUtils { return elapsedTime >= TIMEOUT_OF_IMPORTANT_NOTICE; } public static boolean shouldShowImportantNotice(final Context context) { public static boolean shouldShowImportantNotice(final Context context, final SettingsValues settingsValues) { // Check to see whether personalization is enabled by the user. if (!settingsValues.isPersonalizationEnabled()) { return false; } if (!hasNewImportantNotice(context)) { return false; } Loading
tests/src/com/android/inputmethod/latin/utils/ImportantNoticeUtilsTests.java +33 −9 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.inputmethod.latin.utils; import static com.android.inputmethod.latin.utils.ImportantNoticeUtils.KEY_IMPORTANT_NOTICE_VERSION; import static com.android.inputmethod.latin.utils.ImportantNoticeUtils.KEY_TIMESTAMP_OF_FIRST_IMPORTANT_NOTICE; import static org.mockito.Mockito.when; import android.content.Context; import android.content.SharedPreferences; Loading @@ -25,6 +26,11 @@ import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.MediumTest; import android.text.TextUtils; import com.android.inputmethod.latin.settings.SettingsValues; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.concurrent.TimeUnit; @MediumTest Loading @@ -34,6 +40,8 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { private ImportantNoticePreferences mImportantNoticePreferences; @Mock private SettingsValues mMockSettingsValues; private static class ImportantNoticePreferences { private final SharedPreferences mPref; Loading Loading @@ -97,8 +105,10 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { @Override protected void setUp() throws Exception { super.setUp(); MockitoAnnotations.initMocks(this); mImportantNoticePreferences = new ImportantNoticePreferences(getContext()); mImportantNoticePreferences.save(); when(mMockSettingsValues.isPersonalizationEnabled()).thenReturn(true); } @Override Loading @@ -117,9 +127,9 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { // Check internal state of {@link ImportantNoticeUtils.shouldShowImportantNotice(Context)} // after fresh install. assertEquals("Has new imortant notice after fresh install", true, assertEquals("Has new important notice after fresh install", true, ImportantNoticeUtils.hasNewImportantNotice(getContext())); assertEquals("Next important norice title after fresh install", false, TextUtils.isEmpty( assertEquals("Next important notice title after fresh install", false, TextUtils.isEmpty( ImportantNoticeUtils.getNextImportantNoticeTitle(getContext()))); assertEquals("Is in system setup wizard after fresh install", false, ImportantNoticeUtils.isInSystemSetupWizard(getContext())); Loading @@ -131,14 +141,14 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { mImportantNoticePreferences.getLong(KEY_TIMESTAMP_OF_FIRST_IMPORTANT_NOTICE)); assertEquals("Current boolean before update", true, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); } public void testUpdateVersion() { mImportantNoticePreferences.clear(); assertEquals("Current boolean before update", true, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version before update", 0, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version before update ", 1, Loading @@ -151,7 +161,7 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { ImportantNoticeUtils.updateLastImportantNoticeVersion(getContext()); assertEquals("Current boolean after update", false, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version after update", 1, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version after update", 2, Loading Loading @@ -180,7 +190,7 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { // Call {@link ImportantNoticeUtils#shouldShowImportantNotice(Context)} before timeout. assertEquals("Current boolean before timeout 1", true, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version before timeout 1", 0, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version before timeout 1", 1, Loading @@ -197,7 +207,7 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { // Call {@link ImportantNoticeUtils#shouldShowImportantNotice(Context)} before timeout // again. assertEquals("Current boolean before timeout 2", true, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version before timeout 2", 0, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version before timeout 2", 1, Loading @@ -213,7 +223,7 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { // Call {@link ImportantNoticeUtils#shouldShowImportantNotice(Context)} after timeout. assertEquals("Current boolean after timeout 1", false, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version after timeout 1", 1, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version after timeout 1", 2, Loading @@ -229,7 +239,7 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { // Call {@link ImportantNoticeUtils#shouldShowImportantNotice(Context)} after timeout again. assertEquals("Current boolean after timeout 2", false, ImportantNoticeUtils.shouldShowImportantNotice(getContext())); ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); assertEquals("Last version after timeout 2", 1, ImportantNoticeUtils.getLastImportantNoticeVersion(getContext())); assertEquals("Next version after timeout 2", 2, Loading @@ -241,4 +251,18 @@ public class ImportantNoticeUtilsTests extends AndroidTestCase { assertEquals("Current contents after timeout 2", true, TextUtils.isEmpty( ImportantNoticeUtils.getNextImportantNoticeContents(getContext()))); } public void testPersonalizationSetting() { mImportantNoticePreferences.clear(); // Personalization enabled. when(mMockSettingsValues.isPersonalizationEnabled()).thenReturn(true); assertEquals("Current boolean with personalization enabled", true, ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); // Personalization disabled. when(mMockSettingsValues.isPersonalizationEnabled()).thenReturn(false); assertEquals("Current boolean with personalization disabled", false, ImportantNoticeUtils.shouldShowImportantNotice(getContext(), mMockSettingsValues)); } }