Skip to content

Commit

Permalink
Added private search engines settings option
Browse files Browse the repository at this point in the history
fix brave/brave-browser#23091

Search engines setting has separate option for configuring
search provider for private profile.
  • Loading branch information
simonhong committed Jun 15, 2022
1 parent 3598a86 commit dbed2c6
Show file tree
Hide file tree
Showing 39 changed files with 523 additions and 535 deletions.
6 changes: 6 additions & 0 deletions app/brave_settings_strings.grdp
Original file line number Diff line number Diff line change
Expand Up @@ -608,6 +608,12 @@
<message name="IDS_SETTINGS_BRAVE_OTHER_SEARCH_ENGINES_DESC" desc="The description for the settings switch controlling the addition of custom search engines">
Automatically indexes websites that follow the OpenSearch spec.
</message>
<message name="IDS_SETTINGS_NORMAL_PROFILE_SEARCH_EXPLANATION" desc="Explanation for the search engine dropdown setting.">
Normal Window - Search engine used in the address bar
</message>
<message name="IDS_SETTINGS_PRIVATE_PROFILE_SEARCH_EXPLANATION" desc="Explanation for the search engine dropdown setting.">
Private Window - Search engine used in the address bar
</message>

<!-- Settings / Extensions -->
<message name="IDS_SETTINGS_BRAVE_DEFAULT_EXTENSIONS_TITLE" desc="The title for Brave default extensions in settings">
Expand Down
4 changes: 4 additions & 0 deletions browser/brave_profile_prefs.cc
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@
#endif

#if !BUILDFLAG(IS_ANDROID)
#include "brave/browser/search_engines/search_engine_provider_util.h"
#include "brave/browser/ui/startup/default_brave_browser_prompt.h"
#endif

