[go: nahoru, domu]

[Chromecast] Return release channel from AT UpdateEngine

Android Things UpdateEngine has an API for retrieving the current update
channel. We now return this to sys_info as the release channel.

1. Separate Android Things sys_info from Android
2. Return correct release channel from AT UpdateEngine

BUG=72137029
TEST=Build, Check returned release channel

Change-Id: If60b698eb833c54cd4899b647a91b6073c60e071
Reviewed-on: https://chromium-review.googlesource.com/996916
Reviewed-by: Luke Halliwell <halliwell@chromium.org>
Commit-Queue: Aidan Wolter <awolter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549227}
diff --git a/chromecast/BUILD.gn b/chromecast/BUILD.gn
index 045e34e..51527f8 100644
--- a/chromecast/BUILD.gn
+++ b/chromecast/BUILD.gn
@@ -564,6 +564,7 @@
     "ENABLE_HEADLESS_MUSIC_MODE=$enable_headless_music_mode",
     "ENABLE_CHROMECAST_EXTENSIONS=$enable_chromecast_extensions",
     "ENABLE_CAST_FRAGMENT=$enable_cast_fragment",
+    "IS_ANDROID_THINGS_NON_PUBLIC=$is_android_things_non_public",
   ]
 }
 
diff --git a/chromecast/base/BUILD.gn b/chromecast/base/BUILD.gn
index 22ec3fa..11d4149 100644
--- a/chromecast/base/BUILD.gn
+++ b/chromecast/base/BUILD.gn
@@ -187,6 +187,7 @@
   if (is_android) {
     deps += [
       ":cast_version",
+      "//chromecast:chromecast_buildflags",
       "//chromecast/browser:jni_headers",
     ]
   } else if (chromecast_branding == "public") {
diff --git a/chromecast/base/cast_sys_info_android.cc b/chromecast/base/cast_sys_info_android.cc
index c449b2d9..f16b55d 100644
--- a/chromecast/base/cast_sys_info_android.cc
+++ b/chromecast/base/cast_sys_info_android.cc
@@ -15,7 +15,11 @@
 #include "base/sys_info.h"
 #include "chromecast/base/cast_sys_info_util.h"
 #include "chromecast/base/version.h"
+#include "chromecast/chromecast_buildflags.h"
 #include "jni/CastSysInfoAndroid_jni.h"
+#if BUILDFLAG(IS_ANDROID_THINGS_NON_PUBLIC)
+#include "jni/CastSysInfoAndroidThings_jni.h"
+#endif
 
 namespace chromecast {
 
@@ -92,7 +96,13 @@
 }
 
 std::string CastSysInfoAndroid::GetSystemReleaseChannel() {
+#if BUILDFLAG(IS_ANDROID_THINGS_NON_PUBLIC)
+  JNIEnv* env = base::android::AttachCurrentThread();
+  return base::android::ConvertJavaStringToUTF8(
+      Java_CastSysInfoAndroidThings_getReleaseChannel(env));
+#else
   return "";
+#endif
 }
 
 std::string CastSysInfoAndroid::GetBoardName() {
diff --git a/chromecast/browser/BUILD.gn b/chromecast/browser/BUILD.gn
index 9c8af01..151a256 100644
--- a/chromecast/browser/BUILD.gn
+++ b/chromecast/browser/BUILD.gn
@@ -394,6 +394,10 @@
       "android/apk/src/org/chromium/chromecast/shell/CastWebContentsSurfaceHelper.java",
     ]
 
+    if (is_android_things_non_public) {
+      sources += [ "android/apk/src/org/chromium/chromecast/shell/CastSysInfoAndroidThings.java" ]
+    }
+
     jni_package = "chromecast"
   }
 }
diff --git a/chromecast/browser/android/BUILD.gn b/chromecast/browser/android/BUILD.gn
index e9c8de0..fefb400 100644
--- a/chromecast/browser/android/BUILD.gn
+++ b/chromecast/browser/android/BUILD.gn
@@ -146,6 +146,11 @@
   if (is_cast_using_cma_backend) {
     deps += [ "//chromecast/media/cma/backend/android:audio_track_java" ]
   }
+
+  if (is_android_things_non_public) {
+    java_files += [ "$java_src_dir/org/chromium/chromecast/shell/CastSysInfoAndroidThings.java" ]
+    deps += [ "//chromecast/internal/android/prebuilt/things:support_lib_java" ]
+  }
 }
 
 junit_binary("cast_shell_junit_tests") {
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastSysInfoAndroidThings.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastSysInfoAndroidThings.java
new file mode 100644
index 0000000..3235b0f
--- /dev/null
+++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastSysInfoAndroidThings.java
@@ -0,0 +1,21 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chromecast.shell;
+
+import com.google.android.things.update.UpdateManager;
+
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
+
+/**
+ * Java implementation of CastSysInfoAndroidThings methods.
+ */
+@JNINamespace("chromecast")
+public final class CastSysInfoAndroidThings {
+    @CalledByNative
+    private static String getReleaseChannel() {
+        return new UpdateManager().getChannel();
+    }
+}
diff --git a/chromecast/chromecast.gni b/chromecast/chromecast.gni
index 93e1eca3..1907fb6 100644
--- a/chromecast/chromecast.gni
+++ b/chromecast/chromecast.gni
@@ -84,6 +84,8 @@
 declare_args() {
   enable_volume_tables_access =
       is_android_things && chromecast_branding != "public"
+  is_android_things_non_public =
+      is_android_things && chromecast_branding != "public"
 }
 
 declare_args() {