AIChat build flag and gn var (#31988)
* Add AI Chat build flag to components/ai_chat * Add AI Chat build flag to browser/ui * Add AI Chat build flag to browser/resources * Add AI Chat build flag to chromium overrides * Add AI Chat build flag to other components * Add AI Chat build flag to core browser files * Add AI Chat build flag to app and renderer * Add AI Chat build flag to remaining files * Set enable_ai_chat to !is_brave_origin_branded * Review comments Including gn_check errors in chromium_src * Exclude ai_chat Jest tests when not enabled
This commit is contained in:
+5
-1
@@ -3,6 +3,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# you can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_vpn/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/speedreader/common/buildflags/buildflags.gni")
|
||||
|
||||
@@ -14,7 +15,6 @@ group("storybook") {
|
||||
# are disabled in a regular brave build due to build flags,
|
||||
# they will be generated before storybook is compiled.
|
||||
deps = [
|
||||
"//brave/components/ai_chat/core/common/mojom:mojom_js",
|
||||
"//brave/components/brave_new_tab_ui:mojom_js",
|
||||
"//brave/components/brave_news/common:mojom_js",
|
||||
"//brave/components/brave_rewards/core/mojom:mojom_js",
|
||||
@@ -25,6 +25,10 @@ group("storybook") {
|
||||
"//mojo/public/js:resources",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/common/mojom:mojom_js" ]
|
||||
}
|
||||
|
||||
if (enable_speedreader) {
|
||||
deps += [ "//brave/components/speedreader/common:mojom_js" ]
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ source_set("command_ids") {
|
||||
|
||||
brave_grit("brave_generated_resources_grit") {
|
||||
defines = [
|
||||
"enable_ai_chat=$enable_ai_chat",
|
||||
"enable_brave_vpn=$enable_brave_vpn",
|
||||
"enable_containers=$enable_containers",
|
||||
"enable_pin_shortcut=$enable_pin_shortcut",
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "brave/browser/ui/brave_ui_features.h"
|
||||
#include "brave/browser/ui/tabs/features.h"
|
||||
#include "brave/browser/updater/buildflags.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/ai_rewriter/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_ads/browser/ad_units/notification_ad/custom_notification_ad_feature.h"
|
||||
#include "brave/components/brave_ads/core/public/ad_units/notification_ad/notification_ad_feature.h"
|
||||
@@ -50,6 +50,10 @@
|
||||
#include "net/base/features.h"
|
||||
#include "third_party/blink/public/common/features.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_REWRITER)
|
||||
#include "brave/components/ai_rewriter/common/features.h"
|
||||
#endif
|
||||
@@ -532,6 +536,7 @@ constexpr flags_ui::FeatureEntry::Choice kVerticalTabCollapseDelayChoices[] = {
|
||||
#define BRAVE_MIDDLE_CLICK_AUTOSCROLL_FEATURE_ENTRY
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#define BRAVE_AI_CHAT_FEATURE_ENTRIES \
|
||||
EXPAND_FEATURE_ENTRIES( \
|
||||
{ \
|
||||
@@ -608,6 +613,9 @@ constexpr flags_ui::FeatureEntry::Choice kVerticalTabCollapseDelayChoices[] = {
|
||||
kOsWin | kOsMac | kOsLinux | kOsAndroid, \
|
||||
FEATURE_VALUE_TYPE(ai_chat::features::kPageContextEnabledInitially), \
|
||||
})
|
||||
#else
|
||||
#define BRAVE_AI_CHAT_FEATURE_ENTRIES
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_REWRITER)
|
||||
#define BRAVE_AI_REWRITER \
|
||||
|
||||
@@ -7,6 +7,8 @@ import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//build/buildflag_header.gni")
|
||||
import("//printing/buildflags/buildflags.gni")
|
||||
|
||||
assert(enable_ai_chat)
|
||||
|
||||
static_library("ai_chat") {
|
||||
sources = [
|
||||
"ai_chat_service_factory.cc",
|
||||
|
||||
@@ -3,13 +3,19 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
|
||||
source_set("unit_tests") {
|
||||
testonly = true
|
||||
sources = [ "chrome_autocomplete_provider_client_unittest.cc" ]
|
||||
deps = [
|
||||
"//base/test:test_support",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//components/omnibox/browser",
|
||||
"//testing/gtest",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/common" ]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "base/test/scoped_feature_list.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "components/omnibox/browser/autocomplete_controller.h"
|
||||
@@ -79,3 +82,5 @@ TEST_F(AutocompleteControllerLeoTest, MaybeShowLeoMatchOrdering) {
|
||||
<< "When AIChatFirst is on, Leo match is NOT forced down.";
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include "brave/browser/themes/brave_dark_mode_utils.h"
|
||||
#include "brave/common/brave_channel_info.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/brave_ads/browser/component_updater/resource_component.h"
|
||||
#include "brave/components/brave_component_updater/browser/brave_component_updater_delegate.h"
|
||||
#include "brave/components/brave_component_updater/browser/local_data_files_service.h"
|
||||
@@ -64,6 +63,10 @@
|
||||
#include "services/network/public/cpp/resource_request.h"
|
||||
#include "services/network/public/cpp/shared_url_loader_factory.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_AI_CHAT_AGENT_PROFILE)
|
||||
#include "brave/browser/ai_chat/ai_chat_agent_profile_manager.h"
|
||||
#endif
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "base/strings/strcat.h"
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
#include "base/system/sys_info.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#include "brave/browser/brave_account/brave_account_navigation_throttle.h"
|
||||
#include "brave/browser/brave_ads/ads_service_factory.h"
|
||||
#include "brave/browser/brave_browser_features.h"
|
||||
@@ -44,24 +43,11 @@
|
||||
#include "brave/browser/skus/skus_service_factory.h"
|
||||
#include "brave/browser/ui/brave_ui_features.h"
|
||||
#include "brave/browser/ui/webui/ads_internals/ads_internals_ui.h"
|
||||
#include "brave/browser/ui/webui/ai_chat/ai_chat_ui.h"
|
||||
#include "brave/browser/ui/webui/ai_chat/ai_chat_untrusted_conversation_ui.h"
|
||||
#include "brave/browser/ui/webui/brave_rewards/rewards_page_ui.h"
|
||||
#include "brave/browser/ui/webui/skus_internals_ui.h"
|
||||
#include "brave/browser/updater/buildflags.h"
|
||||
#include "brave/browser/url_sanitizer/url_sanitizer_service_factory.h"
|
||||
#include "brave/components/ai_chat/content/browser/ai_chat_brave_search_throttle.h"
|
||||
#include "brave/components/ai_chat/content/browser/ai_chat_throttle.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/ai_chat.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/bookmarks.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/common.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/customization_settings.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/history.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/settings_helper.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/tab_tracker.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/untrusted_frame.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/ai_rewriter/common/buildflags/buildflags.h"
|
||||
#include "brave/components/body_sniffer/body_sniffer_throttle.h"
|
||||
#include "brave/components/brave_account/features.h"
|
||||
@@ -193,16 +179,37 @@ using content::WebContents;
|
||||
using extensions::ChromeContentBrowserClientExtensionsPart;
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#include "brave/browser/ui/webui/ai_chat/ai_chat_ui.h"
|
||||
#include "brave/browser/ui/webui/ai_chat/ai_chat_untrusted_conversation_ui.h"
|
||||
#include "brave/components/ai_chat/content/browser/ai_chat_brave_search_throttle.h"
|
||||
#include "brave/components/ai_chat/content/browser/ai_chat_throttle.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/ai_chat.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/bookmarks.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/common.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/customization_settings.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/history.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/settings_helper.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/tab_tracker.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/untrusted_frame.mojom.h"
|
||||
#endif
|
||||
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "brave/browser/ui/ai_chat/utils.h"
|
||||
#include "brave/browser/ui/webui/brave_account/brave_account_ui_desktop.h"
|
||||
#include "brave/ui/webui/brave_color_change_listener/brave_color_change_handler.h"
|
||||
#include "ui/webui/resources/cr_components/color_change_listener/color_change_listener.mojom.h"
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ui/ai_chat/utils.h"
|
||||
#endif
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
#else
|
||||
#include "brave/browser/ui/webui/brave_account/brave_account_ui_android.h"
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/android/ai_chat_iap_subscription_android.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_REWRITER)
|
||||
#include "brave/browser/ui/webui/ai_rewriter/ai_rewriter_ui.h"
|
||||
@@ -428,7 +435,7 @@ void BindBraveSearchDefaultHost(
|
||||
}
|
||||
}
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
#if BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void BindIAPSubscription(
|
||||
content::RenderFrameHost* const frame_host,
|
||||
mojo::PendingReceiver<ai_chat::mojom::IAPSubscription> receiver) {
|
||||
@@ -629,6 +636,7 @@ void BraveContentBrowserClient::RegisterWebUIInterfaceBrokers(
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (ai_chat::features::IsAIChatEnabled()) {
|
||||
registry.ForWebUI<AIChatUI>()
|
||||
.Add<ai_chat::mojom::AIChatUIHandler>()
|
||||
@@ -639,6 +647,7 @@ void BraveContentBrowserClient::RegisterWebUIInterfaceBrokers(
|
||||
registry.ForWebUI<AIChatUntrustedConversationUI>()
|
||||
.Add<ai_chat::mojom::UntrustedUIHandler>();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_REWRITER)
|
||||
if (ai_rewriter::features::IsAIRewriterEnabled()) {
|
||||
@@ -914,6 +923,7 @@ void BraveContentBrowserClient::RegisterBrowserInterfaceBindersForFrame(
|
||||
base::BindRepeating(&MaybeBindColorChangeHandler));
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
auto* prefs =
|
||||
user_prefs::UserPrefs::Get(render_frame_host->GetBrowserContext());
|
||||
if (ai_chat::IsAIChatEnabled(prefs) &&
|
||||
@@ -935,6 +945,7 @@ void BraveContentBrowserClient::RegisterBrowserInterfaceBindersForFrame(
|
||||
base::BindRepeating(&BindIAPSubscription));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_SPEEDREADER) && !BUILDFLAG(IS_ANDROID)
|
||||
content::RegisterWebUIControllerInterfaceBinder<
|
||||
@@ -1298,6 +1309,7 @@ void BraveContentBrowserClient::CreateThrottlesForNavigation(
|
||||
g_browser_process->GetApplicationLocale());
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (Profile::FromBrowserContext(context)->IsRegularProfile()) {
|
||||
ai_chat::AIChatThrottle::MaybeCreateAndAdd(registry);
|
||||
}
|
||||
@@ -1307,6 +1319,7 @@ void BraveContentBrowserClient::CreateThrottlesForNavigation(
|
||||
base::BindOnce(&ai_chat::OpenAIChatForTab), registry,
|
||||
ai_chat::AIChatServiceFactory::GetForBrowserContext(context),
|
||||
user_prefs::UserPrefs::Get(context));
|
||||
#endif
|
||||
#endif
|
||||
|
||||
brave_search::BackupResultsNavigationThrottle::MaybeCreateAndAdd(registry);
|
||||
|
||||
@@ -18,8 +18,7 @@
|
||||
#include "brave/browser/search_engines/search_engine_tracker.h"
|
||||
#include "brave/browser/themes/brave_dark_mode_utils.h"
|
||||
#include "brave/browser/updater/buildflags.h"
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_ads/core/public/prefs/obsolete_pref_util.h"
|
||||
#include "brave/components/brave_ads/core/public/prefs/pref_registry.h"
|
||||
#include "brave/components/brave_origin/brave_origin_prefs.h"
|
||||
@@ -52,6 +51,11 @@
|
||||
#include "components/webui/chrome_urls/pref_names.h"
|
||||
#include "third_party/widevine/cdm/buildflags.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
|
||||
#include "brave/browser/day_zero_browser_ui_expt/day_zero_browser_ui_expt_manager.h"
|
||||
#endif
|
||||
@@ -181,7 +185,9 @@ void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
|
||||
brave_vpn::RegisterLocalStatePrefs(registry);
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
ai_chat::prefs::RegisterLocalStatePrefs(registry);
|
||||
#endif
|
||||
|
||||
skus::RegisterLocalStatePrefs(registry);
|
||||
|
||||
@@ -195,7 +201,9 @@ void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
|
||||
|
||||
misc_metrics::ProcessMiscMetrics::RegisterPrefs(registry);
|
||||
misc_metrics::PageMetrics::RegisterPrefs(registry);
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
ai_chat::AIChatMetrics::RegisterPrefs(registry);
|
||||
#endif
|
||||
brave_ads::BraveStatsHelper::RegisterLocalStatePrefs(registry);
|
||||
brave_ads::RegisterLocalStatePrefs(registry);
|
||||
misc_metrics::GeneralBrowserUsage::RegisterPrefs(registry);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_vpn/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_wayback_machine/buildflags/buildflags.gni")
|
||||
import("//brave/components/ipfs/buildflags/buildflags.gni")
|
||||
@@ -19,7 +20,7 @@ source_set("brave_origin") {
|
||||
deps = [
|
||||
"//base",
|
||||
"//brave/browser/policy:brave_simple_policy_map",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/brave_news/common",
|
||||
"//brave/components/brave_origin",
|
||||
"//brave/components/brave_policy",
|
||||
@@ -39,6 +40,10 @@ source_set("brave_origin") {
|
||||
"//components/policy/core/common",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/common" ]
|
||||
}
|
||||
|
||||
if (enable_brave_vpn) {
|
||||
deps += [ "//brave/components/brave_vpn/common" ]
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "base/containers/map_util.h"
|
||||
#include "base/no_destructor.h"
|
||||
#include "brave/browser/policy/brave_simple_policy_map.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_origin/brave_origin_policy_manager.h"
|
||||
#include "brave/components/brave_origin/brave_origin_service.h"
|
||||
#include "brave/components/brave_origin/profile_id.h"
|
||||
@@ -38,6 +39,10 @@
|
||||
#include "brave/components/brave_vpn/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
namespace policy {
|
||||
class PolicyService;
|
||||
}
|
||||
@@ -115,11 +120,14 @@ constexpr auto kBraveOriginProfileMetadata =
|
||||
BraveOriginServiceFactory::BraveOriginPrefMetadata(
|
||||
true,
|
||||
/*user_settable=*/false)},
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
// AI Chat preferences
|
||||
{ai_chat::prefs::kEnabledByPolicy,
|
||||
BraveOriginServiceFactory::BraveOriginPrefMetadata(
|
||||
false,
|
||||
/*user_settable=*/false)},
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_SPEEDREADER)
|
||||
// Speedreader preferences
|
||||
|
||||
@@ -16,9 +16,7 @@
|
||||
#include "brave/browser/ui/bookmark/brave_bookmark_prefs.h"
|
||||
#include "brave/browser/ui/omnibox/brave_omnibox_client_impl.h"
|
||||
#include "brave/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/browser/model_service.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_account/prefs.h"
|
||||
#include "brave/components/brave_adaptive_captcha/brave_adaptive_captcha_service.h"
|
||||
#include "brave/components/brave_ads/core/public/prefs/obsolete_pref_util.h"
|
||||
@@ -85,6 +83,12 @@
|
||||
#include "extensions/buildflags/buildflags.h"
|
||||
#include "third_party/widevine/cdm/buildflags.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/model_service.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_WAYBACK_MACHINE)
|
||||
#include "brave/components/brave_wayback_machine/pref_names.h"
|
||||
#endif
|
||||
@@ -323,7 +327,9 @@ void RegisterProfilePrefsForMigration(
|
||||
brave_ads::RegisterProfilePrefsForMigration(registry);
|
||||
|
||||
// Added 2024-04
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
ai_chat::prefs::RegisterProfilePrefsForMigration(registry);
|
||||
#endif
|
||||
|
||||
brave_shields::RegisterShieldsP3AProfilePrefsForMigration(registry);
|
||||
|
||||
@@ -509,8 +515,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
welcome_ui::prefs::RegisterProfilePrefs(registry);
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
ai_chat::prefs::RegisterProfilePrefs(registry);
|
||||
ai_chat::ModelService::RegisterProfilePrefs(registry);
|
||||
#endif
|
||||
|
||||
brave_account::prefs::RegisterPrefs(registry);
|
||||
brave_origin::prefs::RegisterProfilePrefs(registry);
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
#include "base/feature_list.h"
|
||||
#include "base/functional/bind.h"
|
||||
#include "base/functional/callback_helpers.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_utils.h"
|
||||
#include "brave/browser/brave_ads/creatives/search_result_ad/creative_search_result_ad_tab_helper.h"
|
||||
#include "brave/browser/brave_ads/tabs/ads_tab_helper.h"
|
||||
#include "brave/browser/brave_browser_process.h"
|
||||
@@ -26,7 +24,7 @@
|
||||
#include "brave/browser/misc_metrics/process_misc_metrics.h"
|
||||
#include "brave/browser/playlist/playlist_service_factory.h"
|
||||
#include "brave/browser/ui/brave_ui_features.h"
|
||||
#include "brave/components/ai_chat/content/browser/ai_chat_tab_helper.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_perf_predictor/browser/perf_predictor_tab_helper.h"
|
||||
#include "brave/components/brave_wayback_machine/buildflags/buildflags.h"
|
||||
#include "brave/components/playlist/content/browser/playlist_tab_helper.h"
|
||||
@@ -48,6 +46,12 @@
|
||||
#include "printing/buildflags/buildflags.h"
|
||||
#include "third_party/widevine/cdm/buildflags.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_utils.h"
|
||||
#include "brave/components/ai_chat/content/browser/ai_chat_tab_helper.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
#include "brave/browser/android/youtube_script_injector/youtube_script_injector_tab_helper.h"
|
||||
#endif
|
||||
@@ -63,8 +67,12 @@
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/print_preview_extractor.h"
|
||||
#include "brave/browser/ai_chat/print_preview_extractor_internal.h"
|
||||
#endif
|
||||
|
||||
#include "chrome/browser/ui/webui/print_preview/print_preview_ui.h"
|
||||
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
||||
|
||||
@@ -123,6 +131,7 @@ void AttachTabHelpers(content::WebContents* web_contents) {
|
||||
|
||||
brave_rewards::RewardsTabHelper::CreateForWebContents(web_contents);
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
content::BrowserContext* context = web_contents->GetBrowserContext();
|
||||
if (ai_chat::IsAllowedForContext(context)) {
|
||||
ai_chat::AIChatTabHelper::CreateForWebContents(
|
||||
@@ -158,6 +167,7 @@ void AttachTabHelpers(content::WebContents* web_contents) {
|
||||
#endif
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_WIDEVINE)
|
||||
BraveDrmTabHelper::CreateForWebContents(web_contents);
|
||||
|
||||
@@ -6,9 +6,6 @@
|
||||
#include "brave/browser/browser_context_keyed_service_factories.h"
|
||||
|
||||
#include "base/feature_list.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#include "brave/browser/ai_chat/ollama/ollama_service_factory.h"
|
||||
#include "brave/browser/ai_chat/tab_tracker_service_factory.h"
|
||||
#include "brave/browser/brave_account/brave_account_service_factory.h"
|
||||
#include "brave/browser/brave_adaptive_captcha/brave_adaptive_captcha_service_factory.h"
|
||||
#include "brave/browser/brave_ads/ads_service_factory.h"
|
||||
@@ -40,8 +37,7 @@
|
||||
#include "brave/browser/sync/brave_sync_alerts_service_factory.h"
|
||||
#include "brave/browser/url_sanitizer/url_sanitizer_service_factory.h"
|
||||
#include "brave/browser/webcompat_reporter/webcompat_reporter_service_factory.h"
|
||||
#include "brave/components/ai_chat/content/browser/model_service_factory.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_account/features.h"
|
||||
#include "brave/components/brave_perf_predictor/browser/named_third_party_registry_factory.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
@@ -54,6 +50,14 @@
|
||||
#include "brave/components/tor/buildflags/buildflags.h"
|
||||
#include "brave/components/web_discovery/buildflags/buildflags.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#include "brave/browser/ai_chat/ollama/ollama_service_factory.h"
|
||||
#include "brave/browser/ai_chat/tab_tracker_service_factory.h"
|
||||
#include "brave/components/ai_chat/content/browser/model_service_factory.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
#include "brave/browser/brave_vpn/brave_vpn_service_factory.h"
|
||||
#endif
|
||||
@@ -186,12 +190,14 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt() {
|
||||
speedreader::SpeedreaderServiceFactory::GetInstance();
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (ai_chat::features::IsAIChatEnabled()) {
|
||||
ai_chat::AIChatServiceFactory::GetInstance();
|
||||
ai_chat::ModelServiceFactory::GetInstance();
|
||||
ai_chat::OllamaServiceFactory::GetInstance();
|
||||
ai_chat::TabTrackerServiceFactory::GetInstance();
|
||||
}
|
||||
#endif
|
||||
|
||||
brave_search::BackupResultsServiceFactory::GetInstance();
|
||||
|
||||
|
||||
@@ -11,9 +11,8 @@
|
||||
#include "base/containers/flat_map.h"
|
||||
#include "base/no_destructor.h"
|
||||
#include "base/notreached.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#include "brave/browser/brave_news/brave_news_controller_factory.h"
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_service.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_news/browser/brave_news_controller.h"
|
||||
#include "brave/components/content_settings/core/browser/brave_content_settings_pref_provider.h"
|
||||
#include "brave/components/content_settings/core/browser/brave_content_settings_utils.h"
|
||||
@@ -26,6 +25,11 @@
|
||||
#include "components/content_settings/core/browser/host_content_settings_map.h"
|
||||
#include "content/public/browser/browsing_data_remover.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_service.h"
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
|
||||
// TODO(boocmp): Remove this in
|
||||
@@ -141,6 +145,7 @@ void BraveBrowsingDataRemoverDelegate::RemoveEmbedderData(
|
||||
profile_)) {
|
||||
brave_news_controller->ClearHistory();
|
||||
}
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
// AI Chat history but only associated content, not neccessary if we
|
||||
// are also deleting entire AI Chat history.
|
||||
if (!(remove_mask &
|
||||
@@ -151,8 +156,10 @@ void BraveBrowsingDataRemoverDelegate::RemoveEmbedderData(
|
||||
ai_chat_service->DeleteAssociatedWebContent(delete_begin, delete_end);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
// That code executes on desktop only. Android part is done inside
|
||||
// BraveClearBrowsingDataFragment::onClearBrowsingData(). It's done
|
||||
// that way to avoid extensive patching in java files by adding extra
|
||||
@@ -165,6 +172,7 @@ void BraveBrowsingDataRemoverDelegate::RemoveEmbedderData(
|
||||
ai_chat_service->DeleteConversations(delete_begin, delete_end);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((remove_mask & content::BrowsingDataRemover::DATA_TYPE_COOKIES) ||
|
||||
(remove_mask & chrome_browsing_data_remover::DATA_TYPE_HISTORY)) {
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "base/scoped_multi_source_observation.h"
|
||||
#include "base/trace_event/trace_event.h"
|
||||
#include "base/values.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "chrome/browser/browser_process.h"
|
||||
#include "chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h"
|
||||
#include "chrome/browser/lifetime/browser_shutdown.h"
|
||||
@@ -106,9 +107,11 @@ bool GetClearBrowsingDataOnExitSettings(const Profile* profile,
|
||||
*remove_mask |= chrome_browsing_data_remover::DATA_TYPE_CONTENT_SETTINGS;
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (prefs->GetBoolean(browsing_data::prefs::kDeleteBraveLeoHistoryOnExit)) {
|
||||
*remove_mask |= chrome_browsing_data_remover::DATA_TYPE_BRAVE_LEO_HISTORY;
|
||||
}
|
||||
#endif
|
||||
|
||||
return (*remove_mask != 0);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "base/run_loop.h"
|
||||
#include "base/task/single_thread_task_runner.h"
|
||||
#include "base/test/scoped_feature_list.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "chrome/app/chrome_command_ids.h"
|
||||
#include "chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
@@ -113,8 +114,10 @@ class BraveClearDataOnExitTest
|
||||
true);
|
||||
prefService->SetBoolean(browsing_data::prefs::kDeleteSiteSettingsOnExit,
|
||||
true);
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
prefService->SetBoolean(browsing_data::prefs::kDeleteBraveLeoHistoryOnExit,
|
||||
true);
|
||||
#endif
|
||||
}
|
||||
|
||||
uint64_t GetRemoveMaskAll() {
|
||||
@@ -124,7 +127,9 @@ class BraveClearDataOnExitTest
|
||||
chrome_browsing_data_remover::DATA_TYPE_SITE_DATA |
|
||||
chrome_browsing_data_remover::DATA_TYPE_PASSWORDS |
|
||||
chrome_browsing_data_remover::DATA_TYPE_FORM_DATA |
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
chrome_browsing_data_remover::DATA_TYPE_BRAVE_LEO_HISTORY |
|
||||
#endif
|
||||
chrome_browsing_data_remover::DATA_TYPE_CONTENT_SETTINGS;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//extensions/buildflags/buildflags.gni")
|
||||
|
||||
brave_browser_browsing_data_sources = [
|
||||
@@ -14,8 +15,7 @@ brave_browser_browsing_data_sources = [
|
||||
|
||||
brave_browser_browsing_data_deps = [
|
||||
"//base",
|
||||
"//brave/browser/ai_chat",
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/content_settings/core/common",
|
||||
"//chrome/browser:browser_process",
|
||||
"//chrome/browser/browsing_data:constants",
|
||||
@@ -28,6 +28,13 @@ brave_browser_browsing_data_deps = [
|
||||
"//content/public/browser",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
brave_browser_browsing_data_deps += [
|
||||
"//brave/browser/ai_chat",
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
]
|
||||
}
|
||||
|
||||
if (enable_extensions) {
|
||||
brave_browser_browsing_data_deps += [
|
||||
"//brave/common/extensions/api",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_vpn/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_wayback_machine/buildflags/buildflags.gni")
|
||||
import("//brave/components/speedreader/common/buildflags/buildflags.gni")
|
||||
@@ -104,7 +105,7 @@ source_set("extensions") {
|
||||
"//brave/browser/ui:brave_tab_prefs",
|
||||
"//brave/common",
|
||||
"//brave/common/extensions/api",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/brave_adaptive_captcha",
|
||||
"//brave/components/brave_ads/browser",
|
||||
"//brave/components/brave_ads/core/public:headers",
|
||||
@@ -128,6 +129,7 @@ source_set("extensions") {
|
||||
"//brave/components/playlist/core/common",
|
||||
"//brave/components/request_otr/common",
|
||||
"//brave/components/sidebar/browser",
|
||||
"//brave/components/speedreader/common/buildflags",
|
||||
"//brave/components/tor/buildflags",
|
||||
"//brave/components/web_discovery/buildflags",
|
||||
"//brave/components/webcompat_reporter/common",
|
||||
@@ -166,6 +168,10 @@ source_set("extensions") {
|
||||
deps += [ "//brave/components/speedreader" ]
|
||||
}
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/common" ]
|
||||
}
|
||||
|
||||
if (enable_brave_vpn) {
|
||||
deps += [ "//brave/components/brave_vpn/common" ]
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//extensions/buildflags/buildflags.gni")
|
||||
|
||||
source_set("misc_metrics") {
|
||||
@@ -13,6 +14,7 @@ source_set("misc_metrics") {
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//components/keyed_service/content",
|
||||
"//components/keyed_service/core",
|
||||
"//components/prefs",
|
||||
@@ -39,7 +41,6 @@ static_library("misc_metrics_impl") {
|
||||
"//brave/browser:browser_process",
|
||||
"//brave/browser/misc_metrics",
|
||||
"//brave/browser/profiles:util",
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
"//brave/components/misc_metrics",
|
||||
"//brave/components/p3a_utils",
|
||||
"//brave/components/time_period_storage",
|
||||
@@ -56,6 +57,10 @@ static_library("misc_metrics_impl") {
|
||||
"//content/public/browser",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/browser" ]
|
||||
}
|
||||
|
||||
if (enable_extensions) {
|
||||
sources += [
|
||||
"//brave/browser/misc_metrics/extension_metrics.cc",
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "brave/browser/brave_stats/first_run_util.h"
|
||||
#include "brave/browser/misc_metrics/profile_new_tab_metrics.h"
|
||||
#include "brave/browser/misc_metrics/theme_metrics.h"
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/misc_metrics/autofill_metrics.h"
|
||||
#include "brave/components/misc_metrics/language_metrics.h"
|
||||
#include "brave/components/misc_metrics/page_metrics.h"
|
||||
@@ -27,6 +27,10 @@
|
||||
#include "components/user_prefs/user_prefs.h"
|
||||
#include "content/public/browser/browser_context.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
#include "brave/browser/brave_browser_process.h"
|
||||
#include "brave/browser/misc_metrics/misc_android_metrics.h"
|
||||
@@ -49,10 +53,12 @@ ProfileMiscMetricsService::ProfileMiscMetricsService(
|
||||
ntp_background_images::prefs::kNewTabPageSponsoredImagesSurveyPanelist,
|
||||
base::BindRepeating(&ProfileMiscMetricsService::ReportSimpleMetrics,
|
||||
base::Unretained(this)));
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (local_state) {
|
||||
ai_chat_metrics_ =
|
||||
std::make_unique<ai_chat::AIChatMetrics>(local_state, profile_prefs_);
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
}
|
||||
auto* profile = Profile::FromBrowserContext(context);
|
||||
auto* history_service = HistoryServiceFactory::GetForProfile(
|
||||
@@ -137,8 +143,10 @@ void ProfileMiscMetricsService::ReportSimpleMetrics() {
|
||||
}
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
ai_chat::AIChatMetrics* ProfileMiscMetricsService::GetAIChatMetrics() {
|
||||
return ai_chat_metrics_.get();
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
} // namespace misc_metrics
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "build/build_config.h"
|
||||
#include "components/keyed_service/core/keyed_service.h"
|
||||
#include "components/prefs/pref_change_registrar.h"
|
||||
@@ -18,9 +19,11 @@ namespace content {
|
||||
class BrowserContext;
|
||||
} // namespace content
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
namespace ai_chat {
|
||||
class AIChatMetrics;
|
||||
} // namespace ai_chat
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
namespace misc_metrics {
|
||||
|
||||
@@ -52,7 +55,9 @@ class ProfileMiscMetricsService : public KeyedService {
|
||||
void Shutdown() override;
|
||||
|
||||
PageMetrics* GetPageMetrics();
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
ai_chat::AIChatMetrics* GetAIChatMetrics();
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
MiscAndroidMetrics* GetMiscAndroidMetrics();
|
||||
#endif
|
||||
@@ -66,7 +71,9 @@ class ProfileMiscMetricsService : public KeyedService {
|
||||
std::unique_ptr<AutofillMetrics> autofill_metrics_ = nullptr;
|
||||
std::unique_ptr<LanguageMetrics> language_metrics_ = nullptr;
|
||||
std::unique_ptr<PageMetrics> page_metrics_ = nullptr;
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
std::unique_ptr<ai_chat::AIChatMetrics> ai_chat_metrics_ = nullptr;
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
std::unique_ptr<MiscAndroidMetrics> misc_android_metrics_ = nullptr;
|
||||
#else
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
|
||||
# These files needs access to some files in chrome/browser target.
|
||||
brave_browser_misc_metrics_sources = [
|
||||
"//brave/browser/misc_metrics/profile_misc_metrics_service.cc",
|
||||
@@ -13,7 +15,7 @@ brave_browser_misc_metrics_sources = [
|
||||
brave_browser_misc_metrics_deps = [
|
||||
"//brave/browser:browser_process",
|
||||
"//brave/browser/profiles:util",
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/misc_metrics",
|
||||
"//brave/components/ntp_background_images/browser",
|
||||
"//brave/components/ntp_background_images/common",
|
||||
@@ -24,6 +26,11 @@ brave_browser_misc_metrics_deps = [
|
||||
"//content/public/browser",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
brave_browser_misc_metrics_deps +=
|
||||
[ "//brave/components/ai_chat/core/browser" ]
|
||||
}
|
||||
|
||||
if (!is_android) {
|
||||
brave_browser_misc_metrics_sources += [
|
||||
"//brave/browser/misc_metrics/default_browser_monitor.cc",
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#include "brave/browser/brave_browser_process.h"
|
||||
#include "brave/browser/brave_rewards/rewards_service_factory.h"
|
||||
#include "brave/browser/perf/brave_perf_switches.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_ads/core/public/prefs/pref_names.h"
|
||||
#include "brave/components/brave_news/common/pref_names.h"
|
||||
#include "brave/components/brave_rewards/content/rewards_service.h"
|
||||
@@ -21,6 +21,10 @@
|
||||
#include "chrome/common/chrome_switches.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_SPEEDREADER)
|
||||
#include "brave/components/speedreader/speedreader_pref_names.h"
|
||||
#endif
|
||||
@@ -76,10 +80,12 @@ void MaybeEnableBraveFeaturesPrefsForPerfTesting(Profile* profile) {
|
||||
speedreader::kSpeedreaderAllowedForAllReadableSites, true);
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
profile->GetPrefs()->SetTime(ai_chat::prefs::kLastAcceptedDisclaimer,
|
||||
base::Time::Now());
|
||||
profile->GetPrefs()->SetBoolean(
|
||||
ai_chat::prefs::kBraveChatAutocompleteProviderEnabled, true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void MaybeEnableBraveFeaturesServicesAndComponentsForPerfTesting(
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "base/scoped_observation.h"
|
||||
#include "brave/browser/brave_rewards/rewards_service_factory.h"
|
||||
#include "brave/browser/perf/brave_perf_switches.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_ads/core/public/prefs/pref_names.h"
|
||||
#include "brave/components/brave_news/common/pref_names.h"
|
||||
#include "brave/components/brave_rewards/content/rewards_service.h"
|
||||
@@ -19,6 +19,10 @@
|
||||
#include "content/public/test/browser_test.h"
|
||||
#include "content/public/test/browser_test_utils.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_SPEEDREADER)
|
||||
#include "brave/browser/speedreader/speedreader_service_factory.h"
|
||||
#include "brave/components/speedreader/speedreader_service.h"
|
||||
@@ -95,7 +99,9 @@ IN_PROC_BROWSER_TEST_F(BraveSpeedFeatureProcessorBrowserTest, Default) {
|
||||
EXPECT_TRUE(BraveNewsAreEnabled());
|
||||
WaitForRewardsServiceInitialized();
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
auto* prefs = browser()->profile()->GetPrefs();
|
||||
EXPECT_TRUE(ai_chat::IsAIChatEnabled(prefs));
|
||||
EXPECT_TRUE(ai_chat::HasUserOptedIn(prefs));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_vpn/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_wayback_machine/buildflags/buildflags.gni")
|
||||
import("//brave/components/ipfs/buildflags/buildflags.gni")
|
||||
@@ -15,7 +16,7 @@ source_set("brave_simple_policy_map") {
|
||||
|
||||
deps = [
|
||||
"//base",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/brave_news/common",
|
||||
"//brave/components/brave_rewards/core",
|
||||
"//brave/components/brave_shields/core/common",
|
||||
@@ -38,6 +39,10 @@ source_set("brave_simple_policy_map") {
|
||||
"//components/policy/core/common:common_constants",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/common" ]
|
||||
}
|
||||
|
||||
if (enable_tor) {
|
||||
deps += [ "//brave/components/tor:pref_names" ]
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#ifndef BRAVE_BROWSER_POLICY_BRAVE_SIMPLE_POLICY_MAP_H_
|
||||
#define BRAVE_BROWSER_POLICY_BRAVE_SIMPLE_POLICY_MAP_H_
|
||||
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_news/common/pref_names.h"
|
||||
#include "brave/components/brave_rewards/core/pref_names.h"
|
||||
#include "brave/components/brave_shields/core/common/pref_names.h"
|
||||
@@ -28,6 +28,10 @@
|
||||
#include "components/policy/core/browser/configuration_policy_handler.h"
|
||||
#include "components/policy/policy_constants.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_TOR)
|
||||
#include "brave/components/tor/pref_names.h"
|
||||
#endif
|
||||
@@ -69,8 +73,10 @@ inline constexpr PolicyToPreferenceMapEntry kBraveSimplePolicyMap[] = {
|
||||
{policy::key::kBraveVPNDisabled, brave_vpn::prefs::kManagedBraveVPNDisabled,
|
||||
base::Value::Type::BOOLEAN},
|
||||
#endif
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
{policy::key::kBraveAIChatEnabled, ai_chat::prefs::kEnabledByPolicy,
|
||||
base::Value::Type::BOOLEAN},
|
||||
#endif
|
||||
{policy::key::kBraveP3AEnabled, p3a::kP3AEnabled,
|
||||
base::Value::Type::BOOLEAN},
|
||||
{policy::key::kBraveStatsPingEnabled, kStatsReportingEnabled,
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
|
||||
source_set("unit_tests") {
|
||||
testonly = true
|
||||
assert(is_win || is_linux || is_mac)
|
||||
@@ -10,7 +12,6 @@ source_set("unit_tests") {
|
||||
deps = [
|
||||
"//base",
|
||||
"//brave/app:command_ids",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//chrome/browser",
|
||||
"//chrome/browser/search_engines",
|
||||
"//chrome/test:test_support",
|
||||
@@ -22,4 +23,8 @@ source_set("unit_tests") {
|
||||
"//testing/gtest",
|
||||
"//third_party/abseil-cpp:absl",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/common" ]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
#include "base/check.h"
|
||||
#include "brave/app/brave_command_ids.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "chrome/browser/autocomplete/autocomplete_classifier_factory.h"
|
||||
#include "chrome/browser/autocomplete/chrome_autocomplete_provider_client.h"
|
||||
#include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h"
|
||||
@@ -28,6 +28,10 @@
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
#include "ui/base/clipboard/clipboard.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
|
||||
content::ContextMenuParams CreateSelectedTextParams(
|
||||
@@ -180,6 +184,7 @@ TEST_F(BraveRenderViewContextMenuTest, MenuForLink) {
|
||||
EXPECT_TRUE(context_menu->IsCommandIdEnabled(IDC_COPY_CLEAN_LINK));
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
TEST_F(BraveRenderViewContextMenuTest, MenuForAIChat) {
|
||||
content::ContextMenuParams params = CreateSelectedTextParams(u"hello");
|
||||
|
||||
@@ -208,3 +213,4 @@ TEST_F(BraveRenderViewContextMenuTest, MenuForAIChat_PWA) {
|
||||
IDC_AI_CHAT_CONTEXT_LEO_TOOLS);
|
||||
EXPECT_FALSE(ai_chat_index.has_value());
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -5,10 +5,13 @@
|
||||
|
||||
# based on //chrome/browser/resources/whats_new/BUILD.gn
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//ui/webui/resources/tools/build_webui.gni")
|
||||
|
||||
build_webui("build") {
|
||||
grd_prefix = "brave_education"
|
||||
|
||||
preprocessor_defines = [ "enable_ai_chat=$enable_ai_chat" ]
|
||||
static_files = [ "brave_education.html" ]
|
||||
ts_files = [
|
||||
"brave_education_app.html.ts",
|
||||
|
||||
@@ -113,7 +113,9 @@ export class BraveEducationAppElement extends CrLitElement {
|
||||
'open-rewards-onboarding': Command.kOpenRewardsOnboarding,
|
||||
'open-wallet-onboarding': Command.kOpenWalletOnboarding,
|
||||
'open-vpn-onboarding': Command.kOpenVPNOnboarding,
|
||||
// <if expr="enable_ai_chat">
|
||||
'open-ai-chat': Command.kOpenAIChat,
|
||||
// </if>
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
import("//brave/browser/shell_integrations/buildflags/buildflags.gni")
|
||||
import("//brave/build/config.gni")
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_vpn/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_wayback_machine/buildflags/buildflags.gni")
|
||||
import("//brave/components/containers/buildflags/buildflags.gni")
|
||||
@@ -82,6 +83,7 @@ generate_grd("build_grd") {
|
||||
# compile (etc.) from that directory.
|
||||
preprocess_if_expr("preprocess") {
|
||||
defines = [
|
||||
"enable_ai_chat=$enable_ai_chat",
|
||||
"enable_tor=$enable_tor",
|
||||
"enable_brave_wayback_machine=$enable_brave_wayback_machine",
|
||||
"enable_brave_vpn=$enable_brave_vpn",
|
||||
|
||||
@@ -25,9 +25,12 @@ import '../brave_web3_domains_page/brave_web3_domains_page.js'
|
||||
import '../default_brave_shields_page/default_brave_shields_page.js'
|
||||
import '../getting_started_page/getting_started.js'
|
||||
import '../social_blocking_page/social_blocking_page.js'
|
||||
|
||||
// <if expr="enable_ai_chat">
|
||||
import '../brave_leo_assistant_page/brave_leo_assistant_page.js'
|
||||
import '../brave_leo_assistant_page/model_list_section.js'
|
||||
import '../brave_leo_assistant_page/personalization.js'
|
||||
// </if>
|
||||
|
||||
// <if expr="enable_containers">
|
||||
import '../brave_content_page/containers.js'
|
||||
|
||||
@@ -122,6 +122,7 @@ RegisterPolymerTemplateModifications({
|
||||
}
|
||||
|
||||
// Append Leo reset checkbox
|
||||
// <if expr="enable_ai_chat">
|
||||
const isLeoAssistantAndHistoryAllowed =
|
||||
loadTimeData.getBoolean('isLeoAssistantAllowed')
|
||||
&& loadTimeData.getBoolean('isLeoAssistantHistoryAllowed')
|
||||
@@ -151,5 +152,6 @@ RegisterPolymerTemplateModifications({
|
||||
console.error('[Settings] missing Leo reset link')
|
||||
}
|
||||
}
|
||||
// </if>
|
||||
}
|
||||
})
|
||||
|
||||
@@ -92,9 +92,11 @@ function getPageVisibility () {
|
||||
// custom properties
|
||||
braveSync: !loadTimeData.getBoolean('isSyncDisabled'),
|
||||
braveWallet: loadTimeData.getBoolean('isBraveWalletAllowed'),
|
||||
// <if expr="enable_ai_chat">
|
||||
leoAssistant: loadTimeData.getBoolean('isLeoAssistantAllowed'),
|
||||
leoPersonalization: loadTimeData.getBoolean('isLeoAssistantAllowed'),
|
||||
leoModels: loadTimeData.getBoolean('isLeoAssistantAllowed'),
|
||||
// </if>
|
||||
surveyPanelist: loadTimeData.getBoolean('isSurveyPanelistAllowed'),
|
||||
// <if expr="enable_containers">
|
||||
containers: loadTimeData.getBoolean('isContainersEnabled'),
|
||||
|
||||
@@ -139,6 +139,7 @@ RegisterPolymerTemplateModifications({
|
||||
</site-settings-localhost-page>`)
|
||||
}
|
||||
|
||||
// <if expr="enable_ai_chat">
|
||||
if (loadTimeData.getBoolean('isOpenAIChatFromBraveSearchEnabled')) {
|
||||
viewManager.appendChild(html`
|
||||
<site-settings-brave-ai-page
|
||||
@@ -180,6 +181,7 @@ RegisterPolymerTemplateModifications({
|
||||
</site-settings-cardano-page>`)
|
||||
}
|
||||
}
|
||||
// </if>
|
||||
|
||||
// Move the safety hub to the end of the page
|
||||
const safetyHubTemplate = templateContent.querySelector(
|
||||
|
||||
@@ -15,11 +15,14 @@ import '../getting_started_page/getting_started_page_index.js'
|
||||
import '../brave_origin_page/brave_origin_page.js'
|
||||
import '../default_brave_shields_page/shields_page_index.js'
|
||||
import '../brave_wallet_page/wallet_page_index.js'
|
||||
import '../brave_leo_assistant_page/brave_leo_assistant_page_index.js'
|
||||
import '../brave_default_extensions_page/brave_extensions_page_index.js'
|
||||
import '../brave_sync_page/brave_sync_page_index.js'
|
||||
import '../brave_system_page/brave_system_page_index.js'
|
||||
|
||||
// <if expr="enable_ai_chat">
|
||||
import '../brave_leo_assistant_page/brave_leo_assistant_page_index.js'
|
||||
// </if>
|
||||
|
||||
RegisterPolymerTemplateModifications({
|
||||
'settings-main': (templateContent) => {
|
||||
// Always show settings-basic-page
|
||||
|
||||
@@ -297,6 +297,7 @@ RegisterPolymerTemplateModifications({
|
||||
}
|
||||
|
||||
// Add leo item
|
||||
// <if expr="enable_ai_chat">
|
||||
const leoAssistantEl = createMenuElement(
|
||||
loadTimeData.getString('leoAssistant'),
|
||||
'/leo-ai',
|
||||
@@ -308,6 +309,7 @@ RegisterPolymerTemplateModifications({
|
||||
} else if (privacyEl) {
|
||||
privacyEl.insertAdjacentElement('afterend', leoAssistantEl)
|
||||
}
|
||||
// </if>
|
||||
|
||||
// Add Sync item
|
||||
const syncEl = createMenuElement(
|
||||
@@ -316,7 +318,16 @@ RegisterPolymerTemplateModifications({
|
||||
'product-sync',
|
||||
'braveSync',
|
||||
)
|
||||
// <if expr="enable_ai_chat">
|
||||
leoAssistantEl.insertAdjacentElement('afterend', syncEl)
|
||||
// </if>
|
||||
// <if expr="not enable_ai_chat">
|
||||
if (web3El) {
|
||||
web3El.insertAdjacentElement('afterend', syncEl)
|
||||
} else if (privacyEl) {
|
||||
privacyEl.insertAdjacentElement('afterend', syncEl)
|
||||
}
|
||||
// </if>
|
||||
|
||||
// Add search item
|
||||
const searchEl = getMenuElement(templateContent, '/search')
|
||||
|
||||
@@ -99,6 +99,7 @@ RegisterPolymerTemplateModifications({
|
||||
}
|
||||
curChild++
|
||||
}
|
||||
// <if expr="enable_ai_chat">
|
||||
// AI Chat feature
|
||||
const isOpenAIChatFromBraveSearchEnabled =
|
||||
loadTimeData.getBoolean('isOpenAIChatFromBraveSearchEnabled')
|
||||
@@ -117,6 +118,7 @@ RegisterPolymerTemplateModifications({
|
||||
}
|
||||
curChild++
|
||||
}
|
||||
// </if>
|
||||
|
||||
const isNativeBraveWalletEnabled =
|
||||
loadTimeData.getBoolean('isNativeBraveWalletFeatureEnabled')
|
||||
|
||||
@@ -141,6 +141,7 @@ RegisterPolymerComponentReplacement(
|
||||
lists.permissionsAdvanced.splice(currentIndex, 0,
|
||||
localhostAccessItem)
|
||||
}
|
||||
// <if expr="enable_ai_chat">
|
||||
const isOpenAIChatFromBraveSearchEnabled =
|
||||
loadTimeData.getBoolean('isOpenAIChatFromBraveSearchEnabled')
|
||||
if (isOpenAIChatFromBraveSearchEnabled) {
|
||||
@@ -156,6 +157,7 @@ RegisterPolymerComponentReplacement(
|
||||
lists.permissionsAdvanced.splice(currentIndex, 0,
|
||||
AIChatItem)
|
||||
}
|
||||
// </if>
|
||||
const isNativeBraveWalletEnabled =
|
||||
loadTimeData.getBoolean('isNativeBraveWalletFeatureEnabled')
|
||||
const isCardanoDappSupportFeatureEnabled =
|
||||
|
||||
@@ -87,12 +87,14 @@
|
||||
label="$i18n{appearanceSettingsUseCommanderSuggestions}">
|
||||
</settings-checkbox>
|
||||
</template>
|
||||
<if expr="enable_ai_chat">
|
||||
<template is="dom-if" if="[[showLeoAssistant_()]]">
|
||||
<settings-checkbox class="cr-row list-item"
|
||||
pref="{{prefs.brave.ai_chat.autocomplete_provider_enabled}}"
|
||||
label="$i18n{appearanceSettingsUseLeoSuggestions}">
|
||||
</settings-checkbox>
|
||||
</template>
|
||||
</if>
|
||||
</div>
|
||||
</template>
|
||||
<settings-toggle-button
|
||||
|
||||
@@ -98,9 +98,11 @@ class SettingsBraveAppearanceToolbarElement extends SettingsBraveAppearanceToolb
|
||||
return loadTimeData.getBoolean('isBraveVPNEnabled')
|
||||
}
|
||||
|
||||
// <if expr="enable_ai_chat">
|
||||
private showLeoAssistant_() {
|
||||
return loadTimeData.getBoolean('isLeoAssistantAllowed')
|
||||
}
|
||||
// </if>
|
||||
|
||||
private showCommandsInOmnibox_() {
|
||||
return loadTimeData.getBoolean('showCommandsInOmnibox')
|
||||
|
||||
+2
@@ -28,6 +28,7 @@
|
||||
sub-label="[[counters.cookies]]"
|
||||
no-set-pref>
|
||||
</settings-checkbox>
|
||||
<if expr="enable_ai_chat">
|
||||
<settings-checkbox id="leoResetOnExitCheckbox"
|
||||
pref="{{prefs.browser.clear_data.brave_leo_on_exit}}"
|
||||
label="$i18n{aiChatClearHistoryData}"
|
||||
@@ -35,6 +36,7 @@
|
||||
hidden="[[!isLeoAssistantAndHistoryAllowed_]]"
|
||||
no-set-pref>
|
||||
</settings-checkbox>
|
||||
</if>
|
||||
<settings-checkbox id="cacheCheckboxOnExit"
|
||||
class="cache-checkbox"
|
||||
pref="{{prefs.browser.clear_data.cache_on_exit}}"
|
||||
|
||||
+4
@@ -58,6 +58,7 @@ extends SettingsBraveClearBrowsingDataOnExitPageElementBase {
|
||||
},
|
||||
},
|
||||
|
||||
// <if expr="enable_ai_chat">
|
||||
isAIChatAndHistoryAllowed_: {
|
||||
type: Boolean,
|
||||
value() {
|
||||
@@ -65,6 +66,7 @@ extends SettingsBraveClearBrowsingDataOnExitPageElementBase {
|
||||
&& loadTimeData.getBoolean('isLeoAssistantHistoryAllowed')
|
||||
},
|
||||
}
|
||||
// </if>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +74,9 @@ extends SettingsBraveClearBrowsingDataOnExitPageElementBase {
|
||||
|
||||
private counters: {[k: string]: string} = {}
|
||||
private isChildAccount_: boolean
|
||||
// <if expr="enable_ai_chat">
|
||||
private isAIChatAndHistoryAllowed_: boolean
|
||||
// </if>
|
||||
|
||||
override ready() {
|
||||
super.ready()
|
||||
|
||||
@@ -97,12 +97,14 @@ export default function addBraveRoutes(r: Partial<SettingsRoutes>) {
|
||||
r.SITE_SETTINGS_LOCALHOST_ACCESS = r.SITE_SETTINGS
|
||||
.createChild('localhostAccess')
|
||||
}
|
||||
// <if expr="enable_ai_chat">
|
||||
const isOpenAIChatFromBraveSearchEnabled =
|
||||
loadTimeData.getBoolean('isOpenAIChatFromBraveSearchEnabled')
|
||||
if (isOpenAIChatFromBraveSearchEnabled) {
|
||||
r.SITE_SETTINGS_BRAVE_OPEN_AI_CHAT =
|
||||
r.SITE_SETTINGS.createChild('braveOpenAIChat')
|
||||
}
|
||||
// </if>
|
||||
const isNativeBraveWalletFeatureEnabled =
|
||||
loadTimeData.getBoolean('isNativeBraveWalletFeatureEnabled')
|
||||
const isCardanoDappSupportFeatureEnabled =
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
# you can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/browser/shell_integrations/buildflags/buildflags.gni")
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_vpn/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/containers/buildflags/buildflags.gni")
|
||||
import("//brave/components/speedreader/common/buildflags/buildflags.gni")
|
||||
@@ -45,13 +46,6 @@ brave_settings_web_component_files = [
|
||||
"brave_sync_page/brave_sync_setup.ts",
|
||||
"brave_sync_page/brave_sync_subpage.ts",
|
||||
"brave_system_page/brave_system_page_index.ts",
|
||||
"brave_leo_assistant_page/brave_leo_assistant_page.ts",
|
||||
"brave_leo_assistant_page/brave_leo_assistant_page_index.ts",
|
||||
"brave_leo_assistant_page/customization_subpage.ts",
|
||||
"brave_leo_assistant_page/memory_section.ts",
|
||||
"brave_leo_assistant_page/model_list_section.ts",
|
||||
"brave_leo_assistant_page/model_config_ui.ts",
|
||||
"brave_leo_assistant_page/personalization.ts",
|
||||
"brave_survey_panelist_page/brave_survey_panelist_page.ts",
|
||||
"brave_wallet_page/add_wallet_network_dialog.ts",
|
||||
"brave_wallet_page/brave_wallet_page.ts",
|
||||
@@ -138,7 +132,6 @@ brave_settings_ts_files = [
|
||||
"brave_data_collection_page/brave_data_collection_browser_proxy.ts",
|
||||
"brave_default_extensions_page/brave_default_extensions_browser_proxy.ts",
|
||||
"brave_new_tab_page/brave_new_tab_browser_proxy.ts",
|
||||
"brave_leo_assistant_page/brave_leo_assistant_browser_proxy.ts",
|
||||
"brave_privacy_page/brave_privacy_page_browser_proxy.ts",
|
||||
"brave_reset_page/brave_reset_profile_dialog_behavior.ts",
|
||||
"brave_routes.ts",
|
||||
@@ -180,6 +173,20 @@ if (enable_tor) {
|
||||
brave_settings_ts_files += [ "brave_tor_page/brave_tor_browser_proxy.ts" ]
|
||||
}
|
||||
|
||||
if (enable_ai_chat) {
|
||||
brave_settings_web_component_files += [
|
||||
"brave_leo_assistant_page/brave_leo_assistant_page.ts",
|
||||
"brave_leo_assistant_page/brave_leo_assistant_page_index.ts",
|
||||
"brave_leo_assistant_page/customization_subpage.ts",
|
||||
"brave_leo_assistant_page/memory_section.ts",
|
||||
"brave_leo_assistant_page/model_list_section.ts",
|
||||
"brave_leo_assistant_page/model_config_ui.ts",
|
||||
"brave_leo_assistant_page/personalization.ts",
|
||||
]
|
||||
brave_settings_ts_files +=
|
||||
[ "brave_leo_assistant_page/brave_leo_assistant_browser_proxy.ts" ]
|
||||
}
|
||||
|
||||
brave_settings_ts_definitions =
|
||||
[ "//brave/components/definitions/chrome_brave_theme.d.ts" ]
|
||||
|
||||
@@ -187,16 +194,6 @@ brave_settings_ts_extra_deps =
|
||||
[ "//brave/browser/resources/settings:preprocess" ]
|
||||
|
||||
brave_settings_mojo_files = [
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/settings_helper.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/ai_chat.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/bookmarks.mojom-webui.ts",
|
||||
|
||||
# ai_chat.mojom depends on these mojom files, even though they aren't used directly on settings
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/common.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/customization_settings.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/tab_tracker.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/untrusted_frame.mojom-webui.ts",
|
||||
|
||||
"$root_gen_dir/brave/components/brave_account/mojom/brave_account_settings_handler.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/brave_origin/common/mojom/brave_origin_settings.mojom-webui.ts",
|
||||
|
||||
@@ -207,7 +204,6 @@ brave_settings_mojo_files = [
|
||||
]
|
||||
|
||||
brave_settings_mojo_files_deps = [
|
||||
"//brave/components/ai_chat/core/common/mojom:mojom_ts__generator",
|
||||
"//brave/components/brave_account/mojom:mojom_ts__generator",
|
||||
"//brave/components/brave_origin/common/mojom:mojom_ts__generator",
|
||||
|
||||
@@ -216,6 +212,23 @@ brave_settings_mojo_files_deps = [
|
||||
"//brave/components/resources:strings",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
brave_settings_mojo_files += [
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/settings_helper.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/ai_chat.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/bookmarks.mojom-webui.ts",
|
||||
|
||||
# ai_chat.mojom depends on these mojom files, even though they aren't used directly on settings
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/common.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/customization_settings.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/tab_tracker.mojom-webui.ts",
|
||||
"$root_gen_dir/brave/components/ai_chat/core/common/mojom/untrusted_frame.mojom-webui.ts",
|
||||
]
|
||||
|
||||
brave_settings_mojo_files_deps +=
|
||||
[ "//brave/components/ai_chat/core/common/mojom:mojom_ts__generator" ]
|
||||
}
|
||||
|
||||
brave_settings_ts_deps = [
|
||||
"//third_party/lit/v3_0:build_ts",
|
||||
"//ui/webui/resources/mojo:build_ts",
|
||||
|
||||
+24
-12
@@ -117,8 +117,6 @@ brave_chrome_browser_deps = [
|
||||
"//brave/app:brave_generated_resources_grit",
|
||||
"//brave/browser:browser_process",
|
||||
"//brave/browser:sparkle_buildflags",
|
||||
"//brave/browser/ai_chat",
|
||||
"//brave/browser/ai_chat/ollama",
|
||||
"//brave/browser/brave_account",
|
||||
"//brave/browser/brave_adaptive_captcha",
|
||||
"//brave/browser/brave_adaptive_captcha:impl",
|
||||
@@ -145,15 +143,11 @@ brave_chrome_browser_deps = [
|
||||
"//brave/browser/themes",
|
||||
"//brave/browser/ui",
|
||||
"//brave/browser/ui/webui/ads_internals",
|
||||
"//brave/browser/ui/webui/ai_chat",
|
||||
"//brave/browser/ui/webui/brave_account",
|
||||
"//brave/browser/updater:buildflags",
|
||||
"//brave/common",
|
||||
"//brave/common:mojo_bindings",
|
||||
"//brave/components/ai_chat/content/browser",
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/mojom",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/ai_rewriter/common/buildflags",
|
||||
"//brave/components/body_sniffer",
|
||||
"//brave/components/brave_account",
|
||||
@@ -316,7 +310,6 @@ if (!is_android) {
|
||||
]
|
||||
|
||||
brave_chrome_browser_deps += [
|
||||
"//brave/browser/ui/ai_chat",
|
||||
"//brave/browser/ui/tabs:impl",
|
||||
"//brave/browser/ui/webui/brave_new_tab_page_refresh",
|
||||
"//brave/browser/ui/webui/brave_new_tab_page_refresh:mojom",
|
||||
@@ -336,7 +329,23 @@ if (enable_brave_education) {
|
||||
brave_chrome_browser_deps += [ "//brave/browser/ui/webui/brave_education" ]
|
||||
}
|
||||
|
||||
if (is_android) {
|
||||
if (enable_ai_chat) {
|
||||
brave_chrome_browser_deps += [
|
||||
"//brave/browser/ai_chat",
|
||||
"//brave/browser/ai_chat/ollama",
|
||||
"//brave/browser/ui/webui/ai_chat",
|
||||
"//brave/components/ai_chat/content/browser",
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/mojom",
|
||||
]
|
||||
|
||||
if (!is_android) {
|
||||
brave_chrome_browser_deps += [ "//brave/browser/ui/ai_chat" ]
|
||||
}
|
||||
}
|
||||
|
||||
if (enable_ai_chat && is_android) {
|
||||
brave_chrome_browser_sources += brave_browser_ai_chat_android_sources
|
||||
brave_chrome_browser_deps += brave_browser_ai_chat_android_deps
|
||||
}
|
||||
@@ -649,11 +658,14 @@ brave_chrome_browser_allow_circular_includes_from = [
|
||||
"//brave/browser/brave_ads/creatives/search_result_ad",
|
||||
"//brave/browser/brave_stats",
|
||||
"//brave/browser/ntp_background",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
# TODO(https://github.com/brave/brave-browser/issues/50507):
|
||||
# Remove this once webui/ai_chat does not depend on chrome/browser.
|
||||
"//brave/browser/ui/webui/ai_chat",
|
||||
]
|
||||
brave_chrome_browser_allow_circular_includes_from +=
|
||||
[ "//brave/browser/ui/webui/ai_chat" ]
|
||||
}
|
||||
|
||||
if (enable_brave_ai_chat_agent_profile) {
|
||||
brave_chrome_browser_deps +=
|
||||
@@ -684,7 +696,7 @@ if (enable_extensions) {
|
||||
[ "//brave/browser/extensions:brave_prefs_util_impl" ]
|
||||
}
|
||||
|
||||
if (enable_print_preview) {
|
||||
if (enable_ai_chat && enable_print_preview) {
|
||||
brave_chrome_browser_deps += [
|
||||
"//brave/browser/ai_chat:print_preview_extractor",
|
||||
"//brave/browser/ai_chat:print_preview_extractor_internal",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/speedreader/common/buildflags/buildflags.gni")
|
||||
import("//build/config/ui.gni")
|
||||
|
||||
@@ -49,7 +50,7 @@ if (!is_android) {
|
||||
"//brave/browser/speedreader",
|
||||
"//brave/browser/ui/speedreader",
|
||||
"//brave/browser/ui/views/frame/split_view",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/brave_wallet/browser:utils",
|
||||
"//chrome/browser/ui",
|
||||
"//chrome/browser/ui:ui_features",
|
||||
@@ -60,5 +61,9 @@ if (!is_android) {
|
||||
"//content/test:test_support",
|
||||
"//net:test_support",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/common" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#include "brave/browser/ui/views/frame/split_view/brave_multi_contents_view.h"
|
||||
#include "brave/browser/ui/webui/speedreader/speedreader_toolbar_data_handler_impl.h"
|
||||
#include "brave/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_wallet/browser/brave_wallet_utils.h"
|
||||
#include "brave/components/constants/brave_paths.h"
|
||||
#include "brave/components/speedreader/common/features.h"
|
||||
@@ -66,6 +66,10 @@
|
||||
#include "services/network/public/cpp/network_switches.h"
|
||||
#include "ui/events/base_event_utils.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#endif
|
||||
|
||||
constexpr char kTestHost[] = "a.test";
|
||||
constexpr char kTestPageSimple[] = "/simple.html";
|
||||
constexpr char kTestPageReadable[] = "/speedreader/article/guardian.html";
|
||||
@@ -95,8 +99,12 @@ class SpeedReaderBrowserTest : public InProcessBrowserTest {
|
||||
: https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {
|
||||
feature_list_.InitWithFeaturesAndParameters(
|
||||
{{speedreader::features::kSpeedreaderFeature,
|
||||
{{speedreader::features::kSpeedreaderTTS.name, "true"}}},
|
||||
{ai_chat::features::kAIChat, {{}}}},
|
||||
{{speedreader::features::kSpeedreaderTTS.name, "true"}}}
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
,
|
||||
{ai_chat::features::kAIChat, {{}}}
|
||||
#endif
|
||||
},
|
||||
{});
|
||||
}
|
||||
|
||||
@@ -835,6 +843,7 @@ IN_PROC_BROWSER_TEST_F(SpeedReaderBrowserTest, Toolbar) {
|
||||
auto* toolbar = toolbar_view->GetWebContentsForTesting();
|
||||
WaitElement(toolbar, "appearance");
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
Click(toolbar, "ai");
|
||||
auto* side_panel = browser()->GetFeatures().side_panel_ui();
|
||||
while (side_panel->GetCurrentEntryId() != SidePanelEntryId::kChatUI) {
|
||||
@@ -846,6 +855,7 @@ IN_PROC_BROWSER_TEST_F(SpeedReaderBrowserTest, Toolbar) {
|
||||
NonBlockingDelay(base::Milliseconds(10));
|
||||
}
|
||||
EXPECT_FALSE(side_panel->GetCurrentEntryId().has_value());
|
||||
#endif
|
||||
|
||||
Click(toolbar, "appearance");
|
||||
{ // change theme
|
||||
|
||||
+23
-8
@@ -57,7 +57,6 @@ source_set("ui") {
|
||||
|
||||
deps = [
|
||||
"//brave/brave_domains",
|
||||
"//brave/browser/ai_chat",
|
||||
"//brave/browser/brave_adaptive_captcha",
|
||||
"//brave/browser/brave_ads",
|
||||
"//brave/browser/brave_origin",
|
||||
@@ -65,6 +64,7 @@ source_set("ui") {
|
||||
"//brave/browser/skus",
|
||||
"//brave/browser/ui/page_info",
|
||||
"//brave/browser/ui/webui/brave_account",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/brave_origin",
|
||||
"//brave/components/brave_private_cdn",
|
||||
"//brave/components/brave_shields/core/browser",
|
||||
@@ -117,6 +117,21 @@ source_set("ui") {
|
||||
"webui/untrusted_sanitized_image_source.h",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/common" ]
|
||||
|
||||
if (!is_android) {
|
||||
sources += [
|
||||
"webui/settings/brave_settings_leo_assistant_handler.cc",
|
||||
"webui/settings/brave_settings_leo_assistant_handler.h",
|
||||
]
|
||||
deps += [
|
||||
"//brave/browser/ai_chat",
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
# It doesn't make sense to view the webcompat webui on iOS & Android.
|
||||
if (!is_android && !is_ios) {
|
||||
sources += [
|
||||
@@ -277,8 +292,6 @@ source_set("ui") {
|
||||
"webui/settings/brave_privacy_handler.h",
|
||||
"webui/settings/brave_search_engines_handler.cc",
|
||||
"webui/settings/brave_search_engines_handler.h",
|
||||
"webui/settings/brave_settings_leo_assistant_handler.cc",
|
||||
"webui/settings/brave_settings_leo_assistant_handler.h",
|
||||
"webui/settings/brave_settings_localized_strings_provider.cc",
|
||||
"webui/settings/brave_settings_localized_strings_provider.h",
|
||||
"webui/settings/brave_site_settings_handler.cc",
|
||||
@@ -596,8 +609,6 @@ source_set("ui") {
|
||||
"views/tabs/switches.h",
|
||||
"views/tabs/vertical_tab_utils.cc",
|
||||
"views/tabs/vertical_tab_utils.h",
|
||||
"views/toolbar/ai_chat_button.cc",
|
||||
"views/toolbar/ai_chat_button.h",
|
||||
"views/toolbar/bookmark_button.cc",
|
||||
"views/toolbar/bookmark_button.h",
|
||||
"views/toolbar/brave_app_menu.cc",
|
||||
@@ -721,6 +732,13 @@ source_set("ui") {
|
||||
if (enable_tor) {
|
||||
deps += [ "//brave/browser/tor" ]
|
||||
}
|
||||
|
||||
if (enable_ai_chat) {
|
||||
sources += [
|
||||
"views/toolbar/ai_chat_button.cc",
|
||||
"views/toolbar/ai_chat_button.h",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
if (is_win || is_mac || is_linux) {
|
||||
@@ -780,9 +798,6 @@ source_set("ui") {
|
||||
# to pull in dependencies needed for the overwrite codes in chromium_src.
|
||||
"//brave/chromium_src/chrome/browser/ui",
|
||||
"//brave/common",
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/ai_rewriter/common/buildflags",
|
||||
"//brave/components/brave_adaptive_captcha",
|
||||
"//brave/components/brave_adblock_ui:generated_resources",
|
||||
|
||||
@@ -3,8 +3,11 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//pdf/features.gni")
|
||||
|
||||
assert(enable_ai_chat)
|
||||
|
||||
if (!is_android) {
|
||||
source_set("ai_chat") {
|
||||
sources = [
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "brave/browser/ui/brave_browser_actions.h"
|
||||
|
||||
#include "base/types/to_address.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/playlist/core/common/features.h"
|
||||
#include "brave/components/vector_icons/vector_icons.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
@@ -19,6 +19,10 @@
|
||||
#include "ui/base/l10n/l10n_util.h"
|
||||
#include "ui/gfx/vector_icon_types.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
|
||||
actions::ActionItem::ActionItemBuilder SidePanelAction(
|
||||
@@ -58,6 +62,7 @@ void BraveBrowserActions::InitializeBrowserActions() {
|
||||
.Build());
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (ai_chat::IsAIChatEnabled(profile_->GetPrefs())) {
|
||||
root_action_item_->AddChild(
|
||||
SidePanelAction(SidePanelEntryId::kChatUI, IDS_CHAT_UI_TITLE,
|
||||
@@ -65,4 +70,5 @@ void BraveBrowserActions::InitializeBrowserActions() {
|
||||
kActionSidePanelShowChatUI, bwi, true)
|
||||
.Build());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -15,15 +15,12 @@
|
||||
#include "base/notreached.h"
|
||||
#include "base/types/to_address.h"
|
||||
#include "brave/app/brave_command_ids.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_utils.h"
|
||||
#include "brave/browser/profiles/profile_util.h"
|
||||
#include "brave/browser/ui/brave_pages.h"
|
||||
#include "brave/browser/ui/browser_commands.h"
|
||||
#include "brave/browser/ui/sidebar/sidebar_utils.h"
|
||||
#include "brave/browser/ui/tabs/features.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_news/common/pref_names.h"
|
||||
#include "brave/components/brave_rewards/core/rewards_util.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
@@ -51,6 +48,13 @@
|
||||
#include "components/sync/base/command_line_switches.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/ai_chat_utils.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
#include "brave/browser/brave_vpn/brave_vpn_service_factory.h"
|
||||
#include "brave/browser/brave_vpn/vpn_utils.h"
|
||||
@@ -233,6 +237,7 @@ void BraveBrowserCommandController::InitBraveCommandState() {
|
||||
UpdateCommandForWaybackMachine();
|
||||
pref_change_registrar_.Init(browser_->profile()->GetPrefs());
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
UpdateCommandForAIChat();
|
||||
if (ai_chat::IsAllowedForContext(browser_->profile(), false)) {
|
||||
pref_change_registrar_.Add(
|
||||
@@ -241,6 +246,7 @@ void BraveBrowserCommandController::InitBraveCommandState() {
|
||||
&BraveBrowserCommandController::UpdateCommandForAIChat,
|
||||
base::Unretained(this)));
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
if (brave_vpn::IsAllowedForContext(browser_->profile())) {
|
||||
@@ -352,6 +358,7 @@ void BraveBrowserCommandController::UpdateCommandForSidebar() {
|
||||
}
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void BraveBrowserCommandController::UpdateCommandForAIChat() {
|
||||
// AI Chat command implementation needs sidebar
|
||||
bool allowed_for_context = ai_chat::IsAllowedForContext(browser_->profile());
|
||||
@@ -361,6 +368,7 @@ void BraveBrowserCommandController::UpdateCommandForAIChat() {
|
||||
IDC_OPEN_FULL_PAGE_CHAT,
|
||||
ai_chat::features::IsAIChatHistoryEnabled() && allowed_for_context);
|
||||
}
|
||||
#endif
|
||||
|
||||
void BraveBrowserCommandController::UpdateCommandForBraveVPN() {
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
@@ -537,12 +545,14 @@ bool BraveBrowserCommandController::ExecuteBraveCommandWithDisposition(
|
||||
case IDC_SHOW_BRAVE_WALLET:
|
||||
brave::ShowBraveWallet(&*browser_);
|
||||
break;
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
case IDC_TOGGLE_AI_CHAT:
|
||||
brave::ToggleAIChat(&*browser_);
|
||||
break;
|
||||
case IDC_OPEN_FULL_PAGE_CHAT:
|
||||
brave::ShowFullpageChat(&*browser_);
|
||||
break;
|
||||
#endif
|
||||
case IDC_SPEEDREADER_ICON_ONCLICK:
|
||||
brave::MaybeDistillAndShowSpeedreaderBubble(&*browser_);
|
||||
break;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include "brave/app/brave_command_ids.h"
|
||||
#include "brave/browser/ui/browser_commands.h"
|
||||
#include "brave/browser/ui/views/tabs/vertical_tab_utils.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "brave/components/skus/common/features.h"
|
||||
#include "brave/components/tor/buildflags/buildflags.h"
|
||||
@@ -41,6 +41,10 @@
|
||||
#include "content/public/test/browser_test.h"
|
||||
#include "content/public/test/test_utils.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_TOR)
|
||||
#include "brave/browser/tor/tor_profile_service_factory.h"
|
||||
#endif
|
||||
@@ -79,6 +83,7 @@ class BraveBrowserCommandControllerTest : public InProcessBrowserTest {
|
||||
policy::BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_);
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void BlockAIChatByPolicy(bool value) {
|
||||
policy::PolicyMap policies;
|
||||
policies.Set(policy::key::kBraveAIChatEnabled,
|
||||
@@ -88,6 +93,7 @@ class BraveBrowserCommandControllerTest : public InProcessBrowserTest {
|
||||
EXPECT_EQ(ai_chat::IsAIChatEnabled(browser()->profile()->GetPrefs()),
|
||||
!value);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
void BlockVPNByPolicy(bool value) {
|
||||
@@ -264,7 +270,9 @@ IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
|
||||
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_OPEN_GUEST_PROFILE));
|
||||
EXPECT_TRUE(
|
||||
command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WEBCOMPAT_REPORTER));
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_TOGGLE_AI_CHAT));
|
||||
#endif
|
||||
}
|
||||
|
||||
// Create guest browser and test its brave commands status.
|
||||
@@ -293,7 +301,9 @@ IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
|
||||
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_OPEN_GUEST_PROFILE));
|
||||
EXPECT_TRUE(
|
||||
command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WEBCOMPAT_REPORTER));
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_TOGGLE_AI_CHAT));
|
||||
#endif
|
||||
}
|
||||
|
||||
// Launch tor window and check its command status.
|
||||
@@ -324,7 +334,9 @@ IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
|
||||
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_OPEN_GUEST_PROFILE));
|
||||
EXPECT_TRUE(
|
||||
command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WEBCOMPAT_REPORTER));
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_TOGGLE_AI_CHAT));
|
||||
#endif
|
||||
|
||||
// Check tor commands when tor is disabled.
|
||||
TorProfileServiceFactory::SetTorDisabled(true);
|
||||
@@ -336,6 +348,7 @@ IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
|
||||
ToggleAIChat_ControlledByPolicy) {
|
||||
auto* command_controller = browser()->command_controller();
|
||||
@@ -349,6 +362,7 @@ IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
|
||||
BlockAIChatByPolicy(false);
|
||||
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_TOGGLE_AI_CHAT));
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
|
||||
BraveCommandsCloseTabsToLeft) {
|
||||
@@ -444,7 +458,7 @@ IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(TOOLKIT_VIEWS)
|
||||
#if defined(TOOLKIT_VIEWS) && BUILDFLAG(ENABLE_AI_CHAT)
|
||||
IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
|
||||
BraveCommandsToggleAIChat) {
|
||||
SidePanelEntryKey ai_chat_key =
|
||||
|
||||
@@ -18,18 +18,23 @@
|
||||
#include "brave/browser/misc_metrics/profile_misc_metrics_service_factory.h"
|
||||
#include "brave/browser/ui/commander/command_source.h"
|
||||
#include "brave/browser/ui/commander/fuzzy_finder.h"
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ui/accelerator_utils.h"
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_commands.h"
|
||||
#include "ui/base/accelerators/accelerator.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
namespace commander {
|
||||
|
||||
namespace {
|
||||
|
||||
void MaybeReportCommandExecution(Browser* browser, int command_id) {
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (command_id == IDC_TOGGLE_AI_CHAT) {
|
||||
auto* profile_metrics =
|
||||
misc_metrics::ProfileMiscMetricsServiceFactory::GetServiceForContext(
|
||||
@@ -44,6 +49,7 @@ void MaybeReportCommandExecution(Browser* browser, int command_id) {
|
||||
ai_chat_metrics->HandleOpenViaEntryPoint(
|
||||
ai_chat::EntryPoint::kOmniboxCommand);
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_vpn/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_wayback_machine/buildflags/buildflags.gni")
|
||||
import("//brave/components/speedreader/common/buildflags/buildflags.gni")
|
||||
@@ -16,7 +17,7 @@ source_set("unit_tests") {
|
||||
deps = [
|
||||
"//base",
|
||||
"//brave/app:generate_command_metadata",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/brave_news/common",
|
||||
"//brave/components/brave_rewards/core",
|
||||
"//brave/components/brave_vpn/common/buildflags",
|
||||
@@ -34,6 +35,10 @@ source_set("unit_tests") {
|
||||
"//testing/gtest",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/common" ]
|
||||
}
|
||||
|
||||
if (enable_brave_vpn) {
|
||||
deps += [ "//brave/components/brave_vpn/common" ]
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include "base/containers/map_util.h"
|
||||
#include "brave/app/brave_command_ids.h"
|
||||
#include "brave/app/command_utils.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_news/common/pref_names.h"
|
||||
#include "brave/components/brave_rewards/core/pref_names.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
@@ -37,6 +37,10 @@
|
||||
#include "mojo/public/cpp/bindings/pending_remote.h"
|
||||
#include "ui/base/accelerators/accelerator.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
#if BUILDFLAG(ENABLE_TOR)
|
||||
#include "brave/components/tor/pref_names.h"
|
||||
#endif
|
||||
@@ -417,9 +421,11 @@ bool AcceleratorService::IsCommandDisabledByPolicy(int command_id) const {
|
||||
case IDC_SHOW_BRAVE_REWARDS:
|
||||
case IDC_OFFERS_AND_REWARDS_FOR_PAGE:
|
||||
return pref_service_->GetBoolean(brave_rewards::prefs::kDisabledByPolicy);
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
case IDC_TOGGLE_AI_CHAT:
|
||||
case IDC_OPEN_FULL_PAGE_CHAT:
|
||||
return !pref_service_->GetBoolean(ai_chat::prefs::kEnabledByPolicy);
|
||||
#endif
|
||||
case IDC_NEW_OFFTHERECORD_WINDOW_TOR:
|
||||
case IDC_NEW_TOR_CONNECTION_FOR_SITE:
|
||||
#if BUILDFLAG(ENABLE_TOR)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "base/test/scoped_feature_list.h"
|
||||
#include "brave/app/brave_command_ids.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/brave_news/common/pref_names.h"
|
||||
#include "brave/components/brave_rewards/core/pref_names.h"
|
||||
@@ -344,6 +345,7 @@ TEST_F(AcceleratorServiceUnitTest, PolicyFiltering) {
|
||||
false);
|
||||
EXPECT_FALSE(service.IsCommandDisabledByPolicy(IDC_SHOW_BRAVE_REWARDS));
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
// Test AI Chat (reverse logic - disabled when pref is false)
|
||||
const std::vector<int> ai_chat_commands = {IDC_TOGGLE_AI_CHAT,
|
||||
IDC_OPEN_FULL_PAGE_CHAT};
|
||||
@@ -361,6 +363,7 @@ TEST_F(AcceleratorServiceUnitTest, PolicyFiltering) {
|
||||
for (int command : ai_chat_commands) {
|
||||
EXPECT_TRUE(service.IsCommandDisabledByPolicy(command));
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
#if BUILDFLAG(ENABLE_SPEEDREADER)
|
||||
// Test Speedreader
|
||||
@@ -392,7 +395,9 @@ TEST_F(AcceleratorServiceUnitTest, PolicyFiltering) {
|
||||
{IDC_NEW_TAB, {commands::FromCodesString("Control+KeyT")}},
|
||||
{IDC_CONFIGURE_BRAVE_NEWS, {commands::FromCodesString("Control+KeyN")}},
|
||||
{IDC_SHOW_BRAVE_WALLET, {commands::FromCodesString("Control+KeyW")}},
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
{IDC_TOGGLE_AI_CHAT, {commands::FromCodesString("Control+KeyC")}},
|
||||
#endif
|
||||
};
|
||||
|
||||
// Disable some features and test filtering
|
||||
@@ -400,31 +405,48 @@ TEST_F(AcceleratorServiceUnitTest, PolicyFiltering) {
|
||||
brave_news::prefs::kBraveNewsDisabledByPolicy, true);
|
||||
profile().GetPrefs()->SetBoolean(brave_wallet::prefs::kDisabledByPolicy,
|
||||
true);
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
profile().GetPrefs()->SetBoolean(ai_chat::prefs::kEnabledByPolicy,
|
||||
false); // Disable AI Chat
|
||||
#endif
|
||||
|
||||
auto filtered = service.FilterCommandsByPolicy(test_accelerators);
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
// Only IDC_NEW_TAB should remain (not policy-controlled)
|
||||
EXPECT_EQ(1u, filtered.size());
|
||||
#else
|
||||
// IDC_NEW_TAB should remain (AI Chat not included)
|
||||
EXPECT_EQ(1u, filtered.size());
|
||||
#endif
|
||||
EXPECT_TRUE(filtered.contains(IDC_NEW_TAB));
|
||||
EXPECT_FALSE(filtered.contains(IDC_CONFIGURE_BRAVE_NEWS));
|
||||
EXPECT_FALSE(filtered.contains(IDC_SHOW_BRAVE_WALLET));
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
EXPECT_FALSE(filtered.contains(IDC_TOGGLE_AI_CHAT));
|
||||
#endif
|
||||
|
||||
// Re-enable commands and test again
|
||||
profile().GetPrefs()->SetBoolean(
|
||||
brave_news::prefs::kBraveNewsDisabledByPolicy, false);
|
||||
profile().GetPrefs()->SetBoolean(brave_wallet::prefs::kDisabledByPolicy,
|
||||
false);
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
profile().GetPrefs()->SetBoolean(ai_chat::prefs::kEnabledByPolicy, true);
|
||||
#endif
|
||||
|
||||
filtered = service.FilterCommandsByPolicy(test_accelerators);
|
||||
// All commands should be present now
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
EXPECT_EQ(4u, filtered.size());
|
||||
#else
|
||||
EXPECT_EQ(3u, filtered.size());
|
||||
#endif
|
||||
EXPECT_TRUE(filtered.contains(IDC_NEW_TAB));
|
||||
EXPECT_TRUE(filtered.contains(IDC_CONFIGURE_BRAVE_NEWS));
|
||||
EXPECT_TRUE(filtered.contains(IDC_SHOW_BRAVE_WALLET));
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
EXPECT_TRUE(filtered.contains(IDC_TOGGLE_AI_CHAT));
|
||||
#endif
|
||||
}
|
||||
|
||||
class AcceleratorServiceUnitTestWithLocalState : public testing::Test {
|
||||
|
||||
+12
-5
@@ -3,14 +3,17 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/containers/buildflags/buildflags.gni")
|
||||
import("//brave/components/speedreader/common/buildflags/buildflags.gni")
|
||||
import("//build/config/ui.gni")
|
||||
|
||||
brave_ui_allow_circular_includes_from = [
|
||||
"//brave/browser/ui/webui/ads_internals",
|
||||
"//brave/browser/ui/webui/ai_chat",
|
||||
]
|
||||
brave_ui_allow_circular_includes_from =
|
||||
[ "//brave/browser/ui/webui/ads_internals" ]
|
||||
if (enable_ai_chat) {
|
||||
brave_ui_allow_circular_includes_from +=
|
||||
[ "//brave/browser/ui/webui/ai_chat" ]
|
||||
}
|
||||
if (!is_android) {
|
||||
brave_ui_allow_circular_includes_from += [
|
||||
"//brave/browser/ui/browser_window/internal",
|
||||
@@ -32,10 +35,14 @@ if (toolkit_views) {
|
||||
"//brave/browser/ui/views/frame/split_view",
|
||||
"//brave/browser/ui/views/frame/vertical_tabs",
|
||||
"//brave/browser/ui/views/page_info",
|
||||
"//brave/browser/ui/views/side_panel/ai_chat",
|
||||
"//brave/browser/ui/sidebar",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
brave_ui_allow_circular_includes_from +=
|
||||
[ "//brave/browser/ui/views/side_panel/ai_chat" ]
|
||||
}
|
||||
|
||||
if (enable_containers) {
|
||||
brave_ui_allow_circular_includes_from += [ "//brave/browser/ui/containers" ]
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "brave/browser/misc_metrics/profile_misc_metrics_service.h"
|
||||
#include "brave/browser/misc_metrics/profile_misc_metrics_service_factory.h"
|
||||
#include "brave/browser/search_engines/search_engine_tracker.h"
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_rewards/core/pref_names.h"
|
||||
#include "brave/components/brave_search_conversion/p3a.h"
|
||||
#include "brave/components/brave_search_conversion/utils.h"
|
||||
@@ -29,6 +29,10 @@
|
||||
#include "components/prefs/pref_registry_simple.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
|
||||
using brave_search_conversion::ConversionType;
|
||||
@@ -78,6 +82,7 @@ BraveOmniboxClientImpl::BraveOmniboxClientImpl(LocationBar* location_bar,
|
||||
// Record initial search count p3a value.
|
||||
RecordSearchEventP3A();
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
auto* profile_metrics =
|
||||
misc_metrics::ProfileMiscMetricsServiceFactory::GetServiceForContext(
|
||||
profile);
|
||||
@@ -85,6 +90,7 @@ BraveOmniboxClientImpl::BraveOmniboxClientImpl(LocationBar* location_bar,
|
||||
ai_chat_metrics_ = profile_metrics->GetAIChatMetrics();
|
||||
CHECK(ai_chat_metrics_);
|
||||
}
|
||||
#endif
|
||||
|
||||
pref_change_registrar_.Init(profile_->GetPrefs());
|
||||
pref_change_registrar_.Add(
|
||||
@@ -139,9 +145,11 @@ void BraveOmniboxClientImpl::OnAutocompleteAccept(
|
||||
if (search_engine_tracker_ != nullptr) {
|
||||
search_engine_tracker_->RecordLocationBarQuery();
|
||||
}
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (ai_chat_metrics_) {
|
||||
ai_chat_metrics_->RecordOmniboxSearchQuery();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
ChromeOmniboxClient::OnAutocompleteAccept(
|
||||
destination_url, post_content, disposition, transition, match_type,
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//build/config/ui.gni")
|
||||
import("//extensions/buildflags/buildflags.gni")
|
||||
|
||||
@@ -64,7 +65,7 @@ source_set("browser_tests") {
|
||||
"//base",
|
||||
"//brave/app:command_ids",
|
||||
"//brave/browser/ui/views/frame/split_view",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/playlist/core/common",
|
||||
"//brave/components/sidebar/browser",
|
||||
"//brave/components/sidebar/common",
|
||||
@@ -84,6 +85,10 @@ source_set("browser_tests") {
|
||||
"//ui/events:test_support",
|
||||
"//ui/gfx",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/components/ai_chat/core/common" ]
|
||||
}
|
||||
}
|
||||
|
||||
source_set("unit_tests") {
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
#include "brave/browser/ui/views/toolbar/brave_toolbar_view.h"
|
||||
#include "brave/browser/ui/views/toolbar/side_panel_button.h"
|
||||
#include "brave/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/constants/brave_switches.h"
|
||||
#include "brave/components/playlist/core/common/features.h"
|
||||
#include "brave/components/sidebar/browser/constants.h"
|
||||
@@ -75,6 +75,10 @@
|
||||
#include "ui/gfx/animation/animation_test_api.h"
|
||||
#include "ui/gfx/geometry/point.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#endif
|
||||
|
||||
using ::testing::Eq;
|
||||
using ::testing::Ne;
|
||||
using ::testing::Optional;
|
||||
@@ -269,9 +273,11 @@ class SidebarBrowserTest : public InProcessBrowserTest {
|
||||
item_count -= 1;
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (!ai_chat::features::IsAIChatEnabled()) {
|
||||
item_count -= 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
return item_count;
|
||||
}
|
||||
@@ -367,6 +373,10 @@ IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, BasicTest) {
|
||||
EXPECT_EQ(expected_count, model()->GetAllSidebarItems().size());
|
||||
EXPECT_THAT(model()->active_index(), Optional(active_item_index));
|
||||
|
||||
// Navigate to a non-NTP page first to ensure we can add it to sidebar
|
||||
ASSERT_TRUE(
|
||||
ui_test_utils::NavigateToURL(browser(), GURL("brave://settings/")));
|
||||
|
||||
// If current active tab is not NTP, we can add current url to sidebar.
|
||||
EXPECT_TRUE(CanAddCurrentActiveTabToSidebar(browser()));
|
||||
|
||||
@@ -1160,7 +1170,8 @@ IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, TabSpecificAndGlobalPanelsTest) {
|
||||
tab_model()->ActivateTabAt(0);
|
||||
ASSERT_TRUE(
|
||||
ui_test_utils::NavigateToURL(browser(), GURL("chrome://new-tab-page/")));
|
||||
panel_ui->Show(SidePanelEntryId::kChatUI);
|
||||
|
||||
panel_ui->Show(SidePanelEntryId::kCustomizeChrome);
|
||||
WaitUntil(base::BindLambdaForTesting(
|
||||
[&]() { return GetSidePanel()->GetVisible(); }));
|
||||
|
||||
@@ -1177,7 +1188,7 @@ IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, TabSpecificAndGlobalPanelsTest) {
|
||||
// Contextual panel should be set when activate tab at 0.
|
||||
tab_model()->ActivateTabAt(0);
|
||||
WaitUntil(base::BindLambdaForTesting([&]() {
|
||||
return panel_ui->GetCurrentEntryId() == SidePanelEntryId::kChatUI;
|
||||
return panel_ui->GetCurrentEntryId() == SidePanelEntryId::kCustomizeChrome;
|
||||
}));
|
||||
|
||||
// Global panel should be set when activate tab at 1.
|
||||
@@ -1240,6 +1251,7 @@ class MockSidebarModelObserver : public SidebarModel::Observer {
|
||||
(override));
|
||||
};
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
class SidebarBrowserTestWithkSidebarShowAlwaysOnStable
|
||||
: public testing::WithParamInterface<bool>,
|
||||
public SidebarBrowserTest {
|
||||
@@ -1341,6 +1353,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
/* no prefix */,
|
||||
SidebarBrowserTestWithkSidebarShowAlwaysOnStable,
|
||||
::testing::Bool());
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
class SidebarBrowserTestWithPlaylist : public SidebarBrowserTest {
|
||||
public:
|
||||
@@ -1380,6 +1393,8 @@ IN_PROC_BROWSER_TEST_F(SidebarBrowserTestWithPlaylist, Incognito) {
|
||||
sidebar_service->RemoveItemAt(0);
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
class SidebarBrowserTestWithAIChat : public SidebarBrowserTest {
|
||||
public:
|
||||
SidebarBrowserTestWithAIChat() {
|
||||
@@ -1558,6 +1573,8 @@ IN_PROC_BROWSER_TEST_F(SidebarBrowserTestWithAIChat,
|
||||
EXPECT_EQ(model()->active_index(), new_global_item_index);
|
||||
}
|
||||
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, SidebarRightSideTest) {
|
||||
// Sidebar is on right by default
|
||||
EXPECT_FALSE(IsSidebarUIOnLeft());
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "brave/browser/ui/sidebar/sidebar_service_factory.h"
|
||||
#include "brave/browser/ui/sidebar/sidebar_utils.h"
|
||||
#include "brave/browser/ui/sidebar/sidebar_web_panel_controller.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/sidebar/browser/pref_names.h"
|
||||
#include "brave/components/sidebar/browser/sidebar_service.h"
|
||||
#include "brave/components/sidebar/common/features.h"
|
||||
@@ -118,11 +119,13 @@ void SidebarController::ActivateItemAt(std::optional<size_t> index,
|
||||
if (!item.is_web_type() && item.open_in_panel) {
|
||||
sidebar_model_->SetActiveIndex(index);
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (sidebar::features::kOpenOneShotLeoPanel.Get() &&
|
||||
item.built_in_item_type == SidebarItem::BuiltInItemType::kChatUI) {
|
||||
// Prevent one-time Leo panel open.
|
||||
profile_->GetPrefs()->SetBoolean(kLeoPanelOneShotOpen, true);
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/sidebar/browser/sidebar_item.h"
|
||||
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
|
||||
#include "components/keyed_service/core/keyed_service.h"
|
||||
@@ -35,7 +36,9 @@ class SidebarServiceFactory : public BrowserContextKeyedServiceFactory {
|
||||
|
||||
// This is the default display order
|
||||
static constexpr SidebarItem::BuiltInItemType kDefaultBuiltInItemTypes[] = {
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
SidebarItem::BuiltInItemType::kChatUI,
|
||||
#endif
|
||||
SidebarItem::BuiltInItemType::kBraveTalk,
|
||||
SidebarItem::BuiltInItemType::kWallet,
|
||||
SidebarItem::BuiltInItemType::kBookmarks,
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "brave/browser/ui/sidebar/sidebar_model.h"
|
||||
#include "brave/browser/ui/sidebar/sidebar_service_factory.h"
|
||||
#include "brave/browser/ui/sidebar/sidebar_utils.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/constants/webui_url_constants.h"
|
||||
#include "brave/components/sidebar/browser/constants.h"
|
||||
#include "brave/components/sidebar/browser/sidebar_service.h"
|
||||
@@ -208,11 +209,18 @@ TEST_F(SidebarModelTest, ActiveIndexChangedAfterItemAdded) {
|
||||
EXPECT_THAT(model()->active_index(), Optional(2u));
|
||||
}
|
||||
|
||||
// Check Leo item is top-most item.
|
||||
// Check that the expected item is top-most.
|
||||
TEST_F(SidebarModelTest, TopItemTest) {
|
||||
const auto first_item = service()->items()[0];
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
// Leo should be the top item when AI Chat is enabled.
|
||||
EXPECT_EQ(first_item.built_in_item_type,
|
||||
SidebarItem::BuiltInItemType::kChatUI);
|
||||
#else
|
||||
// Brave Talk should be the top item when AI Chat is disabled.
|
||||
EXPECT_EQ(first_item.built_in_item_type,
|
||||
SidebarItem::BuiltInItemType::kBraveTalk);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(SidebarUtilTest, SidebarShowOptionsDefaultTest) {
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "brave/browser/ui/sidebar/sidebar_controller.h"
|
||||
#include "brave/browser/ui/sidebar/sidebar_model.h"
|
||||
#include "brave/browser/ui/sidebar/sidebar_service_factory.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/constants/brave_switches.h"
|
||||
#include "brave/components/constants/webui_url_constants.h"
|
||||
#include "brave/components/sidebar/browser/constants.h"
|
||||
@@ -140,8 +141,10 @@ SidePanelEntryId SidePanelIdFromSideBarItemType(BuiltInItemType type) {
|
||||
return SidePanelEntryId::kBookmarks;
|
||||
case BuiltInItemType::kPlaylist:
|
||||
return SidePanelEntryId::kPlaylist;
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
case BuiltInItemType::kChatUI:
|
||||
return SidePanelEntryId::kChatUI;
|
||||
#endif
|
||||
case BuiltInItemType::kWallet:
|
||||
[[fallthrough]];
|
||||
case BuiltInItemType::kBraveTalk:
|
||||
@@ -165,8 +168,10 @@ std::optional<BuiltInItemType> BuiltInItemTypeFromSidePanelId(
|
||||
return BuiltInItemType::kBookmarks;
|
||||
case SidePanelEntryId::kPlaylist:
|
||||
return BuiltInItemType::kPlaylist;
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
case SidePanelEntryId::kChatUI:
|
||||
return BuiltInItemType::kChatUI;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -212,9 +217,11 @@ void SetLastUsedSidePanel(PrefService* prefs,
|
||||
case SidePanelEntryId::kPlaylist:
|
||||
type = BuiltInItemType::kPlaylist;
|
||||
break;
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
case SidePanelEntryId::kChatUI:
|
||||
type = BuiltInItemType::kChatUI;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -236,7 +243,9 @@ std::optional<SidePanelEntryId> GetLastUsedSidePanel(Browser* browser) {
|
||||
|
||||
bool IsDisabledItemForPrivate(SidebarItem::BuiltInItemType type) {
|
||||
switch (type) {
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
case SidebarItem::BuiltInItemType::kChatUI:
|
||||
#endif
|
||||
case SidebarItem::BuiltInItemType::kPlaylist:
|
||||
return true;
|
||||
default:
|
||||
@@ -249,7 +258,9 @@ bool IsDisabledItemForGuest(SidebarItem::BuiltInItemType type) {
|
||||
switch (type) {
|
||||
case SidebarItem::BuiltInItemType::kBookmarks:
|
||||
case SidebarItem::BuiltInItemType::kReadingList:
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
case SidebarItem::BuiltInItemType::kChatUI:
|
||||
#endif
|
||||
case SidebarItem::BuiltInItemType::kPlaylist:
|
||||
return true;
|
||||
default:
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
|
||||
assert(is_win || is_mac || is_linux || is_chromeos || is_android)
|
||||
|
||||
# Note: Target names in this file should match those upstream where possible.
|
||||
@@ -11,6 +13,7 @@ source_set("tabs_public") {
|
||||
sources = [ "public/brave_tab_features.h" ]
|
||||
|
||||
public_deps = [
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/psst/buildflags",
|
||||
"//chrome/browser/ui/tabs:tabs_public",
|
||||
]
|
||||
@@ -28,13 +31,16 @@ if (!is_android) {
|
||||
|
||||
deps = [
|
||||
":tabs_public",
|
||||
"//brave/browser/ai_chat",
|
||||
"//brave/browser/psst",
|
||||
"//brave/browser/ui/side_panel",
|
||||
"//brave/components/psst/browser/content",
|
||||
"//chrome/browser/profiles",
|
||||
"//chrome/browser/ui/tabs:impl",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/browser/ai_chat" ]
|
||||
}
|
||||
}
|
||||
|
||||
# This source set is counterpart to the upstream `tab_strip` source set.
|
||||
|
||||
@@ -11,14 +11,18 @@
|
||||
#include "base/check.h"
|
||||
#include "base/memory/ptr_util.h"
|
||||
#include "base/no_destructor.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_utils.h"
|
||||
#include "brave/browser/ai_chat/tab_data_web_contents_observer.h"
|
||||
#include "brave/browser/ui/side_panel/brave_side_panel_utils.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ui/tabs/public/tab_features.h"
|
||||
#include "chrome/common/chrome_isolated_world_ids.h"
|
||||
#include "components/tabs/public/tab_interface.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/ai_chat_utils.h"
|
||||
#include "brave/browser/ai_chat/tab_data_web_contents_observer.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_PSST)
|
||||
#include "brave/browser/psst/psst_ui_delegate_impl.h"
|
||||
#include "brave/components/psst/browser/content/psst_tab_web_contents_observer.h"
|
||||
@@ -41,10 +45,12 @@ void BraveTabFeatures::Init(TabInterface& tab, Profile* profile) {
|
||||
CHECK(side_panel_registry());
|
||||
brave::RegisterContextualSidePanel(side_panel_registry(), tab.GetContents());
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (ai_chat::IsAllowedForContext(profile)) {
|
||||
tab_data_observer_ = std::make_unique<ai_chat::TabDataWebContentsObserver>(
|
||||
tab.GetHandle().raw_value(), tab.GetContents());
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_PSST)
|
||||
psst_web_contents_observer_ =
|
||||
|
||||
@@ -8,14 +8,17 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/psst/buildflags/buildflags.h"
|
||||
#include "chrome/browser/ui/tabs/public/tab_features.h"
|
||||
|
||||
class Profile;
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
namespace ai_chat {
|
||||
class TabDataWebContentsObserver;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_PSST)
|
||||
namespace psst {
|
||||
@@ -42,7 +45,9 @@ class BraveTabFeatures : public TabFeatures {
|
||||
#endif
|
||||
|
||||
private:
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
std::unique_ptr<ai_chat::TabDataWebContentsObserver> tab_data_observer_;
|
||||
#endif
|
||||
#if BUILDFLAG(ENABLE_PSST)
|
||||
std::unique_ptr<psst::PsstTabWebContentsObserver> psst_web_contents_observer_;
|
||||
#endif
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "base/containers/map_util.h"
|
||||
#include "base/no_destructor.h"
|
||||
#include "brave/app/brave_command_ids.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/vector_icons/vector_icons.h"
|
||||
#include "chrome/app/chrome_command_ids.h"
|
||||
#include "ui/base/models/image_model.h"
|
||||
@@ -31,7 +32,9 @@ constexpr auto kCommandIcons =
|
||||
{IDC_NEW_OFFTHERECORD_WINDOW_TOR, &kLeoWindowTabTorIcon},
|
||||
{IDC_SHOW_BRAVE_REWARDS, &kLeoProductBatOutlineIcon},
|
||||
{IDC_SHOW_BRAVE_WALLET, &kLeoProductBraveWalletIcon},
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
{IDC_TOGGLE_AI_CHAT, &kLeoProductBraveLeoIcon},
|
||||
#endif
|
||||
{IDC_BRAVE_VPN_MENU, &kLeoProductVpnIcon},
|
||||
{IDC_PASSWORDS_AND_AUTOFILL_MENU, &kLeoKeyIcon},
|
||||
{IDC_RECENT_TABS_MENU, &kLeoHistoryIcon},
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "base/notreached.h"
|
||||
#include "brave/app/brave_command_ids.h"
|
||||
#include "brave/browser/ui/toolbar/app_menu_icons.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/commander/common/buildflags/buildflags.h"
|
||||
#include "chrome/app/chrome_command_ids.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
@@ -145,11 +146,13 @@ void BraveAppMenuModel::BuildBraveProductsSection() {
|
||||
// Needs to add separator as this section is brave specific section.
|
||||
bool need_separator = false;
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (IsCommandIdEnabled(IDC_TOGGLE_AI_CHAT)) {
|
||||
InsertItemWithStringIdAt(GetNextIndexOfBraveProductsSection(),
|
||||
IDC_TOGGLE_AI_CHAT, IDS_TOGGLE_AI_CHAT);
|
||||
need_separator = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (IsCommandIdEnabled(IDC_SHOW_BRAVE_WALLET)) {
|
||||
InsertItemWithStringIdAt(GetNextIndexOfBraveProductsSection(),
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "brave/app/brave_command_ids.h"
|
||||
#include "brave/browser/ui/brave_browser_command_controller.h"
|
||||
#include "brave/browser/ui/browser_commands.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "brave/components/skus/common/features.h"
|
||||
#include "brave/components/tor/buildflags/buildflags.h"
|
||||
@@ -169,7 +170,9 @@ IN_PROC_BROWSER_TEST_F(BraveAppMenuModelBrowserTest, MenuOrderTest) {
|
||||
#if BUILDFLAG(ENABLE_TOR)
|
||||
IDC_NEW_OFFTHERECORD_WINDOW_TOR,
|
||||
#endif
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
IDC_TOGGLE_AI_CHAT,
|
||||
#endif
|
||||
IDC_SHOW_BRAVE_WALLET,
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
IDC_SHOW_BRAVE_VPN_PANEL,
|
||||
|
||||
+7
-1
@@ -8,10 +8,10 @@
|
||||
#include "base/check.h"
|
||||
#include "base/functional/bind.h"
|
||||
#include "brave/browser/ui/views/location_bar/brave_search_conversion/promotion_button_view.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_search_conversion/features.h"
|
||||
#include "brave/components/brave_search_conversion/pref_names.h"
|
||||
#include "brave/components/brave_search_conversion/utils.h"
|
||||
#include "brave/components/omnibox/browser/leo_provider.h"
|
||||
#include "brave/components/omnibox/browser/promotion_utils.h"
|
||||
#include "brave/components/search_engines/brave_prepopulated_engines.h"
|
||||
#include "chrome/browser/image_fetcher/image_fetcher_service_factory.h"
|
||||
@@ -32,6 +32,10 @@
|
||||
#include "components/search_engines/template_url_service.h"
|
||||
#include "ui/base/page_transition_types.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/omnibox/browser/leo_provider.h"
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr char kImageFetcherUmaClientName[] = "SearchPromotionButtonFavicon";
|
||||
@@ -141,7 +145,9 @@ bool PromotionButtonController::ShouldShowSearchPromotionButton() {
|
||||
|
||||
const AutocompleteMatch match = omnibox_view_->model()->CurrentMatch(nullptr);
|
||||
return !IsBraveSearchPromotionMatch(match) &&
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
!LeoProvider::IsMatchFromLeoProvider(match) &&
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
AutocompleteMatch::IsSearchType(match.type);
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "brave/browser/ui/color/brave_color_id.h"
|
||||
#include "brave/browser/ui/views/omnibox/brave_omnibox_popup_view_views.h"
|
||||
#include "brave/browser/ui/views/omnibox/brave_search_conversion_promotion_view.h"
|
||||
#include "brave/components/omnibox/browser/leo_provider.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/omnibox/browser/promotion_utils.h"
|
||||
#include "brave/grit/brave_theme_resources.h"
|
||||
#include "chrome/browser/browser_process.h"
|
||||
@@ -40,6 +40,10 @@
|
||||
#include "ui/views/layout/flex_layout_types.h"
|
||||
#include "ui/views/view_class_properties.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/omnibox/browser/leo_provider.h"
|
||||
#endif
|
||||
|
||||
BraveOmniboxResultView::~BraveOmniboxResultView() = default;
|
||||
|
||||
void BraveOmniboxResultView::ResetChildren() {
|
||||
@@ -67,7 +71,9 @@ void BraveOmniboxResultView::SetMatch(const AutocompleteMatch& match) {
|
||||
OmniboxResultView::SetMatch(match);
|
||||
|
||||
UpdateForBraveSearchConversion();
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
UpdateForLeoMatch();
|
||||
#endif
|
||||
}
|
||||
|
||||
void BraveOmniboxResultView::OnSelectionStateChanged() {
|
||||
@@ -77,18 +83,22 @@ void BraveOmniboxResultView::OnSelectionStateChanged() {
|
||||
}
|
||||
|
||||
gfx::Image BraveOmniboxResultView::GetIcon() const {
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (LeoProvider::IsMatchFromLeoProvider(match_)) {
|
||||
// As Leo icon has gradient color, we can't use vector icon because it lacks
|
||||
// of gradient color.
|
||||
return ui::ResourceBundle::GetSharedInstance().GetImageNamed(
|
||||
IDR_LEO_FAVICON);
|
||||
}
|
||||
#endif
|
||||
return OmniboxResultView::GetIcon();
|
||||
}
|
||||
|
||||
void BraveOmniboxResultView::OnThemeChanged() {
|
||||
OmniboxResultView::OnThemeChanged();
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
UpdateForLeoMatch();
|
||||
#endif
|
||||
}
|
||||
|
||||
void BraveOmniboxResultView::OpenMatch() {
|
||||
@@ -144,6 +154,7 @@ void BraveOmniboxResultView::UpdateForBraveSearchConversion() {
|
||||
HandleSelectionStateChangedForPromotionView();
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void BraveOmniboxResultView::UpdateForLeoMatch() {
|
||||
if (LeoProvider::IsMatchFromLeoProvider(match_)) {
|
||||
constexpr int kLeoMatchPadding = 4;
|
||||
@@ -182,13 +193,16 @@ void BraveOmniboxResultView::UpdateForLeoMatch() {
|
||||
SetBorder(nullptr);
|
||||
}
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
void BraveOmniboxResultView::OnPaintBackground(gfx::Canvas* canvas) {
|
||||
gfx::ScopedCanvas scoped_canvas(canvas);
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (LeoProvider::IsMatchFromLeoProvider(match_)) {
|
||||
// Clip upper padding
|
||||
canvas->ClipRect(GetContentsBounds());
|
||||
}
|
||||
#endif
|
||||
|
||||
OmniboxResultView::OnPaintBackground(canvas);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define BRAVE_BROWSER_UI_VIEWS_OMNIBOX_BRAVE_OMNIBOX_RESULT_VIEW_H_
|
||||
|
||||
#include "base/memory/raw_ptr.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "chrome/browser/ui/views/omnibox/omnibox_result_view.h"
|
||||
#include "ui/base/metadata/metadata_header_macros.h"
|
||||
|
||||
@@ -42,7 +43,9 @@ class BraveOmniboxResultView : public OmniboxResultView {
|
||||
void ResetChildren();
|
||||
void UpdateForBraveSearchConversion();
|
||||
void HandleSelectionStateChangedForPromotionView();
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void UpdateForLeoMatch();
|
||||
#endif
|
||||
|
||||
// Brave search conversion promotion
|
||||
raw_ptr<BraveSearchConversionPromotionView> brave_search_promotion_view_ =
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
|
||||
assert(enable_ai_chat)
|
||||
|
||||
source_set("ai_chat") {
|
||||
sources = [
|
||||
"ai_chat_side_panel_utils_views.cc",
|
||||
|
||||
@@ -3,11 +3,15 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ui/views/side_panel/side_panel_registry.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#include "brave/browser/ui/side_panel/ai_chat/ai_chat_side_panel_utils.h"
|
||||
#include "brave/browser/ui/views/side_panel/ai_chat/ai_chat_side_panel_web_view.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ui/views/side_panel/side_panel_registry.h"
|
||||
#endif
|
||||
|
||||
namespace brave {
|
||||
|
||||
@@ -16,6 +20,7 @@ namespace brave {
|
||||
// registering it.
|
||||
void RegisterContextualSidePanel(SidePanelRegistry* registry,
|
||||
content::WebContents* web_contents) {
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
content::BrowserContext* context = web_contents->GetBrowserContext();
|
||||
// Disable tab-scoped panel for content agent profiles.
|
||||
// TODO(https://github.com/brave/brave-browser/issues/48526): Remove
|
||||
@@ -30,6 +35,7 @@ void RegisterContextualSidePanel(SidePanelRegistry* registry,
|
||||
/*is_tab_associated=*/true),
|
||||
/*default_content_width_callback=*/base::NullCallback()));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
} // namespace brave
|
||||
|
||||
@@ -29,8 +29,7 @@
|
||||
#include "brave/browser/ui/views/sidebar/sidebar_edit_item_bubble_delegate_view.h"
|
||||
#include "brave/browser/ui/views/sidebar/sidebar_item_added_feedback_bubble.h"
|
||||
#include "brave/browser/ui/views/sidebar/sidebar_item_view.h"
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/playlist/core/common/features.h"
|
||||
#include "brave/components/sidebar/browser/pref_names.h"
|
||||
#include "brave/components/sidebar/browser/sidebar_item.h"
|
||||
@@ -60,6 +59,11 @@
|
||||
#include "ui/views/controls/separator.h"
|
||||
#include "ui/views/layout/box_layout.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr gfx::Size kIconSize(SidebarButtonView::kExternalIconSize,
|
||||
@@ -526,6 +530,7 @@ void SidebarItemsContentsView::OnItemPressed(const views::View* item,
|
||||
}
|
||||
|
||||
if (!item_model.is_web_type() && item_model.open_in_panel) {
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (item_model.built_in_item_type ==
|
||||
sidebar::SidebarItem::BuiltInItemType::kChatUI) {
|
||||
auto* profile_metrics =
|
||||
@@ -539,6 +544,7 @@ void SidebarItemsContentsView::OnItemPressed(const views::View* item,
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
controller->ActivatePanelItem(item_model.built_in_item_type);
|
||||
return;
|
||||
}
|
||||
@@ -579,8 +585,10 @@ ui::ImageModel SidebarItemsContentsView::GetImageForBuiltInItems(
|
||||
return get_image_model(kLeoHistoryIcon, state);
|
||||
case sidebar::SidebarItem::BuiltInItemType::kPlaylist:
|
||||
return get_image_model(kLeoProductPlaylistIcon, state);
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
case sidebar::SidebarItem::BuiltInItemType::kChatUI:
|
||||
return get_image_model(kLeoProductBraveLeoIcon, state);
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#include "brave/browser/ui/color/brave_color_id.h"
|
||||
#include "brave/browser/ui/sidebar/sidebar_service_factory.h"
|
||||
#include "brave/browser/ui/toolbar/brave_app_menu_model.h"
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "brave/components/misc_metrics/menu_metrics.h"
|
||||
#include "brave/components/sidebar/browser/sidebar_service.h"
|
||||
@@ -45,6 +45,10 @@
|
||||
#include "ui/views/metadata/view_factory.h"
|
||||
#include "ui/views/view.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/ai_chat_metrics.h"
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
#include "brave/browser/ui/views/toolbar/brave_vpn_status_label.h"
|
||||
#include "brave/browser/ui/views/toolbar/brave_vpn_toggle_button.h"
|
||||
@@ -234,6 +238,7 @@ void BraveAppMenu::OnMenuClosed(views::MenuItemView* menu) {
|
||||
void BraveAppMenu::RecordMenuUsage(int command_id) {
|
||||
misc_metrics::MenuGroup group;
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (command_id == IDC_TOGGLE_AI_CHAT) {
|
||||
auto* profile_metrics =
|
||||
misc_metrics::ProfileMiscMetricsServiceFactory::GetServiceForContext(
|
||||
@@ -244,6 +249,7 @@ void BraveAppMenu::RecordMenuUsage(int command_id) {
|
||||
ai_chat_metrics->HandleOpenViaEntryPoint(ai_chat::EntryPoint::kMenuItem);
|
||||
}
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
switch (command_id) {
|
||||
case IDC_NEW_WINDOW:
|
||||
|
||||
@@ -13,16 +13,14 @@
|
||||
#include "base/check_op.h"
|
||||
#include "base/functional/bind.h"
|
||||
#include "brave/app/brave_command_ids.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_utils.h"
|
||||
#include "brave/browser/brave_wallet/brave_wallet_context_utils.h"
|
||||
#include "brave/browser/ui/tabs/brave_tab_prefs.h"
|
||||
#include "brave/browser/ui/views/location_bar/brave_location_bar_view.h"
|
||||
#include "brave/browser/ui/views/tabs/vertical_tab_utils.h"
|
||||
#include "brave/browser/ui/views/toolbar/ai_chat_button.h"
|
||||
#include "brave/browser/ui/views/toolbar/bookmark_button.h"
|
||||
#include "brave/browser/ui/views/toolbar/side_panel_button.h"
|
||||
#include "brave/browser/ui/views/toolbar/wallet_button.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_wallet/browser/pref_names.h"
|
||||
#include "brave/components/brave_wallet/common/common_utils.h"
|
||||
@@ -47,6 +45,12 @@
|
||||
#include "ui/events/event.h"
|
||||
#include "ui/views/window/hit_test_utils.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/ai_chat_utils.h"
|
||||
#include "brave/browser/ui/views/toolbar/ai_chat_button.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
#include "brave/browser/brave_vpn/brave_vpn_service_factory.h"
|
||||
#include "brave/browser/ui/views/toolbar/brave_vpn_button.h"
|
||||
@@ -266,6 +270,7 @@ void BraveToolbarView::Init() {
|
||||
|
||||
UpdateWalletButtonVisibility();
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
// Don't check policy status since we're going to
|
||||
// setup a watcher for policy pref.
|
||||
if (ai_chat::IsAllowedForContext(browser_->profile(), false)) {
|
||||
@@ -283,6 +288,7 @@ void BraveToolbarView::Init() {
|
||||
base::Unretained(this)));
|
||||
UpdateAIChatButtonVisibility();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
if (brave_vpn::BraveVpnServiceFactory::GetForProfile(profile)) {
|
||||
@@ -518,11 +524,13 @@ void BraveToolbarView::ResetBookmarkButtonBounds() {
|
||||
}
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void BraveToolbarView::UpdateAIChatButtonVisibility() {
|
||||
bool should_show = ai_chat::IsAllowedForContext(browser()->profile()) &&
|
||||
show_ai_chat_button_.GetValue();
|
||||
ai_chat_button_->SetVisible(should_show);
|
||||
}
|
||||
#endif
|
||||
|
||||
void BraveToolbarView::UpdateWalletButtonVisibility() {
|
||||
Profile* profile = browser()->profile();
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
#include "base/gtest_prod_util.h"
|
||||
#include "base/memory/raw_ptr.h"
|
||||
#include "base/scoped_observation.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "chrome/browser/profiles/profile_attributes_storage.h"
|
||||
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
|
||||
#include "components/prefs/pref_member.h"
|
||||
#include "ui/base/metadata/metadata_header_macros.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
class AIChatButton;
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
class BraveVPNButton;
|
||||
@@ -37,7 +40,9 @@ class BraveToolbarView : public ToolbarView,
|
||||
BraveBookmarkButton* bookmark_button() const { return bookmark_; }
|
||||
WalletButton* wallet_button() const { return wallet_; }
|
||||
SidePanelButton* side_panel_button() const { return side_panel_; }
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
AIChatButton* ai_chat_button() const { return ai_chat_button_; }
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
BraveVPNButton* brave_vpn_button() const { return brave_vpn_; }
|
||||
@@ -72,7 +77,9 @@ class BraveToolbarView : public ToolbarView,
|
||||
void OnProfileWasRemoved(const base::FilePath& profile_path,
|
||||
const std::u16string& profile_name) override;
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void UpdateAIChatButtonVisibility();
|
||||
#endif
|
||||
void UpdateWalletButtonVisibility();
|
||||
|
||||
views::View* toolbar_divider_for_testing() { return toolbar_divider_; }
|
||||
@@ -92,9 +99,11 @@ class BraveToolbarView : public ToolbarView,
|
||||
|
||||
BooleanPrefMember show_bookmarks_button_;
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
raw_ptr<AIChatButton> ai_chat_button_ = nullptr;
|
||||
BooleanPrefMember show_ai_chat_button_;
|
||||
BooleanPrefMember hide_ai_chat_button_by_policy_;
|
||||
#endif
|
||||
|
||||
BooleanPrefMember show_wallet_button_;
|
||||
BooleanPrefMember wallet_disabled_by_policy_;
|
||||
|
||||
@@ -11,12 +11,9 @@
|
||||
#include "base/test/scoped_feature_list.h"
|
||||
#include "brave/browser/ui/tabs/brave_split_tab_menu_model.h"
|
||||
#include "brave/browser/ui/views/frame/brave_browser_view.h"
|
||||
#include "brave/browser/ui/views/toolbar/ai_chat_button.h"
|
||||
#include "brave/browser/ui/views/toolbar/bookmark_button.h"
|
||||
#include "brave/browser/ui/views/toolbar/wallet_button.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_wallet/browser/pref_names.h"
|
||||
#include "brave/components/constants/pref_names.h"
|
||||
#include "brave/components/constants/webui_url_constants.h"
|
||||
@@ -62,6 +59,13 @@
|
||||
#include "ui/base/l10n/l10n_util.h"
|
||||
#include "ui/views/view.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ui/views/toolbar/ai_chat_button.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_TOR)
|
||||
#include "brave/browser/tor/tor_profile_manager.h"
|
||||
#endif
|
||||
@@ -104,6 +108,7 @@ class BraveToolbarViewTest : public InProcessBrowserTest {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void BlockAIChatByPolicy(bool value) {
|
||||
policy::PolicyMap policies;
|
||||
policies.Set(policy::key::kBraveAIChatEnabled,
|
||||
@@ -113,6 +118,7 @@ class BraveToolbarViewTest : public InProcessBrowserTest {
|
||||
EXPECT_EQ(ai_chat::IsAIChatEnabled(browser()->profile()->GetPrefs()),
|
||||
!value);
|
||||
}
|
||||
#endif
|
||||
|
||||
void Init(Browser* browser) {
|
||||
BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
|
||||
@@ -145,6 +151,7 @@ class BraveToolbarViewTest : public InProcessBrowserTest {
|
||||
return wallet_button->GetVisible();
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
bool is_ai_chat_button_shown(Browser* browser) {
|
||||
BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
|
||||
toolbar_view_ = static_cast<BraveToolbarView*>(browser_view->toolbar());
|
||||
@@ -154,6 +161,7 @@ class BraveToolbarViewTest : public InProcessBrowserTest {
|
||||
}
|
||||
return button->GetVisible();
|
||||
}
|
||||
#endif
|
||||
|
||||
AvatarToolbarButton* GetAvatarToolbarButton(Browser* browser) {
|
||||
return BrowserView::GetBrowserViewForBrowser(browser)
|
||||
@@ -184,6 +192,7 @@ class BraveToolbarViewTest_VPNEnabled : public BraveToolbarViewTest {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
class BraveToolbarViewTest_AIChatEnabled : public BraveToolbarViewTest {
|
||||
public:
|
||||
BraveToolbarViewTest_AIChatEnabled() {
|
||||
@@ -203,6 +212,7 @@ class BraveToolbarViewTest_AIChatDisabled : public BraveToolbarViewTest {
|
||||
protected:
|
||||
base::test::ScopedFeatureList scoped_feature_list_;
|
||||
};
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
IN_PROC_BROWSER_TEST_F(BraveToolbarViewTest_VPNEnabled, VPNButtonVisibility) {
|
||||
@@ -234,6 +244,7 @@ IN_PROC_BROWSER_TEST_F(BraveToolbarViewTest_VPNEnabled, VPNButtonVisibility) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
IN_PROC_BROWSER_TEST_F(BraveToolbarViewTest_AIChatEnabled,
|
||||
AIChatButtonOpenTargetTest) {
|
||||
auto* prefs = browser()->profile()->GetPrefs();
|
||||
@@ -331,6 +342,7 @@ IN_PROC_BROWSER_TEST_F(BraveToolbarViewTest_AIChatDisabled,
|
||||
// Button is always hidden when feature flag is disabled
|
||||
EXPECT_FALSE(is_ai_chat_button_shown(browser()));
|
||||
}
|
||||
#endif
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(BraveToolbarViewTest, ToolbarDividerNotShownTest) {
|
||||
// As we don't use divider in toolbar, it should be null always.
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
|
||||
assert(enable_ai_chat)
|
||||
|
||||
source_set("ai_chat") {
|
||||
sources = [
|
||||
"ai_chat_ui.cc",
|
||||
@@ -53,8 +55,8 @@ source_set("ai_chat") {
|
||||
"ai_chat_agent_new_tab_page_ui.cc",
|
||||
"ai_chat_agent_new_tab_page_ui.h",
|
||||
]
|
||||
public_deps = [ "//brave/browser/ai_chat:ai_chat_agent_profile" ]
|
||||
deps += [
|
||||
"//brave/browser/ai_chat:ai_chat_agent_profile",
|
||||
"//brave/browser/resources/ai_chat_agent_new_tab_page:pack_js_resources",
|
||||
"//brave/browser/resources/ai_chat_agent_new_tab_page:pack_static_resources",
|
||||
]
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/build/config.gni")
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_vpn/common/buildflags/buildflags.gni")
|
||||
import("//build/config/features.gni")
|
||||
import("//chrome/common/features.gni")
|
||||
@@ -16,9 +17,9 @@ source_set("brave_browser_command") {
|
||||
|
||||
deps = [
|
||||
"//base",
|
||||
"//brave/browser/ai_chat",
|
||||
"//brave/browser/brave_rewards",
|
||||
"//brave/browser/brave_wallet",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/brave_education",
|
||||
"//brave/components/brave_vpn/common/buildflags",
|
||||
"//brave/components/constants",
|
||||
@@ -29,6 +30,10 @@ source_set("brave_browser_command") {
|
||||
"//url",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [ "//brave/browser/ai_chat" ]
|
||||
}
|
||||
|
||||
if (enable_brave_vpn) {
|
||||
deps += [ "//brave/browser/brave_vpn" ]
|
||||
}
|
||||
|
||||
@@ -8,14 +8,18 @@
|
||||
#include "brave/browser/ui/webui/brave_browser_command/brave_browser_command_handler.h"
|
||||
|
||||
#include "base/containers/contains.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#include "brave/browser/brave_rewards/rewards_service_factory.h"
|
||||
#include "brave/browser/brave_wallet/brave_wallet_service_factory.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_education/education_urls.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "brave/components/constants/webui_url_constants.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/ai_chat_service_factory.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
#include "brave/browser/brave_vpn/vpn_utils.h"
|
||||
#endif
|
||||
@@ -40,10 +44,12 @@ bool CanShowVPNBubble(Profile* profile) {
|
||||
#endif
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
bool CanShowAIChat(Profile* profile) {
|
||||
return ai_chat::AIChatServiceFactory::GetForBrowserContext(profile) !=
|
||||
nullptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -80,9 +86,11 @@ void BraveBrowserCommandHandler::CanExecuteCommand(
|
||||
case brave_browser_command::mojom::Command::kOpenVPNOnboarding:
|
||||
can_execute = CanShowVPNBubble(profile_);
|
||||
break;
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
case brave_browser_command::mojom::Command::kOpenAIChat:
|
||||
can_execute = CanShowAIChat(profile_);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
std::move(callback).Run(can_execute);
|
||||
}
|
||||
@@ -111,9 +119,11 @@ void BraveBrowserCommandHandler::ExecuteCommand(
|
||||
std::move(callback).Run(false);
|
||||
return;
|
||||
#endif
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
case brave_browser_command::mojom::Command::kOpenAIChat:
|
||||
delegate_->OpenAIChat();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
std::move(callback).Run(true);
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/ui/webui/resources/js/brave_browser_command/brave_browser_command.mojom.h"
|
||||
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
||||
#include "mojo/public/cpp/bindings/receiver.h"
|
||||
@@ -32,7 +33,9 @@ class BraveBrowserCommandHandler
|
||||
WindowOpenDisposition disposition) = 0;
|
||||
virtual void OpenRewardsPanel() = 0;
|
||||
virtual void OpenVPNPanel() = 0;
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
virtual void OpenAIChat() = 0;
|
||||
#endif
|
||||
};
|
||||
|
||||
BraveBrowserCommandHandler(
|
||||
|
||||
@@ -8,11 +8,15 @@
|
||||
#include "base/check.h"
|
||||
#include "brave/browser/ui/brave_rewards/rewards_panel_coordinator.h"
|
||||
#include "brave/browser/ui/brave_vpn/brave_vpn_controller.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_window_features.h"
|
||||
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "chrome/browser/ui/views/side_panel/side_panel_entry.h"
|
||||
#include "chrome/browser/ui/views/side_panel/side_panel_ui.h"
|
||||
#endif
|
||||
|
||||
namespace brave_education {
|
||||
|
||||
@@ -44,9 +48,11 @@ void BraveEducationPageDelegateDesktop::OpenVPNPanel() {
|
||||
#endif
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void BraveEducationPageDelegateDesktop::OpenAIChat() {
|
||||
window_interface_->GetFeatures().side_panel_ui()->Show(
|
||||
SidePanelEntry::Key(SidePanelEntryId::kChatUI));
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace brave_education
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "base/memory/raw_ref.h"
|
||||
#include "brave/browser/ui/webui/brave_browser_command/brave_browser_command_handler.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "ui/base/window_open_disposition.h"
|
||||
#include "url/gurl.h"
|
||||
|
||||
@@ -26,7 +27,9 @@ class BraveEducationPageDelegateDesktop
|
||||
void OpenURL(const GURL& url, WindowOpenDisposition disposition) override;
|
||||
void OpenRewardsPanel() override;
|
||||
void OpenVPNPanel() override;
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void OpenAIChat() override;
|
||||
#endif
|
||||
|
||||
private:
|
||||
// The browser window interface for tab w/ brave_education's WebUI.
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "base/test/bind.h"
|
||||
#include "base/test/test_future.h"
|
||||
#include "brave/browser/ui/webui/brave_browser_command/brave_browser_command_handler.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_education/education_urls.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "chrome/test/base/testing_browser_process.h"
|
||||
@@ -35,7 +36,9 @@ class TestDelegate : public BraveBrowserCommandHandler::Delegate {
|
||||
|
||||
void OpenRewardsPanel() override { add_action_.Run("open-rewards-panel"); }
|
||||
void OpenVPNPanel() override { add_action_.Run("open-vpn-panel"); }
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void OpenAIChat() override { add_action_.Run("open-ai-chat"); }
|
||||
#endif
|
||||
|
||||
private:
|
||||
AddActionCallback add_action_;
|
||||
@@ -63,7 +66,10 @@ class BraveEducationPageHandlerTest : public testing::Test {
|
||||
{brave_browser_command::mojom::Command::kOpenRewardsOnboarding,
|
||||
brave_browser_command::mojom::Command::kOpenWalletOnboarding,
|
||||
brave_browser_command::mojom::Command::kOpenVPNOnboarding,
|
||||
brave_browser_command::mojom::Command::kOpenAIChat});
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
brave_browser_command::mojom::Command::kOpenAIChat
|
||||
#endif
|
||||
});
|
||||
|
||||
page_handler_ = std::make_unique<BraveBrowserCommandHandler>(
|
||||
remote_.BindNewPipeAndPassReceiver(), profile, supported_commands,
|
||||
@@ -119,6 +125,7 @@ TEST_F(BraveEducationPageHandlerTest, VPNCommandsExecuted) {
|
||||
#endif
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
TEST_F(BraveEducationPageHandlerTest, ChatCommandsExecuted) {
|
||||
auto& handler = CreateHandler();
|
||||
base::test::TestFuture<bool> future;
|
||||
@@ -129,6 +136,7 @@ TEST_F(BraveEducationPageHandlerTest, ChatCommandsExecuted) {
|
||||
ASSERT_TRUE(future.Get());
|
||||
EXPECT_EQ(actions()[0], "open-ai-chat");
|
||||
}
|
||||
#endif
|
||||
|
||||
TEST_F(BraveEducationPageHandlerTest, OffTheRecordProfile) {
|
||||
auto* otr_profile = profile().GetOffTheRecordProfile(
|
||||
@@ -158,9 +166,11 @@ TEST_F(BraveEducationPageHandlerTest, OffTheRecordProfile) {
|
||||
future.GetCallback());
|
||||
ASSERT_FALSE(future.Get());
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
handler->CanExecuteCommand(brave_browser_command::mojom::Command::kOpenAIChat,
|
||||
future.GetCallback());
|
||||
ASSERT_FALSE(future.Get());
|
||||
#endif
|
||||
|
||||
EXPECT_TRUE(actions().empty());
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "brave/browser/ui/webui/brave_education/brave_education_handler.h"
|
||||
#include "brave/browser/ui/webui/brave_education/brave_education_page_delegate_desktop.h"
|
||||
#include "brave/browser/ui/webui/brave_webui_source.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_education/education_urls.h"
|
||||
#include "brave/components/constants/webui_url_constants.h"
|
||||
#include "brave/grit/brave_education_resources.h"
|
||||
@@ -102,10 +103,14 @@ void BraveEducationPageUI::CreateBrowserCommandHandler(
|
||||
|
||||
supported_commands.insert(
|
||||
supported_commands.end(),
|
||||
{brave_browser_command::mojom::Command::kOpenRewardsOnboarding,
|
||||
brave_browser_command::mojom::Command::kOpenWalletOnboarding,
|
||||
brave_browser_command::mojom::Command::kOpenVPNOnboarding,
|
||||
brave_browser_command::mojom::Command::kOpenAIChat});
|
||||
{
|
||||
brave_browser_command::mojom::Command::kOpenRewardsOnboarding,
|
||||
brave_browser_command::mojom::Command::kOpenWalletOnboarding,
|
||||
brave_browser_command::mojom::Command::kOpenVPNOnboarding,
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
brave_browser_command::mojom::Command::kOpenAIChat,
|
||||
#endif
|
||||
});
|
||||
|
||||
auto* web_contents = web_ui()->GetWebContents();
|
||||
auto* tab = tabs::TabInterface::GetFromContents(web_contents);
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <utility>
|
||||
|
||||
#include "base/memory/weak_ptr.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_education/education_urls.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "brave/components/constants/webui_url_constants.h"
|
||||
@@ -132,6 +133,7 @@ IN_PROC_BROWSER_TEST_F(BraveEducationPageUIBrowserTest, OpenVPNOnboarding) {
|
||||
|
||||
#endif // BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
IN_PROC_BROWSER_TEST_F(BraveEducationPageUIBrowserTest, OpenAPIChat) {
|
||||
NavigateToEducationPage(EducationPageType::kGettingStarted);
|
||||
|
||||
@@ -145,5 +147,6 @@ IN_PROC_BROWSER_TEST_F(BraveEducationPageUIBrowserTest, OpenAPIChat) {
|
||||
EXPECT_TRUE(
|
||||
new_web_contents->GetVisibleURL().spec().starts_with(kAIChatUIURL));
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
} // namespace brave_education
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
|
||||
#include "base/compiler_specific.h"
|
||||
#include "base/feature_list.h"
|
||||
#include "brave/browser/ai_chat/ai_chat_settings_helper.h"
|
||||
#include "brave/browser/brave_origin/brave_origin_service_factory.h"
|
||||
#include "brave/browser/brave_rewards/rewards_util.h"
|
||||
#include "brave/browser/brave_wallet/brave_wallet_context_utils.h"
|
||||
@@ -27,13 +26,10 @@
|
||||
#include "brave/browser/ui/webui/settings/brave_appearance_handler.h"
|
||||
#include "brave/browser/ui/webui/settings/brave_default_extensions_handler.h"
|
||||
#include "brave/browser/ui/webui/settings/brave_privacy_handler.h"
|
||||
#include "brave/browser/ui/webui/settings/brave_settings_leo_assistant_handler.h"
|
||||
#include "brave/browser/ui/webui/settings/brave_sync_handler.h"
|
||||
#include "brave/browser/ui/webui/settings/brave_wallet_handler.h"
|
||||
#include "brave/browser/ui/webui/settings/default_brave_shields_handler.h"
|
||||
#include "brave/components/ai_chat/core/browser/customization_settings_handler.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_account/features.h"
|
||||
#include "brave/components/brave_origin/brave_origin_handler.h"
|
||||
#include "brave/components/brave_origin/brave_origin_utils.h"
|
||||
@@ -69,6 +65,14 @@
|
||||
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
|
||||
#include "net/base/features.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/browser/ai_chat/ai_chat_settings_helper.h"
|
||||
#include "brave/browser/ui/webui/settings/brave_settings_leo_assistant_handler.h"
|
||||
#include "brave/components/ai_chat/core/browser/customization_settings_handler.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_PIN_SHORTCUT)
|
||||
#include "brave/browser/ui/webui/settings/pin_shortcut_handler.h"
|
||||
#endif
|
||||
@@ -130,8 +134,10 @@ BraveSettingsUI::BraveSettingsUI(content::WebUI* web_ui) : SettingsUI(web_ui) {
|
||||
web_ui->AddMessageHandler(std::make_unique<BraveSyncHandler>());
|
||||
web_ui->AddMessageHandler(std::make_unique<BraveWalletHandler>());
|
||||
web_ui->AddMessageHandler(std::make_unique<BraveAdBlockHandler>());
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
web_ui->AddMessageHandler(
|
||||
std::make_unique<settings::BraveLeoAssistantHandler>());
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_TOR)
|
||||
web_ui->AddMessageHandler(std::make_unique<BraveTorHandler>());
|
||||
@@ -216,10 +222,12 @@ void BraveSettingsUI::AddResources(content::WebUIDataSource* html_source,
|
||||
base::FeatureList::IsEnabled(
|
||||
extensions_mv2::features::kExtensionsManifestV2));
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
html_source->AddBoolean("isLeoAssistantAllowed",
|
||||
ai_chat::IsAIChatEnabled(profile->GetPrefs()));
|
||||
html_source->AddBoolean("isLeoAssistantHistoryAllowed",
|
||||
ai_chat::features::IsAIChatHistoryEnabled());
|
||||
#endif
|
||||
|
||||
html_source->AddBoolean("isSurveyPanelistAllowed",
|
||||
base::FeatureList::IsEnabled(
|
||||
@@ -272,6 +280,7 @@ void BraveSettingsUI::BindInterface(
|
||||
->BindInterface(std::move(pending_receiver));
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void BraveSettingsUI::BindInterface(
|
||||
mojo::PendingReceiver<ai_chat::mojom::AIChatSettingsHelper>
|
||||
pending_receiver) {
|
||||
@@ -288,6 +297,7 @@ void BraveSettingsUI::BindInterface(
|
||||
web_ui()->GetWebContents()->GetBrowserContext()));
|
||||
mojo::MakeSelfOwnedReceiver(std::move(handler), std::move(pending_receiver));
|
||||
}
|
||||
#endif
|
||||
|
||||
void BraveSettingsUI::BindInterface(
|
||||
mojo::PendingReceiver<brave_account::mojom::BraveAccountSettingsHandler>
|
||||
|
||||
@@ -8,8 +8,7 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "brave/components/ai_chat/core/common/mojom/customization_settings.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/settings_helper.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_account/mojom/brave_account_settings_handler.mojom.h"
|
||||
#include "brave/components/brave_origin/common/mojom/brave_origin_settings.mojom.h"
|
||||
#include "brave/components/commands/common/commands.mojom.h"
|
||||
@@ -19,6 +18,11 @@
|
||||
#include "chrome/browser/ui/webui/settings/settings_ui.h"
|
||||
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/common/mojom/customization_settings.mojom.h"
|
||||
#include "brave/components/ai_chat/core/common/mojom/settings_helper.mojom.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_CONTAINERS)
|
||||
#include "brave/components/containers/core/mojom/containers.mojom.h"
|
||||
#endif
|
||||
@@ -56,11 +60,15 @@ class BraveSettingsUI : public settings::SettingsUI {
|
||||
|
||||
void BindInterface(
|
||||
mojo::PendingReceiver<commands::mojom::CommandsService> pending_receiver);
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
void BindInterface(mojo::PendingReceiver<ai_chat::mojom::AIChatSettingsHelper>
|
||||
pending_receiver);
|
||||
void BindInterface(
|
||||
mojo::PendingReceiver<ai_chat::mojom::CustomizationSettingsHandler>
|
||||
pending_receiver);
|
||||
#endif
|
||||
|
||||
void BindInterface(
|
||||
mojo::PendingReceiver<brave_account::mojom::BraveAccountSettingsHandler>
|
||||
pending_receiver);
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#include "brave/browser/ui/webui/brave_rewards_internals_ui.h"
|
||||
#include "brave/browser/ui/webui/skus_internals_ui.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_rewriter/common/buildflags/buildflags.h"
|
||||
#include "brave/components/constants/pref_names.h"
|
||||
#include "brave/components/constants/webui_url_constants.h"
|
||||
@@ -80,6 +79,7 @@
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_AI_CHAT_AGENT_PROFILE)
|
||||
#include "brave/browser/ui/webui/ai_chat/ai_chat_agent_new_tab_page_ui.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#endif
|
||||
|
||||
using content::WebUI;
|
||||
|
||||
@@ -9,8 +9,7 @@
|
||||
#include "base/check_op.h"
|
||||
#include "base/functional/bind.h"
|
||||
#include "base/values.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_shields/core/common/features.h"
|
||||
#include "brave/components/constants/pref_names.h"
|
||||
#include "brave/components/de_amp/common/features.h"
|
||||
@@ -26,6 +25,11 @@
|
||||
#include "content/public/browser/web_ui_data_source.h"
|
||||
#include "third_party/blink/public/common/peerconnection/webrtc_ip_handling_policy.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_REQUEST_OTR)
|
||||
#include "brave/components/request_otr/common/features.h"
|
||||
#endif
|
||||
@@ -127,10 +131,12 @@ void BravePrivacyHandler::AddLoadTimeData(content::WebUIDataSource* data_source,
|
||||
"isLocalhostAccessFeatureEnabled",
|
||||
base::FeatureList::IsEnabled(
|
||||
brave_shields::features::kBraveLocalhostAccessPermission));
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
data_source->AddBoolean(
|
||||
"isOpenAIChatFromBraveSearchEnabled",
|
||||
ai_chat::IsAIChatEnabled(profile->GetPrefs()) &&
|
||||
ai_chat::features::IsOpenAIChatFromBraveSearchEnabled());
|
||||
#endif
|
||||
auto* local_state = g_browser_process->local_state();
|
||||
data_source->AddBoolean(
|
||||
"isStatsReportingEnabledManaged",
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "brave/browser/shell_integrations/buildflags/buildflags.h"
|
||||
#include "brave/browser/ui/webui/brave_settings_ui.h"
|
||||
#include "brave/browser/ui/webui/settings/brave_privacy_handler.h"
|
||||
#include "brave/components/ai_chat/core/browser/model_validator.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_account/features.h"
|
||||
#include "brave/components/brave_news/common/pref_names.h"
|
||||
#include "brave/components/brave_rewards/core/pref_names.h"
|
||||
@@ -52,6 +52,10 @@
|
||||
#include "net/base/features.h"
|
||||
#include "ui/base/l10n/l10n_util.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/model_validator.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_TOR)
|
||||
#include "brave/browser/tor/tor_profile_service_factory.h"
|
||||
#endif
|
||||
@@ -92,6 +96,8 @@ constexpr char16_t kEnableNftDiscoveryLearnMoreUrl[] =
|
||||
constexpr char16_t kBlockAllCookiesLearnMoreUrl[] =
|
||||
u"https://github.com/brave/brave-browser/wiki/"
|
||||
u"Block-all-cookies-global-Shields-setting";
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
constexpr char16_t kLeoCustomModelsLearnMoreURL[] =
|
||||
u"https://support.brave.app/hc/en-us/articles/"
|
||||
u"34070140231821-How-do-I-use-the-Bring-Your-Own-Model-BYOM-with-Brave-Leo";
|
||||
@@ -105,6 +111,7 @@ constexpr char16_t kLeoMemoryLearnMoreURL[] =
|
||||
|
||||
constexpr char16_t kLeoPrivacyPolicyURL[] =
|
||||
u"https://brave.com/privacy/browser/#brave-leo";
|
||||
#endif
|
||||
|
||||
constexpr char16_t kAdBlockOnlyModeLearnMoreURL[] =
|
||||
u"https://support.brave.app/hc/en-us/articles/38076796692109";
|
||||
@@ -532,6 +539,7 @@ void BraveAddCommonStrings(content::WebUIDataSource* html_source,
|
||||
{"braveShowFullscreenReminder",
|
||||
IDS_SETTINGS_SHOW_FULLSCREEN_REMINDER_OPTION_LABEL},
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
// Leo Assistant Page
|
||||
{"leoAssistant", IDS_SETTINGS_LEO_ASSISTANT},
|
||||
{"braveLeoAssistantShowIconOnToolbarLabel",
|
||||
@@ -707,6 +715,7 @@ void BraveAddCommonStrings(content::WebUIDataSource* html_source,
|
||||
{"braveLeoAssistantClearSearch", IDS_SETTINGS_LEO_ASSISTANT_CLEAR_SEARCH},
|
||||
{"braveLeoAssistantSearchMemoriesPlaceholder",
|
||||
IDS_SETTINGS_LEO_ASSISTANT_SEARCH_MEMORIES_PLACEHOLDER},
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
// Survey Panelist Page
|
||||
{"surveyPanelist", IDS_SETTINGS_SURVEY_PANELIST},
|
||||
@@ -1016,12 +1025,14 @@ void BraveAddCommonStrings(content::WebUIDataSource* html_source,
|
||||
html_source->AddString("debounceLearnMoreURL", kDebounceLearnMoreUrl);
|
||||
html_source->AddString("enableNftDiscoveryLearnMoreURL",
|
||||
kEnableNftDiscoveryLearnMoreUrl);
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
html_source->AddString(
|
||||
"braveLeoAssistantModelSystemPromptPlaceholder",
|
||||
base::ReplaceStringPlaceholders(
|
||||
l10n_util::GetStringUTF8(
|
||||
IDS_AI_CHAT_DEFAULT_CUSTOM_MODEL_SYSTEM_PROMPT),
|
||||
{"%datetime%"}, nullptr));
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
auto confirmation_phrase =
|
||||
l10n_util::GetStringUTF16(IDS_SETTINGS_WALLET_RESET_CONFIRMATION_PHRASE);
|
||||
html_source->AddString("walletResetConfirmationPhrase", confirmation_phrase);
|
||||
@@ -1038,6 +1049,7 @@ void BraveAddCommonStrings(content::WebUIDataSource* html_source,
|
||||
l10n_util::GetStringFUTF16(
|
||||
IDS_SETTINGS_WALLET_RESET_ZCASH_SYNC_STATE_CONFIRMATION,
|
||||
confirmation_phrase));
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
html_source->AddString(
|
||||
"braveLeoAssistantInputDefaultContextSize",
|
||||
base::NumberToString16(ai_chat::kDefaultCustomModelContextSize));
|
||||
@@ -1049,6 +1061,7 @@ void BraveAddCommonStrings(content::WebUIDataSource* html_source,
|
||||
|
||||
html_source->AddString("braveLeoAssistantTabOrganizationLearnMoreURL",
|
||||
kTabOrganizationLearnMoreURL);
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
html_source->AddString("webDiscoveryLearnMoreURL", kWebDiscoveryLearnMoreUrl);
|
||||
@@ -1095,6 +1108,7 @@ void BraveAddCommonStrings(content::WebUIDataSource* html_source,
|
||||
l10n_util::GetStringFUTF16(IDS_SETTINGS_AD_BLOCK_ONLY_MODE_DESC,
|
||||
kAdBlockOnlyModeLearnMoreURL));
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
html_source->AddString(
|
||||
"braveLeoAssistantYourModelsDesc2",
|
||||
l10n_util::GetStringFUTF16(IDS_SETTINGS_LEO_ASSISTANT_YOUR_MODELS_DESC_2,
|
||||
@@ -1115,6 +1129,7 @@ void BraveAddCommonStrings(content::WebUIDataSource* html_source,
|
||||
"braveLeoAssistantYourMemoriesDesc",
|
||||
l10n_util::GetStringFUTF16(IDS_SETTINGS_LEO_ASSISTANT_YOUR_MEMORIES_DESC,
|
||||
kLeoMemoryLearnMoreURL));
|
||||
#endif
|
||||
|
||||
html_source->AddString("braveSurveyPanelistLearnMoreURL",
|
||||
kSurveyPanelistLearnMoreURL);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
import("//brave/components/ai_chat/core/common/buildflags/buildflags.gni")
|
||||
import("//brave/components/brave_vpn/common/buildflags/buildflags.gni")
|
||||
|
||||
source_set("customize_chrome") {
|
||||
@@ -15,8 +16,7 @@ source_set("customize_chrome") {
|
||||
deps = [
|
||||
"//base",
|
||||
"//brave/browser/brave_rewards:util",
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/brave_news/common",
|
||||
"//brave/components/brave_rewards/core",
|
||||
"//brave/components/brave_vpn/common/buildflags",
|
||||
@@ -33,6 +33,13 @@ source_set("customize_chrome") {
|
||||
"//content/public/browser",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
]
|
||||
}
|
||||
|
||||
if (enable_brave_vpn_panel) {
|
||||
deps += [
|
||||
"//brave/browser/brave_vpn",
|
||||
@@ -66,8 +73,7 @@ source_set("unit_tests") {
|
||||
":customize_chrome",
|
||||
"//base",
|
||||
"//brave/browser/brave_rewards:util",
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
"//brave/components/ai_chat/core/common/buildflags",
|
||||
"//brave/components/brave_news/common",
|
||||
"//brave/components/brave_rewards/core",
|
||||
"//brave/components/brave_vpn/common/buildflags",
|
||||
@@ -86,6 +92,13 @@ source_set("unit_tests") {
|
||||
"//ui/base",
|
||||
]
|
||||
|
||||
if (enable_ai_chat) {
|
||||
deps += [
|
||||
"//brave/components/ai_chat/core/browser",
|
||||
"//brave/components/ai_chat/core/common",
|
||||
]
|
||||
}
|
||||
|
||||
if (enable_brave_vpn_panel) {
|
||||
deps += [
|
||||
"//brave/browser/brave_vpn",
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define BRAVE_BROWSER_UI_WEBUI_SIDE_PANEL_CUSTOMIZE_CHROME_CUSTOMIZE_TOOLBAR_BRAVE_ACTION_H_
|
||||
|
||||
#include "base/containers/fixed_flat_map.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/brave_news/common/pref_names.h"
|
||||
#include "brave/components/brave_rewards/core/pref_names.h"
|
||||
@@ -62,6 +63,7 @@ inline constexpr BraveAction kShowWalletAction = {
|
||||
.pref_name = kShowWalletIconOnToolbar,
|
||||
.icon = kLeoProductBraveWalletIcon};
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
inline constexpr BraveAction kShowAIChatAction = {
|
||||
.id = side_panel::customize_chrome::mojom::ActionId::kShowAIChat,
|
||||
.display_name_resource_id = IDS_CUSTOMIZE_TOOLBAR_TOGGLE_AI_CHAT,
|
||||
@@ -69,6 +71,7 @@ inline constexpr BraveAction kShowAIChatAction = {
|
||||
.category = side_panel::customize_chrome::mojom::CategoryId::kNavigation,
|
||||
.pref_name = ai_chat::prefs::kBraveAIChatShowToolbarButton,
|
||||
.icon = kLeoProductBraveLeoIcon};
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
inline constexpr BraveAction kShowVPNAction = {
|
||||
@@ -104,7 +107,9 @@ inline constexpr auto kBraveActions =
|
||||
{kShowAddBookmarkButton.id, &kShowAddBookmarkButton},
|
||||
{kShowSidePanelAction.id, &kShowSidePanelAction},
|
||||
{kShowWalletAction.id, &kShowWalletAction},
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
{kShowAIChatAction.id, &kShowAIChatAction},
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
{kShowVPNAction.id, &kShowVPNAction},
|
||||
#endif // BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
|
||||
+7
-1
@@ -14,7 +14,7 @@
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "brave/browser/brave_rewards/rewards_util.h"
|
||||
#include "brave/browser/ui/webui/side_panel/customize_chrome/customize_toolbar/brave_action.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_wallet/common/common_utils.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
@@ -29,6 +29,10 @@
|
||||
#include "ui/display/screen.h"
|
||||
#include "ui/gfx/image/image_skia.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
#include "brave/browser/brave_vpn/vpn_utils.h"
|
||||
#endif // BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
@@ -179,9 +183,11 @@ std::vector<ActionPtr> ApplyBraveSpecificModifications(
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
if (ai_chat::IsAIChatEnabled(prefs)) {
|
||||
brave_actions.push_back(kShowAIChatAction);
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
if (brave_wallet::IsNativeWalletEnabled()) {
|
||||
brave_actions.push_back(kShowWalletAction);
|
||||
|
||||
+14
-2
@@ -10,8 +10,7 @@
|
||||
#include "base/containers/contains.h"
|
||||
#include "base/containers/fixed_flat_set.h"
|
||||
#include "brave/browser/brave_rewards/rewards_util.h"
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#include "brave/components/ai_chat/core/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_news/common/pref_names.h"
|
||||
#include "brave/components/brave_rewards/core/pref_names.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
@@ -34,6 +33,11 @@
|
||||
#include "ui/color/color_provider.h"
|
||||
#include "ui/gfx/image/image_skia.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#include "brave/components/ai_chat/core/browser/utils.h"
|
||||
#include "brave/components/ai_chat/core/common/pref_names.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
#include "brave/browser/brave_vpn/vpn_utils.h"
|
||||
#include "brave/components/brave_vpn/common/pref_names.h"
|
||||
@@ -264,6 +268,8 @@ TEST_F(ListActionModifiersUnitTest,
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
TEST_F(ListActionModifiersUnitTest,
|
||||
ApplyBraveSpecificModifications_AIChatShouldNotBeAddedWhenDisabled) {
|
||||
// AI Chat should be added by default(AI Chat enabled by default)
|
||||
@@ -289,6 +295,8 @@ TEST_F(ListActionModifiersUnitTest,
|
||||
EXPECT_EQ(ai_chat_action_it, modified_actions.end());
|
||||
}
|
||||
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
|
||||
TEST_F(ListActionModifiersUnitTest,
|
||||
ApplyBraveSpecificModifications_WalletShouldNotBeAddedWhenDisabled) {
|
||||
// Wallet should be added by default(Wallet enabled by default)
|
||||
@@ -347,7 +355,9 @@ TEST_F(ListActionModifiersUnitTest,
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
ASSERT_TRUE(brave_vpn::IsBraveVPNEnabled(web_contents_->GetBrowserContext()));
|
||||
#endif // BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
ASSERT_TRUE(ai_chat::IsAIChatEnabled(prefs()));
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
ASSERT_TRUE(brave_wallet::IsNativeWalletEnabled());
|
||||
ASSERT_TRUE(brave_rewards::IsSupportedForProfile(
|
||||
Profile::FromBrowserContext(web_contents_->GetBrowserContext())));
|
||||
@@ -362,7 +372,9 @@ TEST_F(ListActionModifiersUnitTest,
|
||||
EqId(ActionId::kForward), EqId(ActionId::kShowAddBookmarkButton),
|
||||
EqId(ActionId::kNewIncognitoWindow), EqId(ActionId::kShowSidePanel),
|
||||
EqId(ActionId::kTabSearch), EqId(ActionId::kShowWallet),
|
||||
#if BUILDFLAG(ENABLE_AI_CHAT)
|
||||
EqId(ActionId::kShowAIChat),
|
||||
#endif // BUILDFLAG(ENABLE_AI_CHAT)
|
||||
#if BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
EqId(ActionId::kShowVPN),
|
||||
#endif // BUILDFLAG(ENABLE_BRAVE_VPN)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user