Expand Down Expand Up @@ -156,6 +157,9 @@ void RegisterProfilePrefsForMigration(
dark_mode::RegisterBraveDarkModePrefsForMigration(registry);
#if !BUILDFLAG(IS_ANDROID)
new_tab_page::RegisterNewTabPagePrefsForMigration(registry);

// Added 06/2022
brave::RegisterSearchEngineProviderPrefsForMigration(registry);
#endif

brave_wallet::RegisterProfilePrefsForMigration(registry);
Expand Down
2 changes: 2 additions & 0 deletions browser/extensions/api/settings_private/brave_prefs_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ const PrefsUtil::TypedPrefMap& BravePrefsUtil::GetAllowlistedKeys() {
// Search engine prefs
(*s_brave_allowlist)[prefs::kAddOpenSearchEngines] =
settings_api::PrefType::PREF_TYPE_BOOLEAN;
(*s_brave_allowlist)[prefs::kSyncedDefaultPrivateSearchProviderGUID] =
settings_api::PrefType::PREF_TYPE_NUMBER;

// appearance prefs
(*s_brave_allowlist)[kShowBookmarksButton] =
Expand Down
18 changes: 18 additions & 0 deletions browser/profile_resetter/brave_profile_resetter.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/* Copyright (c) 2022 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */

#include "brave/browser/profile_resetter/brave_profile_resetter.h"

#include "brave/browser/search_engines/search_engine_provider_util.h"

BraveProfileResetter::~BraveProfileResetter() = default;

void BraveProfileResetter::ResetDefaultSearchEngine() {
ProfileResetter::ResetDefaultSearchEngine();

// Reset brave default provider prefs.
brave::ClearDefaultPrivateSearchProvider(profile_);
brave::SetDefaultPrivateSearchProvider(profile_);
}
23 changes: 23 additions & 0 deletions browser/profile_resetter/brave_profile_resetter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/* Copyright (c) 2022 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */

#ifndef BRAVE_BROWSER_PROFILE_RESETTER_BRAVE_PROFILE_RESETTER_H_
#define BRAVE_BROWSER_PROFILE_RESETTER_BRAVE_PROFILE_RESETTER_H_

#include "chrome/browser/profile_resetter/profile_resetter.h"

// Reset brave specific prefs.
class BraveProfileResetter : public ProfileResetter {
public:
using ProfileResetter::ProfileResetter;
BraveProfileResetter(const BraveProfileResetter&) = delete;
BraveProfileResetter& operator=(const BraveProfileResetter&) = delete;
~BraveProfileResetter() override;

// ProfileResetter overrides:
void ResetDefaultSearchEngine() override;
};

#endif // BRAVE_BROWSER_PROFILE_RESETTER_BRAVE_PROFILE_RESETTER_H_
6 changes: 6 additions & 0 deletions browser/profiles/brave_profile_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@
#include "content/public/browser/url_data_source.h"
#include "ui/base/l10n/l10n_util.h"

#if !BUILDFLAG(IS_ANDROID)
#include "brave/browser/search_engines/search_engine_provider_util.h"
#endif

#if !BUILDFLAG(USE_GCM_FROM_PLATFORM)
#include "brave/browser/gcm_driver/brave_gcm_channel_status.h"
#endif
Expand Down Expand Up @@ -105,6 +109,8 @@ void BraveProfileManager::InitProfileUserPrefs(Profile* profile) {
auto enabled = pref_service->GetBoolean(kEnableMediaRouterOnRestart);
pref_service->SetBoolean(::prefs::kEnableMediaRouter, enabled);
}

brave::SetDefaultPrivateSearchProvider(profile);
#endif

ProfileManager::InitProfileUserPrefs(profile);
Expand Down
4 changes: 3 additions & 1 deletion browser/resources/settings/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ preprocess_if_expr("preprocess_generated") {
"enable_tor=$enable_tor",
"enable_brave_wayback_machine=$enable_brave_wayback_machine",
"enable_brave_vpn=$enable_brave_vpn",
"enable_extensions=$enable_extensions",
]
in_folder = target_gen_dir
out_folder =
Expand Down Expand Up @@ -154,7 +155,8 @@ preprocess_if_expr("preprocess_generated") {
"brave_privacy_page/brave_privacy_page_browser_proxy.m.js",
"brave_rewards_page/brave_rewards_browser_proxy.m.js",
"brave_rewards_page/brave_rewards_page.js",
"brave_search_engines_page/brave_search_engines_page.m.js",
"brave_search_engines_page/brave_search_engines_page.js",
"brave_search_engines_page/brave_search_engines_page_browser_proxy.m.js",
"brave_sync_page/brave_sync_code_dialog.js",
"brave_sync_page/brave_sync_configure.js",
"brave_sync_page/brave_sync_page.js",
Expand Down
2 changes: 1 addition & 1 deletion browser/resources/settings/brave_overrides/basic_page.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import '../brave_help_tips_page/brave_help_tips_page.m.js'
import '../brave_ipfs_page/brave_ipfs_page.js'
import '../brave_new_tab_page/brave_new_tab_page.m.js'
import '../brave_rewards_page/brave_rewards_page.js'
import '../brave_search_engines_page/brave_search_engines_page.m.js'
import '../brave_search_engines_page/brave_search_engines_page.js'
import '../brave_sync_page/brave_sync_page.js'
import '../brave_wallet_page/brave_wallet_page.js'
import '../default_brave_shields_page/default_brave_shields_page.js'
Expand Down
17 changes: 1 addition & 16 deletions browser/resources/settings/brave_overrides/search_page.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,16 @@
// 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 {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'
import {RegisterPolymerTemplateModifications} from 'chrome://brave-resources/polymer_overriding.js'

import '../brave_search_engines_page/brave_search_engines_page.m.js'
import '../brave_search_engines_page/brave_search_engines_page.js'

RegisterPolymerTemplateModifications({
'settings-search-page': (templateContent) => {
const enginesSubpageTrigger = templateContent.getElementById('enginesSubpageTrigger')
if (!enginesSubpageTrigger) {
console.error(`[Brave Settings Overrides] Couldn't find enginesSubpageTrigger`)
} else {
// For some reason with the conditional, ts_library processes this toggle
// out from HTML if we put it into brave_search_engines_page.html, so
// instead adding it this way.
<if expr="enable_extensions">
enginesSubpageTrigger.insertAdjacentHTML('beforebegin', `
<settings-toggle-button id="webDiscoveryEnabled"
class="cr-row"
pref="{{prefs.brave.web_discovery_enabled}}"
label="${I18nBehavior.i18n('braveWebDiscoveryLabel')}"
sub-label="${I18nBehavior.i18n('braveWebDiscoverySubLabel')}"
learn-more-url="${I18nBehavior.i18n('webDiscoveryLearnMoreURL')}"
</settings-toggle-button>
`)
</if>
enginesSubpageTrigger.insertAdjacentHTML('beforebegin', `
<settings-brave-search-page prefs="{{prefs}}"></settings-brave-search-page>
`)
Expand Down
21 changes: 12 additions & 9 deletions browser/resources/settings/brave_search_engines_page/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,22 @@
# 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("//tools/polymer/polymer.gni")
import("//tools/polymer/html_to_js.gni")
import("//ui/webui/resources/tools/js_modulizer.gni")
import("../settings.gni")

# ES Module conversion from HTML Imports code

group("web_modules") {
public_deps = [ ":brave_search_engines_page_module" ]
public_deps = [
":modules",
":templatize",
]
}

polymer_modulizer("brave_search_engines_page") {
js_file = "brave_search_engines_page.js"
html_file = "brave_search_engines_page.html"
html_type = "dom-module"
auto_imports = settings_auto_imports
js_modulizer("modules") {
input_files = [ "brave_search_engines_page_browser_proxy.js" ]
namespace_rewrites = settings_namespace_rewrites
}

html_to_js("templatize") {
js_files = [ "brave_search_engines_page.js" ]
}
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
<link rel="import" href="chrome://resources/html/polymer.html">

<link rel="import" href="chrome://resources/html/i18n_behavior.html">
<script type="module" src="../settings_shared_css.js"></script>
<script type="module" src="../settings_vars_css.js"></script>

<dom-module id="settings-brave-search-page">
<template>
<style include="settings-shared iron-flex">
.settings-box {
display: flex;
justify-content: space-between;
}
</style>
<settings-toggle-button id="otherSearchEnginesEnabled"
class="cr-row"
pref="{{prefs.brave.other_search_engines_enabled}}"
label="$i18n{otherSearchEnginesControlLabel}"
sub-label="$i18n{otherSearchEnginesControlDesc}">
</settings-toggle-button>
</template>
<script src="brave_search_engines_page.js"></script>
</dom-module>
<style include="settings-shared iron-flex"></style>
<template is="dom-if" if="[[shouldShowPrivateSearchProvider_]]">
<div class="settings-box">
<div class="label flex">$i18n{privateSearchExplanation}</div>
<settings-dropdown-menu
pref="{{prefs.brave.default_private_search_provider_guid}}"
menu-options="[[privateSearchEngines_]]">
</settings-dropdown-menu>
</div>
</template>
<if expr="enable_extensions">
<settings-toggle-button id="webDiscoveryEnabled"
class="cr-row"
pref="{{prefs.brave.web_discovery_enabled}}"
label="$i18n{braveWebDiscoveryLabel}"
sub-label="$i18n{braveWebDiscoverySubLabel}"
learn-more-url="$i18n{webDiscoveryLearnMoreURL}">
</settings-toggle-button>
</if>
<settings-toggle-button id="otherSearchEnginesEnabled"
class="cr-row"
pref="{{prefs.brave.other_search_engines_enabled}}"
label="$i18n{otherSearchEnginesControlLabel}"
sub-label="$i18n{otherSearchEnginesControlDesc}">
</settings-toggle-button>
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,52 @@
* 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/. */

(function() {
'use strict';

/**
* 'settings-brave-search-page' is the settings page containing
* brave's search engine features.
*/
Polymer({
is: 'settings-brave-search-page'
});
})();
import '../settings_shared_css.js';
import '../settings_vars_css.js';

import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {WebUIListenerMixin} from 'chrome://resources/js/web_ui_listener_mixin.js';
import {loadTimeData} from "../i18n_setup.js"
import {BraveSearchEnginesPageBrowserProxyImpl} from './brave_search_engines_page_browser_proxy.m.js';

const BraveSearchEnginesPageBase = WebUIListenerMixin(PolymerElement)

class BraveSearchEnginesPage extends BraveSearchEnginesPageBase {
static get is() {
return 'settings-brave-search-page'
}

static get template() {
return html`{__html_template__}`
}

static get properties() {
return {
shouldShowPrivateSearchProvider_: {
readOnly: true,
type: Boolean,
value: !loadTimeData.getBoolean('isGuest')
},

privateSearchEngines_: {
readOnly: false,
type: Array
}
}
}

browserProxy_ = BraveSearchEnginesPageBrowserProxyImpl.getInstance()

ready() {
super.ready()

const updatePrivateSearchEngines = list => {
this.set('privateSearchEngines_', list)
}

this.browserProxy_.getPrivateSearchEnginesList().then(updatePrivateSearchEngines)
this.addWebUIListener('private-search-engines-changed', updatePrivateSearchEngines)
}
}

customElements.define(BraveSearchEnginesPage.is, BraveSearchEnginesPage);
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<link rel="href" src="chrome://resources/html/cr.html">
<script src="brave_search_engines_page_browser_proxy.js"></script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright (c) 2022 The Brave Authors. All rights reserved.
// This Source Code Form is subject to the terms of the Mozilla Public
// 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 {addSingletonGetter, sendWithPromise} from 'chrome://resources/js/cr.m.js';

/** @interface */
export class BraveSearchEnginesPageBrowserProxy {
/**
* @return {!Promise<Array>}
*/
getPrivateSearchEnginesList() {}
}

/**
* @implements {settings.BraveSearchEnginesPageBrowserProxy}
*/
export class BraveSearchEnginesPageBrowserProxyImpl {
/** @override */
getPrivateSearchEnginesList() {
return sendWithPromise('getPrivateSearchEnginesList');
}
}

addSingletonGetter(BraveSearchEnginesPageBrowserProxyImpl)
1 change: 1 addition & 0 deletions browser/resources/settings/settings.gni
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ settings_namespace_rewrites = [
"settings.BraveNewTabBrowserProxyImpl|BraveNewTabBrowserProxyImpl",
"settings.BravePrivacyBrowserProxyImpl|BravePrivacyBrowserProxyImpl",
"settings.BraveRewardsBrowserProxyImpl|BraveRewardsBrowserProxyImpl",
"settings.BraveSearchEnginesPageBrowserProxyImpl|BraveSearchEnginesPageBrowserProxyImpl",
"settings.BraveSyncBrowserProxy|BraveSyncBrowserProxy",
"settings.DefaultBraveShieldsBrowserProxyImpl|DefaultBraveShieldsBrowserProxyImpl",
"settings.SocialBlockingPageProxyImpl|SocialBlockingPageProxyImpl",
Expand Down
3 changes: 2 additions & 1 deletion browser/resources/settings/sources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ brave_deps_chrome_browser_resources_settings_in_files = [
"brave_rewards_page/brave_rewards_browser_proxy.m.js",
"brave_rewards_page/brave_rewards_page.js",
"brave_routes.js",
"brave_search_engines_page/brave_search_engines_page.m.js",
"brave_search_engines_page/brave_search_engines_page.js",
"brave_search_engines_page/brave_search_engines_page_browser_proxy.m.js",
"brave_sync_page/brave_sync_browser_proxy.js",
"brave_sync_page/brave_sync_code_dialog.js",
"brave_sync_page/brave_sync_configure.js",
Expand Down
Loading

0 comments on commit dbed2c6

Please sign in to comment.