mirror of https://github.com/electron/electron
66 lines
2.9 KiB
Diff
66 lines
2.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Attard <sattard@slack-corp.com>
|
|
Date: Tue, 25 Feb 2020 13:28:30 -0800
|
|
Subject: feat: add support for overriding the base spellchecker download URL
|
|
|
|
This patch is required as the testing-only method we were using does not
|
|
take into account the dictionary name and therefore will not work for
|
|
production use cases. This is unlikely to be upstreamed as the change
|
|
is entirely in //chrome.
|
|
|
|
diff --git a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
|
|
index ffe938282a33e18fc1fe854d9079e3a133a73ee7..d918dec133eeba5563c0ff186c496a797f6bc38c 100644
|
|
--- a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
|
|
+++ b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
|
|
@@ -14,6 +14,7 @@
|
|
#include "base/functional/bind.h"
|
|
#include "base/lazy_instance.h"
|
|
#include "base/location.h"
|
|
+#include "base/no_destructor.h"
|
|
#include "base/notreached.h"
|
|
#include "base/observer_list.h"
|
|
#include "base/path_service.h"
|
|
@@ -50,6 +51,8 @@ namespace {
|
|
base::LazyInstance<GURL>::Leaky g_download_url_for_testing =
|
|
LAZY_INSTANCE_INITIALIZER;
|
|
|
|
+base::NoDestructor<GURL> g_base_download_url_override;
|
|
+
|
|
// Close the file.
|
|
void CloseDictionary(base::File file) {
|
|
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
|
|
@@ -266,6 +269,10 @@ void SpellcheckHunspellDictionary::SetDownloadURLForTesting(const GURL url) {
|
|
g_download_url_for_testing.Get() = url;
|
|
}
|
|
|
|
+void SpellcheckHunspellDictionary::SetBaseDownloadURL(const GURL url) {
|
|
+ *g_base_download_url_override = url;
|
|
+}
|
|
+
|
|
GURL SpellcheckHunspellDictionary::GetDictionaryURL() {
|
|
if (g_download_url_for_testing.Get() != GURL())
|
|
return g_download_url_for_testing.Get();
|
|
@@ -273,6 +280,9 @@ GURL SpellcheckHunspellDictionary::GetDictionaryURL() {
|
|
std::string bdict_file = dictionary_file_.path.BaseName().MaybeAsASCII();
|
|
DCHECK(!bdict_file.empty());
|
|
|
|
+ if (*g_base_download_url_override != GURL())
|
|
+ return GURL(g_base_download_url_override->spec() + base::ToLowerASCII(bdict_file));
|
|
+
|
|
static const char kDownloadServerUrl[] =
|
|
"https://redirector.gvt1.com/edgedl/chrome/dict/";
|
|
|
|
diff --git a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.h b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.h
|
|
index def025dbffec3f44074604fcfb441b769886c3ab..459e8be9dcbf6d3ede156b57abcf9c9ede5587c7 100644
|
|
--- a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.h
|
|
+++ b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.h
|
|
@@ -96,6 +96,8 @@ class SpellcheckHunspellDictionary : public SpellcheckDictionary {
|
|
// Tests use this method to set a custom URL for downloading dictionaries.
|
|
static void SetDownloadURLForTesting(const GURL url);
|
|
|
|
+ static void SetBaseDownloadURL(const GURL url);
|
|
+
|
|
private:
|
|
// Dictionary download status.
|
|
enum DownloadStatus {
|