1 // Copyright 2023 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/android/base_features.h"
6 #include "base/android/feature_map.h"
7 #include "base/base_jni/BaseFeatureMap_jni.h"
8 #include "base/no_destructor.h"
10 namespace base::android {
14 // Array of features exposed through the Java BaseFeatureMap API. Entries in
15 // this array refer to features defined in base_features.h.
16 const base::Feature* const kFeaturesExposedToJava[] = {
17 &features::kBrowserProcessMemoryPurge,
18 &features::kCrashBrowserOnChildMismatchIfBrowserChanged,
19 &features::kCrashBrowserOnAnyChildMismatch,
23 base::android::FeatureMap* GetFeatureMap() {
24 static base::NoDestructor<base::android::FeatureMap> kFeatureMap(std::vector(
25 std::begin(kFeaturesExposedToJava), std::end(kFeaturesExposedToJava)));
26 return kFeatureMap.get();
31 static jlong JNI_BaseFeatureMap_GetNativeMap(JNIEnv* env) {
32 return reinterpret_cast<jlong>(GetFeatureMap());
35 } // namespace base::android