Sync setting disabled if no account.

Bug: 19361223

Change-Id: Id5e8d34920f5bf3bffb6d6d287557e85d7b72c79
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index c8060da..e4b3883 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -61,7 +61,7 @@
     <!-- Option summary when cloud sync feature is disabled  [CHAR LIMIT=65] -->
     <string name="cloud_sync_summary_disabled">Sync your personal dictionary across devices</string>
     <!-- Option title for starting the sync cycle now. [CHAR LIMIT=33]-->
-    <string name="sync_now_title">Sync Now</string>
+    <string name="sync_now_title">Sync now</string>
     <!-- Option title for letting user delete data from Google servers.  [CHAR LIMIT=33] -->
     <string name="clear_sync_data_title">Delete Keyboard Cloud data</string>
     <!-- Option summary for letting user delete data from Google servers. [CHAR LIMIT=65] -->
@@ -73,12 +73,16 @@
     <!-- Option to cancel the deletion of user data from cloud [CHAR LIMIT=20] -->
     <string name="cloud_sync_cancel">Cancel</string>
     <!-- Option to agree to terms and conditions for enabling cloud sync feature. -->
-    <string name="cloud_sync_opt_in_text">Your personal dictionary will be synced &amp; backed up to
-        Google servers. The statistical information of word frequency may be collected to help 
+    <string name="cloud_sync_opt_in_text">Your personal dictionary will be synced and backed up to
+        Google servers. The statistical information of word frequency may be collected to help
         improve our products. The collection and usage of all the information will be compliant with
         <a href="https://www.google.com/policies/privacy">Google\'s Privacy Policy</a>.
     </string>
-    
+    <!-- Text to tell the user to add a Google account to the device to enable the cloud sync feature. [CHAR LIMIT=65]-->
+    <string name="add_account_to_enable_sync">
+        Please add a Google account to this device to enable this feature
+    </string>
+
     <!-- Option name for including other IMEs in the language switch list [CHAR LIMIT=30] -->
     <string name="include_other_imes_in_language_switch_list">Switch to other input methods</string>
     <!-- Option summary for including other IMEs in the language switch list [CHAR LIMIT=65] -->
diff --git a/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java
index b734d8b..9a8a7b9 100644
--- a/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java
@@ -204,10 +204,33 @@
      * is currently selected.
      */
     private void refreshAccountAndDependentPreferences(@Nullable final String currentAccount) {
+        // TODO(cvnguyen): Write tests.
         if (!ProductionFlags.ENABLE_ACCOUNT_SIGN_IN) {
             return;
         }
 
+        final String[] accountsForLogin =
+                LoginAccountUtils.getAccountsForLogin(getActivity());
+
+        if (accountsForLogin.length > 0) {
+            enableSyncPreferences();
+            mAccountSwitcher.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+                @Override
+                public boolean onPreferenceClick(final Preference preference) {
+                    if (accountsForLogin.length > 0) {
+                        // TODO: Add addition of account.
+                        createAccountPicker(accountsForLogin, currentAccount,
+                                new AccountChangedListener(null)).show();
+                    }
+                    return true;
+                }
+            });
+        } else {
+            mAccountSwitcher.setEnabled(false);
+            disableSyncPreferences();
+            mEnableSyncPreference.setSummary(getString(R.string.add_account_to_enable_sync));
+        }
+
         if (currentAccount == null) {
             // No account is currently selected; switch enable sync preference off.
             mAccountSwitcher.setSummary(getString(R.string.no_accounts_selected));
@@ -216,20 +239,6 @@
             // Set the currently selected account as the summary text.
             mAccountSwitcher.setSummary(getString(R.string.account_selected, currentAccount));
         }
-
-        mAccountSwitcher.setOnPreferenceClickListener(new OnPreferenceClickListener() {
-                @Override
-                public boolean onPreferenceClick(final Preference preference) {
-                    final String[] accountsForLogin =
-                            LoginAccountUtils.getAccountsForLogin(getActivity());
-                    if (accountsForLogin.length > 0) {
-                        // TODO: Add addition of account.
-                        createAccountPicker(accountsForLogin, currentAccount,
-                                new AccountChangedListener(null)).show();
-                    }
-                    return true;
-                }
-        });
     }
 
     @Nullable