Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8376473 authored by Yu-Han Yang's avatar Yu-Han Yang
Browse files

Replace future elapsedRealtime with system clock

Bug: 314328533
Test: on cuttlefish
Change-Id: Ide876ff5bed855972a5c6e2f853c173b5e652535
parent b8dad2fb
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -180,6 +180,12 @@ aconfig_declarations {
    ],
}

cc_aconfig_library {
    name: "android_location_flags_c_lib",
    vendor_available: true,
    aconfig_declarations: "android.location.flags-aconfig",
}

java_aconfig_library {
    name: "android.location.flags-aconfig-java",
    aconfig_declarations: "android.location.flags-aconfig",
@@ -256,7 +262,6 @@ java_aconfig_library {
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}


// OS
aconfig_declarations {
    name: "android.os.flags-aconfig",
+7 −0
Original line number Diff line number Diff line
@@ -41,3 +41,10 @@ flag {
    description: "Flag for GNSS configuration from resource"
    bug: "317734846"
}

flag {
    name: "replace_future_elapsed_realtime_jni"
    namespace: "location"
    description: "Flag for replacing future elapsedRealtime in JNI"
    bug: "314328533"
}
+1 −0
Original line number Diff line number Diff line
@@ -68,5 +68,6 @@ cc_defaults {
        "android.hardware.gnss@2.1",
        "android.hardware.gnss.measurement_corrections@1.0",
        "android.hardware.gnss.visibility_control@1.0",
        "android_location_flags_c_lib",
    ],
}
+9 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@

#include <android/hardware/gnss/1.0/IGnss.h>
#include <android/hardware/gnss/2.0/IGnss.h>
#include <android_location_flags.h>
#include <utils/SystemClock.h>
/*
 * Save a pointer to JavaVm to attach/detach threads executing
@@ -27,6 +28,8 @@
 */
JavaVM* android::ScopedJniThreadAttach::sJvm;

namespace location_flags = android::location::flags;

namespace android {

namespace {
@@ -194,7 +197,12 @@ jobject translateGnssLocation(JNIEnv* env, const android::hardware::gnss::GnssLo

    flags = static_cast<uint32_t>(location.elapsedRealtime.flags);
    if (flags & android::hardware::gnss::ElapsedRealtime::HAS_TIMESTAMP_NS) {
        if (location_flags::replace_future_elapsed_realtime_jni() &&
            location.elapsedRealtime.timestampNs > android::elapsedRealtimeNano()) {
            SET(ElapsedRealtimeNanos, android::elapsedRealtimeNano());
        } else {
            SET(ElapsedRealtimeNanos, location.elapsedRealtime.timestampNs);
        }
    } else {
        SET(ElapsedRealtimeNanos, android::elapsedRealtimeNano());
    }