blob: 61aa3856e182978c6babbee5039d79099aaced53 [file] [log] [blame]
// 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/android/extensions/extensions_url_override_registry_manager.h"
#include <memory>
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/android/jni_weak_ref.h"
#include "base/numerics/safe_conversions.h"
#include "chrome/browser/flags/android/chrome_feature_list.h"
#include "extensions/buildflags/buildflags.h"
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
#include "chrome/browser/android/extensions/extensions_url_override_state_tracker_impl.h"
#endif
// Must come after all headers that specialize FromJniType() / ToJniType().
// This JNI header is generated from ExtensionsUrlOverrideRegistryManager.java.
#include "chrome/browser/android/extensions/jni_headers/ExtensionsUrlOverrideRegistryManager_jni.h"
namespace extensions {
static jlong JNI_ExtensionsUrlOverrideRegistryManager_Initialize(
JNIEnv* env,
const jni_zero::JavaParamRef<jobject>& j_object,
Profile* profile) {
ExtensionsUrlOverrideRegistryManager* extensions_url_override_manager =
new ExtensionsUrlOverrideRegistryManager(env, j_object, profile);
return reinterpret_cast<intptr_t>(extensions_url_override_manager);
}
void ExtensionsUrlOverrideRegistryManager::OnUrlOverrideEnabled(
const std::string& chrome_url_path,
bool incognito_enabled) {
JNIEnv* env = base::android::AttachCurrentThread();
Java_ExtensionsUrlOverrideRegistryManager_onUrlOverrideEnabled(
env, j_object_, chrome_url_path, incognito_enabled);
}
void ExtensionsUrlOverrideRegistryManager::OnUrlOverrideDisabled(
const std::string& chrome_url_path) {
JNIEnv* env = base::android::AttachCurrentThread();
Java_ExtensionsUrlOverrideRegistryManager_onUrlOverrideDisabled(
env, j_object_, chrome_url_path);
}
ExtensionsUrlOverrideRegistryManager::ExtensionsUrlOverrideRegistryManager(
JNIEnv* env,
const jni_zero::JavaParamRef<jobject>& j_object,
Profile* profile)
: j_object_(env, j_object) {
if (!base::FeatureList::IsEnabled(
chrome::android::kChromeNativeUrlOverriding)) {
return;
}
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
state_tracker_ =
std::make_unique<ExtensionUrlOverrideStateTrackerImpl>(profile, this);
#endif
}
ExtensionsUrlOverrideRegistryManager::~ExtensionsUrlOverrideRegistryManager() =
default;
void ExtensionsUrlOverrideRegistryManager::Destroy(JNIEnv* env) {
delete this;
}
} // namespace extensions