Merge "Import translations. DO NOT MERGE" into ub-deskclock-huddle
diff --git a/src/com/android/deskclock/data/SettingsDAO.java b/src/com/android/deskclock/data/SettingsDAO.java
index 1205acd..7e9408f 100644
--- a/src/com/android/deskclock/data/SettingsDAO.java
+++ b/src/com/android/deskclock/data/SettingsDAO.java
@@ -114,19 +114,21 @@
     static TimeZone getHomeTimeZone(Context context, SharedPreferences prefs, TimeZone defaultTZ) {
         String timeZoneId = prefs.getString(SettingsActivity.KEY_HOME_TZ, null);
 
-        // If no home timezone has yet been recorded, do so now.
-        if (timeZoneId == null) {
-            timeZoneId = defaultTZ.getID();
-
-            // If the default timezone from framework is acceptable, save it.
-            if (getTimeZones(context, System.currentTimeMillis()).contains(timeZoneId)) {
-                prefs.edit().putString(SettingsActivity.KEY_HOME_TZ, timeZoneId).apply();
-            }
+        // If the recorded home timezone is legal, use it.
+        final TimeZones timeZones = getTimeZones(context, System.currentTimeMillis());
+        if (timeZones.contains(timeZoneId)) {
+            return TimeZone.getTimeZone(timeZoneId);
         }
 
-        // The timezone returned here may be a valid value from prior calls or a temporary value
-        // created using the given default timezone.
-        return TimeZone.getTimeZone(timeZoneId);
+        // No legal home timezone has yet been recorded, attempt to record the default.
+        timeZoneId = defaultTZ.getID();
+        if (timeZones.contains(timeZoneId)) {
+            prefs.edit().putString(SettingsActivity.KEY_HOME_TZ, timeZoneId).apply();
+        }
+
+        // The timezone returned here may be valid or invalid. When it matches TimeZone.getDefault()
+        // the Home city will not show, regardless of its validity.
+        return defaultTZ;
     }
 
     /**