diff --git a/.npmrc b/.npmrc index 95bd5da9108..ba2a102998a 100644 --- a/.npmrc +++ b/.npmrc @@ -1,7 +1,7 @@ runtime = electron target_arch = x64 -brave_electron_version = 8.0.9 +brave_electron_version = 8.0.10 chromedriver_version = 2.38 -target = v8.0.9 +target = v8.0.10 disturl=https://brave-laptop-binaries.s3.amazonaws.com/atom-shell/dist/ build_from_source = true diff --git a/app/browser/reducers/aboutNewTabReducer.js b/app/browser/reducers/aboutNewTabReducer.js index fa5fa549881..0981b109c09 100644 --- a/app/browser/reducers/aboutNewTabReducer.js +++ b/app/browser/reducers/aboutNewTabReducer.js @@ -13,11 +13,17 @@ const { calculateTopSites } = require('../api/topSites') const aboutNewTabReducer = (state, action) => { switch (action.actionType) { case appConstants.APP_SET_STATE: + // only show private search engine override options if needed + // (ex: not shown if a region specific default is provided) const useAlternativePrivateSearchEngine = getSetting(settings.USE_ALTERNATIVE_PRIVATE_SEARCH_ENGINE, state.get('settings')) - state = aboutNewTabState.mergeDetails(state, { - newTabPageDetail: { + let newTabPageDetail = {} + if (getSetting(settings.SHOW_ALTERNATIVE_PRIVATE_SEARCH_ENGINE, state.get('settings'))) { + newTabPageDetail = { useAlternativePrivateSearchEngine } + } + state = aboutNewTabState.mergeDetails(state, { + newTabPageDetail: newTabPageDetail }) break case appConstants.APP_TOP_SITE_DATA_AVAILABLE: @@ -30,11 +36,25 @@ const aboutNewTabReducer = (state, action) => { } break case appConstants.APP_CHANGE_SETTING: - if (action.key === settings.USE_ALTERNATIVE_PRIVATE_SEARCH_ENGINE) { - state = aboutNewTabState.mergeDetails(state, { - newTabPageDetail: { - useAlternativePrivateSearchEngine: action.value + if (action.key === settings.USE_ALTERNATIVE_PRIVATE_SEARCH_ENGINE || + action.key === settings.SHOW_ALTERNATIVE_PRIVATE_SEARCH_ENGINE) { + const showAlternativePrivateSearchEngines = action.key === settings.SHOW_ALTERNATIVE_PRIVATE_SEARCH_ENGINE + ? action.value + : getSetting(settings.SHOW_ALTERNATIVE_PRIVATE_SEARCH_ENGINE, state.get('settings')) + + const useAlternativePrivateSearchEngine = action.key === settings.USE_ALTERNATIVE_PRIVATE_SEARCH_ENGINE + ? action.value + : getSetting(settings.USE_ALTERNATIVE_PRIVATE_SEARCH_ENGINE, state.get('settings')) + + let newTabPageDetail = {} + if (showAlternativePrivateSearchEngines) { + newTabPageDetail = { + useAlternativePrivateSearchEngine } + } + + state = aboutNewTabState.mergeDetails(state, { + newTabPageDetail: newTabPageDetail }) } } diff --git a/app/renderer/reducers/urlBarReducer.js b/app/renderer/reducers/urlBarReducer.js index 4017b88b613..2382983685d 100644 --- a/app/renderer/reducers/urlBarReducer.js +++ b/app/renderer/reducers/urlBarReducer.js @@ -43,7 +43,11 @@ const updateSearchEngineInfoFromInput = (state, frameProps) => { if (frameProps.get('isPrivate')) { // handle private tab search with default search provider const useAlternateDefaultPrivateSearchProvider = - getSetting(isTor(frameProps) ? settings.USE_ALTERNATIVE_PRIVATE_SEARCH_ENGINE_TOR : settings.USE_ALTERNATIVE_PRIVATE_SEARCH_ENGINE) + getSetting(settings.SHOW_ALTERNATIVE_PRIVATE_SEARCH_ENGINE) + ? getSetting(isTor(frameProps) + ? settings.USE_ALTERNATIVE_PRIVATE_SEARCH_ENGINE_TOR + : settings.USE_ALTERNATIVE_PRIVATE_SEARCH_ENGINE) + : false if (useAlternateDefaultPrivateSearchProvider === true) { // DuckDuckGo hard-coded as Private Tab default provider // if asked to use a privacy-centric 'alternative' diff --git a/app/sessionStore.js b/app/sessionStore.js index 83fd5695b4b..0ced30fa2a3 100644 --- a/app/sessionStore.js +++ b/app/sessionStore.js @@ -1016,15 +1016,40 @@ module.exports.runImportDefaultSettings = (data) => { return data } -module.exports.setDefaultSearchEngine = (immutableData) => { - const defaultLocale = locale.getDefaultLocale(true) - let defaultSearchEngine = config.defaultSearchEngineByLocale.default +const getCanonicalCountryName = () => { + const countryName = (app.getCountryName() || '').replace(/\0/g, '') + switch (countryName) { + case 'US': + case 'Vereinigte Staaten': + case 'en_US.UTF-8': + case 'es_US.UTF-8': + return 'USA' + + case 'France': + case 'Frankreich': + case 'FR': + case 'fr_FR.UTF-8': + return 'France' + + case 'Germany': + case 'Deutschland': + case 'Allemagne': + case 'DE': + case 'de_DE.UTF-8': + return 'Germany' + } + return countryName +} - for (let entry in config.defaultSearchEngineByLocale) { - if (entry === defaultLocale) { - defaultSearchEngine = config.defaultSearchEngineByLocale[entry] - break - } +module.exports.setDefaultSearchEngine = (immutableData) => { + let defaultSearchEngine = config.defaultSearchEngineByCountry.default + const countryName = getCanonicalCountryName() + const countrySpecificEntry = countryName && config.defaultSearchEngineByCountry[countryName] + + if (countrySpecificEntry) { + defaultSearchEngine = countrySpecificEntry + // don't promote private tab engine override if region specific default search engine is set + immutableData = immutableData.setIn(['settings', settings.SHOW_ALTERNATIVE_PRIVATE_SEARCH_ENGINE], false) } return defaultSearchEngine @@ -1098,13 +1123,13 @@ module.exports.loadAppState = () => { locale.init(immutableData.getIn(['settings', settings.LANGUAGE])).then((lang) => { immutableData = setVersionInformation(immutableData) - app.setLocale(lang) // Set default search engine for locale (if not already set) if (immutableData.getIn(['settings', settings.DEFAULT_SEARCH_ENGINE]) == null) { immutableData = module.exports.setDefaultSearchEngine(immutableData) } + app.setLocale(lang) resolve(immutableData) }) }) diff --git a/js/about/newprivatetab.js b/js/about/newprivatetab.js index 8ef505c5f31..21ed2b021c8 100644 --- a/js/about/newprivatetab.js +++ b/js/about/newprivatetab.js @@ -82,6 +82,7 @@ class NewPrivateTab extends React.Component { } { isTor && + this.props.newTabData.hasIn(useAlternativePrivateSearchEngineDataKeys) &&
diff --git a/js/about/preferences.js b/js/about/preferences.js
index 2cde5a14653..227fd1fe6ef 100644
--- a/js/about/preferences.js
+++ b/js/about/preferences.js
@@ -277,6 +277,9 @@ class SearchTab extends ImmutableComponent {
}
hoverCallback (rows) {
+ if (!getSetting(settings.SHOW_ALTERNATIVE_PRIVATE_SEARCH_ENGINE, this.props.settings)) {
+ this.props.onChangeSetting(settings.SHOW_ALTERNATIVE_PRIVATE_SEARCH_ENGINE, true)
+ }
this.props.onChangeSetting(settings.DEFAULT_SEARCH_ENGINE, rows[1].value)
}
@@ -289,11 +292,15 @@ class SearchTab extends ImmutableComponent {
onClick={this.hoverCallback.bind(this)}
tableClassNames={css(styles.sortableTable_searchTab)}
/>
-