diff options
author | gunsch <gunsch@chromium.org> | 2015-05-19 13:29:10 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-19 20:29:26 +0000 |
commit | e860606d53ad107ee875b55d07ef7624c84fc60c (patch) | |
tree | 2ef8c12822dd06e586cfa1c7136dc4dc3fc1b7ab | |
parent | b8022f1a2417699a789f1971ef5657ff4238601a (diff) | |
download | chromium_src-e860606d53ad107ee875b55d07ef7624c84fc60c.zip chromium_src-e860606d53ad107ee875b55d07ef7624c84fc60c.tar.gz chromium_src-e860606d53ad107ee875b55d07ef7624c84fc60c.tar.bz2 |
Chromecast: adds Android implementation of CastSysInfo.
R=lcwu@chromium.org,halliwell@chromium.org
Review URL: https://codereview.chromium.org/1132663004
Cr-Commit-Position: refs/heads/master@{#330595}
-rw-r--r-- | chromecast/android/cast_jni_registrar.cc | 2 | ||||
-rw-r--r-- | chromecast/base/cast_sys_info_android.cc | 127 | ||||
-rw-r--r-- | chromecast/base/cast_sys_info_android.h | 57 | ||||
-rw-r--r-- | chromecast/base/version.h.in (renamed from chromecast/common/version.h.in) | 6 | ||||
-rw-r--r-- | chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastSysInfoAndroid.java | 23 | ||||
-rw-r--r-- | chromecast/browser/cast_browser_main_parts.cc | 2 | ||||
-rw-r--r-- | chromecast/chromecast.gyp | 11 | ||||
-rw-r--r-- | chromecast/common/cast_content_client.cc | 2 | ||||
-rw-r--r-- | chromecast/crash/android/cast_crash_reporter_client_android.cc | 2 | ||||
-rw-r--r-- | chromecast/crash/android/crash_handler.cc | 2 |
10 files changed, 224 insertions, 10 deletions
diff --git a/chromecast/android/cast_jni_registrar.cc b/chromecast/android/cast_jni_registrar.cc index 802538ca..bad2365 100644 --- a/chromecast/android/cast_jni_registrar.cc +++ b/chromecast/android/cast_jni_registrar.cc @@ -7,6 +7,7 @@ #include "base/android/jni_android.h" #include "base/android/jni_registrar.h" #include "chromecast/android/cast_metrics_helper_android.h" +#include "chromecast/base/cast_sys_info_android.h" #include "chromecast/browser/android/cast_window_android.h" #include "chromecast/browser/android/cast_window_manager.h" #include "chromecast/crash/android/crash_handler.h" @@ -19,6 +20,7 @@ namespace { static base::android::RegistrationMethod kMethods[] = { { "CastMetricsHelperAndroid", CastMetricsHelperAndroid::RegisterJni }, + { "CastSysInfoAndroid", CastSysInfoAndroid::RegisterJni }, { "CastWindowAndroid", shell::CastWindowAndroid::RegisterJni }, { "CastWindowManager", shell::RegisterCastWindowManager }, { "CrashHandler", CrashHandler::RegisterCastCrashJni }, diff --git a/chromecast/base/cast_sys_info_android.cc b/chromecast/base/cast_sys_info_android.cc new file mode 100644 index 0000000..0d85a06 --- /dev/null +++ b/chromecast/base/cast_sys_info_android.cc @@ -0,0 +1,127 @@ +// Copyright 2015 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. + +#include "chromecast/base/cast_sys_info_android.h" + +#include "base/android/build_info.h" +#include "base/android/jni_android.h" +#include "base/android/jni_string.h" +#include "base/strings/string_number_conversions.h" +#include "base/sys_info.h" +#include "chromecast/base/cast_sys_info_util.h" +#include "chromecast/base/version.h" +#include "jni/CastSysInfoAndroid_jni.h" + +namespace chromecast { + +namespace { +const char kBuildTypeUser[] = "user"; +} // namespace + +// static +bool CastSysInfoAndroid::RegisterJni(JNIEnv* env) { + return RegisterNativesImpl(env); +} + +// static +scoped_ptr<CastSysInfo> CreateSysInfo() { + return make_scoped_ptr(new CastSysInfoAndroid()); +} + +CastSysInfoAndroid::CastSysInfoAndroid() + : build_info_(base::android::BuildInfo::GetInstance()) { +} + +CastSysInfoAndroid::~CastSysInfoAndroid() { +} + +CastSysInfo::BuildType CastSysInfoAndroid::GetBuildType() { + if (CAST_IS_DEBUG_BUILD()) + return BUILD_ENG; + + int build_number; + if (!base::StringToInt(CAST_BUILD_INCREMENTAL, &build_number)) + build_number = 0; + + // Note: no way to determine which channel was used on play store. + if (strcmp(build_info_->build_type(), kBuildTypeUser) == 0 && + build_number > 0) { + return BUILD_PRODUCTION; + } + + // Dogfooders without a user system build should all still have non-Debug + // builds of the cast receiver APK, but with valid build numbers. + if (build_number > 0) + return BUILD_BETA; + + // Default to ENG build. + return BUILD_ENG; +} + +std::string CastSysInfoAndroid::GetSerialNumber() { + JNIEnv* env = base::android::AttachCurrentThread(); + return base::android::ConvertJavaStringToUTF8( + Java_CastSysInfoAndroid_getSerialNumber(env)); +} + +std::string CastSysInfoAndroid::GetProductName() { + return build_info_->device(); +} + +std::string CastSysInfoAndroid::GetDeviceModel() { + return build_info_->model(); +} + +std::string CastSysInfoAndroid::GetManufacturer() { + return build_info_->manufacturer(); +} + +std::string CastSysInfoAndroid::GetSystemBuildNumber() { + return base::SysInfo::GetAndroidBuildID(); +} + +std::string CastSysInfoAndroid::GetSystemReleaseChannel() { + return ""; +} + +std::string CastSysInfoAndroid::GetBoardName() { + return ""; +} + +std::string CastSysInfoAndroid::GetBoardRevision() { + return ""; +} + +std::string CastSysInfoAndroid::GetFactoryCountry() { + return ""; +} + +std::string CastSysInfoAndroid::GetFactoryLocale(std::string* second_locale) { + return ""; +} + +std::string CastSysInfoAndroid::GetWifiInterface() { + return ""; +} + +std::string CastSysInfoAndroid::GetApInterface() { + return ""; +} + +std::string CastSysInfoAndroid::GetGlVendor() { + NOTREACHED() << "GL information shouldn't be requested on Android."; + return ""; +} + +std::string CastSysInfoAndroid::GetGlRenderer() { + NOTREACHED() << "GL information shouldn't be requested on Android."; + return ""; +} + +std::string CastSysInfoAndroid::GetGlVersion() { + NOTREACHED() << "GL information shouldn't be requested on Android."; + return ""; +} + +} // namespace chromecast diff --git a/chromecast/base/cast_sys_info_android.h b/chromecast/base/cast_sys_info_android.h new file mode 100644 index 0000000..0cc4b55 --- /dev/null +++ b/chromecast/base/cast_sys_info_android.h @@ -0,0 +1,57 @@ +// Copyright 2015 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. + +#ifndef CHROMECAST_BASE_CAST_SYS_INFO_ANDROID_H_ +#define CHROMECAST_BASE_CAST_SYS_INFO_ANDROID_H_ + +#include <jni.h> + +#include "base/macros.h" +#include "chromecast/public/cast_sys_info.h" + +namespace base { +namespace android { +class BuildInfo; +} +} + +namespace chromecast { + +class CastSysInfoAndroid : public CastSysInfo { + public: + static bool RegisterJni(JNIEnv* env); + + CastSysInfoAndroid(); + ~CastSysInfoAndroid() override; + + // CastSysInfo implementation: + BuildType GetBuildType() override; + std::string GetSerialNumber() override; + std::string GetProductName() override; + std::string GetDeviceModel() override; + std::string GetManufacturer() override; + std::string GetSystemBuildNumber() override; + std::string GetSystemReleaseChannel() override; + std::string GetBoardName() override; + std::string GetBoardRevision() override; + std::string GetFactoryCountry() override; + std::string GetFactoryLocale(std::string* second_locale) override; + std::string GetWifiInterface() override; + std::string GetApInterface() override; + std::string GetGlVendor() override; + std::string GetGlRenderer() override; + std::string GetGlVersion() override; + + // Native implementation of Java methods. + void DeviceNameChanged(JNIEnv* env, jobject obj, jstring device_name); + + private: + const base::android::BuildInfo* const build_info_; + + DISALLOW_COPY_AND_ASSIGN(CastSysInfoAndroid); +}; + +} // namespace chromecast + +#endif // CHROMECAST_BASE_CAST_SYS_INFO_ANDROID_H_ diff --git a/chromecast/common/version.h.in b/chromecast/base/version.h.in index 918401f..faba489 100644 --- a/chromecast/common/version.h.in +++ b/chromecast/base/version.h.in @@ -4,8 +4,8 @@ // version.h is generated from version.h.in. Edit the source! -#ifndef CHROMECAST_COMMON_VERSION_INFO_H_ -#define CHROMECAST_COMMON_VERSION_INFO_H_ +#ifndef CHROMECAST_BASE_VERSION_INFO_H_ +#define CHROMECAST_BASE_VERSION_INFO_H_ #define PRODUCT_VERSION "@VERSION_FULL@" #define CAST_BUILD_INCREMENTAL "@CAST_BUILD_INCREMENTAL@" @@ -13,4 +13,4 @@ #define CAST_IS_DEBUG_BUILD() @CAST_IS_DEBUG_BUILD@ #define CAST_PRODUCT_TYPE @CAST_PRODUCT_TYPE@ -#endif // CHROMECAST_COMMON_VERSION_INFO_H_ +#endif // CHROMECAST_BASE_VERSION_INFO_H_ diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastSysInfoAndroid.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastSysInfoAndroid.java new file mode 100644 index 0000000..eaf7b07 --- /dev/null +++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastSysInfoAndroid.java @@ -0,0 +1,23 @@ +// Copyright 2015 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 android.os.Build; + +import org.chromium.base.CalledByNative; +import org.chromium.base.JNINamespace; + +/** + * Java implementation of CastSysInfoAndroid methods. + */ +@JNINamespace("chromecast") +public final class CastSysInfoAndroid { + private static final String TAG = "CastSysInfoAndroid"; + + @CalledByNative + private static String getSerialNumber() { + return Build.SERIAL; + } +} diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc index cb9a128..1c4c7fe 100644 --- a/chromecast/browser/cast_browser_main_parts.cc +++ b/chromecast/browser/cast_browser_main_parts.cc @@ -274,6 +274,7 @@ int CastBrowserMainParts::PreCreateThreads() { } void CastBrowserMainParts::PreMainMessageLoopRun() { +#if !defined(OS_ANDROID) // Set GL strings so GPU config code can make correct feature blacklisting/ // whitelisting decisions. // Note: SetGLStrings MUST be called after GpuDataManager::Initialize. @@ -281,6 +282,7 @@ void CastBrowserMainParts::PreMainMessageLoopRun() { content::GpuDataManager::GetInstance()->SetGLStrings( sys_info->GetGlVendor(), sys_info->GetGlRenderer(), sys_info->GetGlVersion()); +#endif // !defined(OS_ANDROID) scoped_refptr<PrefRegistrySimple> pref_registry(new PrefRegistrySimple()); metrics::RegisterPrefs(pref_registry.get()); diff --git a/chromecast/chromecast.gyp b/chromecast/chromecast.gyp index dd7d56a..6bcb71f 100644 --- a/chromecast/chromecast.gyp +++ b/chromecast/chromecast.gyp @@ -354,7 +354,7 @@ 'base/cast_sys_info_dummy.h', ], 'conditions': [ - ['chromecast_branding!="Chrome"', { + ['chromecast_branding!="Chrome" and OS!="android"', { 'sources': [ 'base/cast_sys_info_util_simple.cc', ], @@ -375,10 +375,10 @@ 'message': 'Generating version header file: <@(_outputs)', 'inputs': [ '<(version_path)', - 'common/version.h.in', + 'base/version.h.in', ], 'outputs': [ - '<(SHARED_INTERMEDIATE_DIR)/chromecast/common/version.h', + '<(SHARED_INTERMEDIATE_DIR)/chromecast/base/version.h', ], 'action': [ 'python', @@ -392,7 +392,7 @@ '-e', 'CAST_BUILD_RELEASE="<!(if test -f <(cast_build_release); then cat <(cast_build_release); else echo eng.${USER}; fi)"', '-e', 'CAST_IS_DEBUG_BUILD=1 if "<(CONFIGURATION_NAME)" == "Debug" or <(cast_is_debug_build) == 1 else 0', '-e', 'CAST_PRODUCT_TYPE=<(cast_product_type)', - 'common/version.h.in', + 'base/version.h.in', '<@(_outputs)', ], 'includes': [ @@ -446,6 +446,8 @@ '../breakpad/src', ], 'sources': [ + 'base/cast_sys_info_android.cc', + 'base/cast_sys_info_android.h', 'android/cast_jni_registrar.cc', 'android/cast_jni_registrar.h', 'android/cast_metrics_helper_android.cc', @@ -535,6 +537,7 @@ 'sources': [ 'browser/android/apk/src/org/chromium/chromecast/shell/CastCrashHandler.java', 'browser/android/apk/src/org/chromium/chromecast/shell/CastMetricsHelper.java', + 'browser/android/apk/src/org/chromium/chromecast/shell/CastSysInfoAndroid.java', 'browser/android/apk/src/org/chromium/chromecast/shell/CastWindowAndroid.java', 'browser/android/apk/src/org/chromium/chromecast/shell/CastWindowManager.java', ], diff --git a/chromecast/common/cast_content_client.cc b/chromecast/common/cast_content_client.cc index 4772fdd..ca3a263 100644 --- a/chromecast/common/cast_content_client.cc +++ b/chromecast/common/cast_content_client.cc @@ -6,7 +6,7 @@ #include "base/strings/stringprintf.h" #include "base/sys_info.h" -#include "chromecast/common/version.h" +#include "chromecast/base/version.h" #include "content/public/common/user_agent.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" diff --git a/chromecast/crash/android/cast_crash_reporter_client_android.cc b/chromecast/crash/android/cast_crash_reporter_client_android.cc index ae40637..d914767 100644 --- a/chromecast/crash/android/cast_crash_reporter_client_android.cc +++ b/chromecast/crash/android/cast_crash_reporter_client_android.cc @@ -9,8 +9,8 @@ #include "base/files/file_util.h" #include "base/path_service.h" #include "chromecast/android/chromecast_config_android.h" +#include "chromecast/base/version.h" #include "chromecast/common/global_descriptors.h" -#include "chromecast/common/version.h" #include "chromecast/crash/cast_crash_keys.h" #include "content/public/common/content_switches.h" diff --git a/chromecast/crash/android/crash_handler.cc b/chromecast/crash/android/crash_handler.cc index 1c42dfa..8bd580b 100644 --- a/chromecast/crash/android/crash_handler.cc +++ b/chromecast/crash/android/crash_handler.cc @@ -15,7 +15,7 @@ #include "base/strings/string_number_conversions.h" #include "breakpad/src/client/linux/handler/exception_handler.h" #include "breakpad/src/client/linux/handler/minidump_descriptor.h" -#include "chromecast/common/version.h" +#include "chromecast/base/version.h" #include "chromecast/crash/android/cast_crash_reporter_client_android.h" #include "components/crash/app/breakpad_linux.h" #include "components/crash/app/crash_reporter_client.h" |