Snap for 6793084 from eda34fa2474bfc285b236007e96616b9342db805 to studio-4.1-release

Change-Id: I4d377fceaac698503ad8e319102024b8bed93db5
diff --git a/shared/src/main/java/com/android/tools/analytics/AnalyticsSettings.kt b/shared/src/main/java/com/android/tools/analytics/AnalyticsSettings.kt
index b4c73c2..19b784d 100644
--- a/shared/src/main/java/com/android/tools/analytics/AnalyticsSettings.kt
+++ b/shared/src/main/java/com/android/tools/analytics/AnalyticsSettings.kt
@@ -448,7 +448,10 @@
             channel.truncate(0)
             val outputStream = Channels.newOutputStream(channel)
             val writer = OutputStreamWriter(outputStream)
-            gson.toJson(this, writer)
+
+            // Write out using pre-Java9 date format to let older releases read the file correctly.
+            val datePatternJava8 = "MMM d, y h:mm:ss a"
+            GsonBuilder().setDateFormat(datePatternJava8).create().toJson(this, writer)
             writer.flush()
             outputStream.flush()
           }
diff --git a/shared/src/test/java/com/android/tools/analytics/AnalyticsSettingsTest.kt b/shared/src/test/java/com/android/tools/analytics/AnalyticsSettingsTest.kt
index 097f5cf..45146e5 100644
--- a/shared/src/test/java/com/android/tools/analytics/AnalyticsSettingsTest.kt
+++ b/shared/src/test/java/com/android/tools/analytics/AnalyticsSettingsTest.kt
@@ -19,6 +19,7 @@
 import com.android.utils.DateProvider
 import com.android.utils.ILogger
 import com.google.common.base.Charsets
+import com.google.gson.GsonBuilder
 import com.google.protobuf.ByteString
 import org.junit.Assert.assertArrayEquals
 import org.junit.Assert.assertEquals
@@ -34,6 +35,7 @@
 import java.io.IOException
 import java.math.BigInteger
 import java.nio.file.Files
+import java.nio.file.Paths
 import java.util.Arrays
 import java.util.Date
 import java.util.UUID
@@ -585,4 +587,25 @@
       EnvironmentFakes.setSystemEnvironment()
     }
   }
+
+  @Test
+  fun useJava8DateFormat() {
+    EnvironmentFakes.setCustomAndroidSdkHomeEnvironment(testConfigDir.root.toString())
+    try {
+      AnalyticsSettings.setInstanceForTest(AnalyticsSettingsData().apply {
+        userId = "db3dd15b-053a-4066-ac93-04c50585edc2"
+        optedIn = true
+        lastSentimentAnswerDate = Date(115, 4, 17, 14, 23, 45)
+      })
+      AnalyticsSettings.saveSettings()
+      val analysticsSettingsContents =
+        String(Files.readAllBytes(Paths.get(testConfigDir.root.toString(), "analytics.settings")), Charsets.UTF_8)
+      val lastSentimentAnswerDate =
+        GsonBuilder().create().fromJson(analysticsSettingsContents, Map::class.java)["lastSentimentAnswerDate"]
+      assertEquals("May 17, 2015 2:23:45 PM", lastSentimentAnswerDate)
+    }
+    finally {
+      EnvironmentFakes.setSystemEnvironment()
+    }
+  }
 }