// Copyright 2013 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 "base/android/sys_utils.h" #include #include "base/android/build_info.h" #include "base/process/process_metrics.h" #include "base/sys_info.h" #include "base/trace_event/trace_event.h" #include "jni/SysUtils_jni.h" namespace base { namespace android { bool SysUtils::IsLowEndDeviceFromJni() { JNIEnv* env = AttachCurrentThread(); return Java_SysUtils_isLowEndDevice(env); } bool SysUtils::IsCurrentlyLowMemory() { JNIEnv* env = AttachCurrentThread(); return Java_SysUtils_isCurrentlyLowMemory(env); } // Logs the number of minor / major page faults to tracing (and also the time to // collect) the metrics. Does nothing if tracing is not enabled. static void JNI_SysUtils_LogPageFaultCountToTracing( JNIEnv* env, const base::android::JavaParamRef& jcaller) { // This is racy, but we are OK losing data, and collecting it is potentially // expensive (reading and parsing a file). bool enabled; TRACE_EVENT_CATEGORY_GROUP_ENABLED("startup", &enabled); if (!enabled) return; TRACE_EVENT_BEGIN2("memory", "CollectPageFaultCount", "minor", 0, "major", 0); std::unique_ptr process_metrics( base::ProcessMetrics::CreateProcessMetrics( base::GetCurrentProcessHandle())); base::PageFaultCounts counts; process_metrics->GetPageFaultCounts(&counts); TRACE_EVENT_END2("memory", "CollectPageFaults", "minor", counts.minor, "major", counts.major); } } // namespace android } // namespace base