1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/safe_browsing/advanced_protection_status_manager_android.h"
#include <jni.h>
#include "base/command_line.h"
#include "chrome/browser/safe_browsing/android/jni_headers/AdvancedProtectionStatusManagerAndroidBridge_jni.h"
#include "components/safe_browsing/core/common/safebrowsing_switches.h"
namespace safe_browsing {
AdvancedProtectionStatusManagerAndroid::
AdvancedProtectionStatusManagerAndroid() {
JNIEnv* env = base::android::AttachCurrentThread();
java_manager_ = Java_AdvancedProtectionStatusManagerAndroidBridge_create(
env, reinterpret_cast<intptr_t>(this));
UpdateState();
}
AdvancedProtectionStatusManagerAndroid::
~AdvancedProtectionStatusManagerAndroid() {
JNIEnv* env = base::android::AttachCurrentThread();
Java_AdvancedProtectionStatusManagerAndroidBridge_destroy(env, java_manager_);
}
// static
bool AdvancedProtectionStatusManagerAndroid::QueryIsUnderAdvancedProtection() {
JNIEnv* env = base::android::AttachCurrentThread();
return Java_AdvancedProtectionStatusManagerAndroidBridge_isUnderAdvancedProtection(
env);
}
bool AdvancedProtectionStatusManagerAndroid::IsUnderAdvancedProtection() const {
return is_under_advanced_protection_;
}
void AdvancedProtectionStatusManagerAndroid::
SetAdvancedProtectionStatusForTesting(bool enrolled) {
if (is_under_advanced_protection_ == enrolled) {
return;
}
is_under_advanced_protection_ = enrolled;
NotifyObserversStatusChanged();
}
void AdvancedProtectionStatusManagerAndroid::
OnAdvancedProtectionOsSettingChanged(JNIEnv* env) {
bool was_under_advanced_protection = is_under_advanced_protection_;
UpdateState();
if (was_under_advanced_protection == is_under_advanced_protection_) {
return;
}
NotifyObserversStatusChanged();
}
void AdvancedProtectionStatusManagerAndroid::UpdateState() {
// TODO(crbug.com/412761437) Command line switch presence is tested in both
// C++ and Java. Remove duplicate switch presence switch.
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kForceTreatUserAsAdvancedProtection)) {
is_under_advanced_protection_ = true;
return;
}
is_under_advanced_protection_ =
AdvancedProtectionStatusManagerAndroid::QueryIsUnderAdvancedProtection();
}
} // namespace safe_browsing
|