[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() {