Skip to content

Commit

Permalink
Change translate-security-origin
Browse files Browse the repository at this point in the history
  • Loading branch information
atuchin-m committed Oct 11, 2021
1 parent f180f05 commit 16c79cd
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 22 deletions.
2 changes: 1 addition & 1 deletion app/brave_main_delegate.cc
Expand Up @@ -225,7 +225,7 @@ bool BraveMainDelegate::BasicStartupComplete(int* exit_code) {
features::kWinrtGeolocationImplementation.name,
#endif
security_state::features::kSafetyTipUI.name,
};
};

// Disabled features.
std::unordered_set<const char*> disabled_features = {
Expand Down
20 changes: 20 additions & 0 deletions browser/brave_browser_main_parts.cc
Expand Up @@ -15,9 +15,11 @@
#include "brave/components/brave_sync/features.h"
#include "brave/components/speedreader/buildflags.h"
#include "brave/components/tor/buildflags/buildflags.h"
#include "brave/components/translate/core/browser/brave_translate_features.h"
#include "chrome/common/chrome_features.h"
#include "components/prefs/pref_service.h"
#include "components/sync/driver/sync_driver_switches.h"
#include "components/translate/core/common/translate_switches.h"
#include "content/public/browser/render_frame_host.h"
#include "extensions/buildflags/buildflags.h"
#include "media/base/media_switches.h"
Expand Down Expand Up @@ -64,6 +66,12 @@
#include "extensions/browser/extension_system.h"
#endif

namespace {
const char kBraveTranslateOriginURL[] = "https://translate-relay.brave.com";
const char kBraveTranslateScriptURL[] =
"https://translate-relay.brave.com/translate_a/element.js";
} // namespace

void BraveBrowserMainParts::PreBrowserStart() {
#if BUILDFLAG(ENABLE_SPEEDREADER)
// Register() must be called after the SerializedNavigationDriver is
Expand Down Expand Up @@ -164,6 +172,18 @@ void BraveBrowserMainParts::PreProfileInit() {
command_line->RemoveSwitch(switches::kDisableSync);
}
#endif

// If enable then redirect the most of translate requests to the Brave
// endpoints. The rest will be redirected in
// OnBeforeURLRequest_TranslateRedirectWork().
if (translate::ShouldUseTranslateSwitches()) {
command_line->AppendSwitchASCII(
translate::switches::kTranslateSecurityOrigin,
kBraveTranslateOriginURL);
command_line->AppendSwitchASCII(
translate::switches::kTranslateScriptURL,
kBraveTranslateScriptURL);
}
}

void BraveBrowserMainParts::PostProfileInit() {
Expand Down
4 changes: 1 addition & 3 deletions browser/net/brave_static_redirect_network_delegate_helper.cc
Expand Up @@ -187,12 +187,10 @@ int OnBeforeURLRequest_StaticRedirectWorkForGURL(

if (translate_language_pattern.MatchesURL(request_url)) {
*new_url = GURL(kBraveTranslateLanguageEndpoint);
return translate::IsBraveTranslateGoAvailable() ? net::OK
: net::ERR_ABORTED;
return translate::ShouldUpdateTranslateList() ? net::OK : net::ERR_ABORTED;
}

return net::OK;
}


} // namespace brave
21 changes: 18 additions & 3 deletions browser/net/brave_translate_redirect_network_delegate_helper.cc
Expand Up @@ -67,9 +67,24 @@ int OnBeforeURLRequest_TranslateRedirectWork(
std::shared_ptr<BraveRequestInfo> ctx) {
GURL::Replacements replacements;

// TODO(atuchin): temporary hack to not break translate extension.
// |initiator_url| is not more related to script url.
if (ctx->initiator_url.scheme_piece() != "https") {
if (translate::DisableTranslateLibraryNetworkRedirects())
return net::OK;

// Skip extensions/service-worker/etc requests.
if (!ctx->initiator_url.SchemeIsHTTPOrHTTPS())
return net::OK;

const static std::string kTranslateInitiatorHost(
GURL(kTranslateInitiatorURL).host());
const static std::string kTranslateGen204PatternHost(
GURL(kTranslateGen204Pattern).host());
const static std::string kTranslateBrandingPngHost(
GURL(kTranslateBrandingPNGPattern).host());

// Fast way to exclude any unrelated requests.
if (ctx->request_url.host_piece() != kTranslateInitiatorHost ||
ctx->request_url.host_piece() != kTranslateGen204PatternHost ||
ctx->request_url.host_piece() != kTranslateBrandingPngHost) {
return net::OK;
}

Expand Down
19 changes: 7 additions & 12 deletions browser/ui/views/frame/brave_browser_view.cc
Expand Up @@ -270,22 +270,17 @@ ShowTranslateBubbleResult BraveBrowserView::ShowTranslateBubble(
const std::string& target_language,
translate::TranslateErrors::Type error_type,
bool is_user_gesture) {
#if BUILDFLAG(ENABLE_BRAVE_TRANSLATE_EXTENSION)
if (!translate::TranslateExtensionIsEnabled(GetProfile()) &&
translate::ShouldOfferExtensionInstation(GetProfile())) {
return BrowserView::ShowTranslateBubble(web_contents, step, source_language,
target_language, error_type,
is_user_gesture);
}
#endif // BUILDFLAG(ENABLE_BRAVE_TRANSLATE_EXTENSION)

#if BUILDFLAG(ENABLE_BRAVE_TRANSLATE_GO)
if (translate::InternalTranslationIsEnabled(GetProfile())) {
#if BUILDFLAG(ENABLE_BRAVE_TRANSLATE_EXTENSION) || \
BUILDFLAG(ENABLE_BRAVE_TRANSLATE_GO)
if ((!translate::TranslateExtensionIsEnabled(GetProfile()) &&
translate::ShouldOfferExtensionInstation(GetProfile())) ||
translate::InternalTranslationIsEnabled(GetProfile())) {
return BrowserView::ShowTranslateBubble(web_contents, step, source_language,
target_language, error_type,
is_user_gesture);
}
#endif // BUILDFLAG(ENABLE_BRAVE_TRANSLATE_GO)
#endif // BUILDFLAG(ENABLE_BRAVE_TRANSLATE_EXTENSION) ||
// BUILDFLAG(ENABLE_BRAVE_TRANSLATE_GO)
return ShowTranslateBubbleResult::BROWSER_WINDOW_NOT_VALID;
}

Expand Down
27 changes: 24 additions & 3 deletions components/translate/core/browser/brave_translate_features.cc
Expand Up @@ -10,9 +10,16 @@
namespace translate {

namespace features {
const base::Feature kUseBraveTranslateGo {
"UseBraveTranslateGo", base::FeatureState::FEATURE_DISABLED_BY_DEFAULT
};
const base::Feature kUseBraveTranslateGo{
"UseBraveTranslateGo", base::FeatureState::FEATURE_DISABLED_BY_DEFAULT};

const base::FeatureParam<bool> kUpdateLanguageListParam{
&kUseBraveTranslateGo, "update-languages", false};
const base::FeatureParam<bool> kUseTranslateParam{&kUseBraveTranslateGo,
"use-switches", true};
const base::FeatureParam<bool> kDisableTranslateLibraryNetworkRedirectsParam{
&kUseBraveTranslateGo, "disable-library-redirects", true};

} // namespace features

bool IsBraveTranslateGoAvailable() {
Expand All @@ -31,4 +38,18 @@ bool IsTranslateExtensionAvailable() {
#endif // BUILDFLAG(ENABLE_BRAVE_TRANSLATE_EXTENSION)
}

bool ShouldUseTranslateSwitches() {
return IsBraveTranslateGoAvailable() && features::kUseTranslateParam.Get();
}

bool ShouldUpdateTranslateList() {
return IsBraveTranslateGoAvailable() &&
features::kUpdateLanguageListParam.Get();
}

bool DisableTranslateLibraryNetworkRedirects() {
return !IsBraveTranslateGoAvailable() ||
features::kDisableTranslateLibraryNetworkRedirectsParam.Get();
}

} // namespace translate
13 changes: 13 additions & 0 deletions components/translate/core/browser/brave_translate_features.h
Expand Up @@ -7,16 +7,29 @@
#define BRAVE_COMPONENTS_TRANSLATE_CORE_BROWSER_BRAVE_TRANSLATE_FEATURES_H_

#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"

namespace translate {
namespace features {
extern const base::Feature kUseBraveTranslateGo;

extern const base::FeatureParam<bool> kUpdateLanguageListParam;
extern const base::FeatureParam<bool> kReplaceSecurityOriginParam;
extern const base::FeatureParam<bool>
kDisableTranslateLibraryNetworkRedirectsParam;

} // namespace features

bool IsBraveTranslateGoAvailable();

bool IsTranslateExtensionAvailable();

bool ShouldUseTranslateSwitches();

bool ShouldUpdateTranslateList();

bool DisableTranslateLibraryNetworkRedirects();

} // namespace translate

#endif // BRAVE_COMPONENTS_TRANSLATE_CORE_BROWSER_BRAVE_TRANSLATE_FEATURES_H_

0 comments on commit 16c79cd

Please sign in to comment.