blob: 735ee5dd383e3705b8e72bab04e168ecae4fe602 [file]
// Copyright 2026 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/contextual_tasks/contextual_tasks_utils.h"
#include "base/android/jni_string.h"
#include "base/strings/utf_string_conversions.h"
#include "components/contextual_tasks/public/features.h"
#include "components/omnibox/browser/location_bar_model_util.h"
#include "content/public/browser/web_contents.h"
#include "url/android/gurl_android.h"
#include "url/gurl.h"
// Must come after all headers that specialize FromJniType() / ToJniType().
#include "chrome/browser/contextual_tasks/utils_jni_headers/ContextualTasksUtils_jni.h"
using base::android::ConvertUTF8ToJavaString;
using base::android::ScopedJavaLocalRef;
static bool JNI_ContextualTasksUtils_IsContextualTasksUiEnabled(JNIEnv* env) {
return contextual_tasks::IsContextualTasksUIEnabled();
}
static GURL JNI_ContextualTasksUtils_GetContextualTasksDisplayUrl(
JNIEnv* env,
content::WebContents* web_contents) {
return contextual_tasks::GetContextualTasksDisplayURL(web_contents);
}
static GURL JNI_ContextualTasksUtils_GetContextualTasksFunctionalURL(
JNIEnv* env,
content::WebContents* web_contents) {
return contextual_tasks::GetContextualTasksFunctionalURL(web_contents);
}
static ScopedJavaLocalRef<jstring> JNI_ContextualTasksUtils_GetReplacementUrl(
JNIEnv* env,
const std::u16string& current_text,
int32_t selection_start,
int32_t selection_end,
const GURL& functional_gurl) {
if (selection_start < 0 ||
selection_end > static_cast<int>(current_text.length()) ||
selection_start >= selection_end) {
return nullptr;
}
// Do not adjust if selection did not start at the beginning of the field.
if (selection_start != 0) {
return nullptr;
}
std::string selected_text_utf8 = base::UTF16ToUTF8(
current_text.substr(selection_start, selection_end - selection_start));
GURL url_from_text(selected_text_utf8);
GURL replacement_url = location_bar_model::AdjustContextualTasksURLForCopy(
url_from_text, functional_gurl);
if (replacement_url.is_valid()) {
return ConvertUTF8ToJavaString(env, replacement_url.spec());
}
return nullptr;
}
DEFINE_JNI(ContextualTasksUtils)