Revert "Revert "Allow all extensions, warn for unvetted, 1 component updater only now""

This reverts commit 61f822d203.
This commit is contained in:
Brian R. Bondy
2018-09-05 13:58:06 -04:00
parent 5ba5ce7b3c
commit d07cb3eb32
27 changed files with 369 additions and 81 deletions
+4
View File
@@ -138,6 +138,10 @@ By installing this extension, you are agreeing to the Google Widevine Terms of U
<message name="IDS_BLOCKED_AUTOPLAY_NO_ACTION" desc="Radio button choice to continue blocking a site from autoplay media, displayed in bubble when a page tries to autoplay media.">
Continue blocking autoplay
</message>
<!-- Extensions -->
<message name="IDS_UNVETTED_EXTENSION_INSTALL_PROMPT_TITLE" desc="Titlebar of the extension or app installation prompt which was not vetted by Brave. Asks the user if they want to install a particular extension or app.">
NOT A RECOMMENDED BRAVE EXTENSION! Add "<ph name="EXTENSION_NAME">$1<ex>Gmail Checker</ex></ph>"?
</message>
<!-- Appearance -->
<message name="IDS_SETTINGS_APPEARANCE_SETTINGS_BRAVE_THEMES" desc="The label for brave theme change setting options">
Brave colors
+3 -1
View File
@@ -21,6 +21,7 @@
#include "chrome/common/chrome_paths_internal.h"
#include "chrome/common/chrome_switches.h"
#include "components/password_manager/core/common/password_manager_features.h"
#include "extensions/common/extension_features.h"
#include "ui/base/ui_base_features.h"
#if !defined(CHROME_MULTIPLE_DLL_BROWSER)
@@ -119,7 +120,8 @@ bool BraveMainDelegate::BasicStartupComplete(int* exit_code) {
std::stringstream enabled_features;
enabled_features << features::kEnableEmojiContextMenu.name
<< "," << features::kDesktopPWAWindowing.name
<< "," << password_manager::features::kFillOnAccountSelect.name;
<< "," << password_manager::features::kFillOnAccountSelect.name
<< "," << extensions::features::kNewExtensionUpdaterService.name;
command_line.AppendSwitchASCII(switches::kEnableFeatures,
enabled_features.str());
return ChromeMainDelegate::BasicStartupComplete(exit_code);
+6 -18
View File
@@ -43,11 +43,9 @@ BraveBrowserProcessImpl::BraveBrowserProcessImpl()
}
component_updater::ComponentUpdateService*
BraveBrowserProcessImpl::component_updater(
std::unique_ptr<component_updater::ComponentUpdateService> &component_updater,
bool use_brave_server) {
if (component_updater)
return component_updater.get();
BraveBrowserProcessImpl::component_updater() {
if (component_updater_)
return component_updater_.get();
if (!BrowserThread::CurrentlyOn(BrowserThread::UI))
return nullptr;
@@ -64,23 +62,13 @@ BraveBrowserProcessImpl::component_updater(
if (!scheduler)
scheduler = std::make_unique<component_updater::TimerUpdateScheduler>();
component_updater = component_updater::ComponentUpdateServiceFactory(
component_updater_ = component_updater::ComponentUpdateServiceFactory(
component_updater::MakeBraveComponentUpdaterConfigurator(
base::CommandLine::ForCurrentProcess(),
g_browser_process->local_state(), use_brave_server),
g_browser_process->local_state()),
std::move(scheduler));
return component_updater.get();
}
component_updater::ComponentUpdateService*
BraveBrowserProcessImpl::component_updater() {
return component_updater(component_updater_, true);
}
component_updater::ComponentUpdateService*
BraveBrowserProcessImpl::google_component_updater() {
return component_updater(google_component_updater_, false);
return component_updater_.get();
}
brave_shields::AdBlockService*
-10
View File
@@ -31,7 +31,6 @@ class BraveBrowserProcessImpl : public BrowserProcessImpl {
// BrowserProcess implementation.
component_updater::ComponentUpdateService* component_updater() override;
component_updater::ComponentUpdateService* google_component_updater();
brave_shields::AdBlockService* ad_block_service();
brave_shields::AdBlockRegionalService* ad_block_regional_service();
@@ -49,15 +48,6 @@ class BraveBrowserProcessImpl : public BrowserProcessImpl {
https_everywhere_service_;
std::unique_ptr<brave::BraveStatsUpdater> brave_stats_updater_;
std::unique_ptr<extensions::BraveTorClientUpdater> tor_client_updater_;
component_updater::ComponentUpdateService* component_updater(
std::unique_ptr<component_updater::ComponentUpdateService>&,
bool use_brave_server);
std::unique_ptr<component_updater::ComponentUpdateService>
google_component_updater_;
std::unique_ptr<component_updater::ComponentUpdateService>
brave_component_updater_;
std::unique_ptr<ProfileCreationMonitor> profile_creation_monitor_;
DISALLOW_COPY_AND_ASSIGN(BraveBrowserProcessImpl);
@@ -12,7 +12,6 @@
#include "base/strings/sys_string_conversions.h"
#include "base/version.h"
#include "brave/common/network_constants.h"
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/net/system_network_context_manager.h"
@@ -39,8 +38,7 @@ namespace {
class BraveConfigurator : public update_client::Configurator {
public:
BraveConfigurator(const base::CommandLine* cmdline,
PrefService* pref_service,
bool use_brave_server);
PrefService* pref_service);
// update_client::Configurator overrides.
int InitialDelay() const override;
@@ -75,7 +73,6 @@ class BraveConfigurator : public update_client::Configurator {
ConfiguratorImpl configurator_impl_;
PrefService* pref_service_; // This member is not owned by this class.
bool use_brave_server_;
~BraveConfigurator() override {}
};
@@ -85,22 +82,14 @@ class BraveConfigurator : public update_client::Configurator {
// a custom message signing protocol and it does not depend on using HTTPS.
BraveConfigurator::BraveConfigurator(
const base::CommandLine* cmdline,
PrefService* pref_service,
bool use_brave_server)
PrefService* pref_service)
: configurator_impl_(ComponentUpdaterCommandLineConfigPolicy(cmdline), false),
pref_service_(pref_service),
use_brave_server_(use_brave_server) {
pref_service_(pref_service) {
DCHECK(pref_service_);
}
int BraveConfigurator::InitialDelay() const {
if (use_brave_server_) {
return configurator_impl_.InitialDelay();
}
// This just makes it so as soon as the Google component update
// is used it checks for Widevine, which is currently the only
// place we use it.
return 10;
return configurator_impl_.InitialDelay();
}
int BraveConfigurator::NextCheckDelay() const {
@@ -116,10 +105,6 @@ int BraveConfigurator::UpdateDelay() const {
}
std::vector<GURL> BraveConfigurator::UpdateUrl() const {
if (use_brave_server_) {
return std::vector<GURL>
{GURL(kBraveUpdatesExtensionsEndpoint)};
}
return configurator_impl_.UpdateUrl();
}
@@ -190,10 +175,7 @@ bool BraveConfigurator::EnabledBackgroundDownloader() const {
}
bool BraveConfigurator::EnabledCupSigning() const {
if (use_brave_server_) {
return false;
}
return configurator_impl_.EnabledCupSigning();
return false;
}
PrefService* BraveConfigurator::GetPrefService() const {
@@ -228,9 +210,8 @@ void RegisterPrefsForBraveComponentUpdaterConfigurator(
scoped_refptr<update_client::Configurator>
MakeBraveComponentUpdaterConfigurator(
const base::CommandLine* cmdline,
PrefService* pref_service,
bool use_brave_server) {
return base::MakeRefCounted<BraveConfigurator>(cmdline, pref_service, use_brave_server);
PrefService* pref_service) {
return base::MakeRefCounted<BraveConfigurator>(cmdline, pref_service);
}
} // namespace component_updater
@@ -31,8 +31,7 @@ void RegisterPrefsForBraveComponentUpdaterConfigurator(
scoped_refptr<update_client::Configurator>
MakeBraveComponentUpdaterConfigurator(
const base::CommandLine* cmdline,
PrefService* pref_service,
bool use_brave_server);
PrefService* pref_service);
} // namespace component_updater
+2
View File
@@ -12,6 +12,8 @@ source_set("extensions") {
"brave_component_extension_resource_manager.h",
"brave_component_loader.cc",
"brave_component_loader.h",
"brave_extension_install_prompt.cc",
"brave_extension_install_prompt.h",
"brave_extension_management.cc",
"brave_extension_management.h",
"brave_extension_provider.cc",
@@ -0,0 +1,29 @@
/* 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/extensions/brave_extension_install_prompt.h"
#include "base/strings/utf_string_conversions.h"
#include "brave/browser/extensions/brave_extension_provider.h"
#include "brave/grit/brave_generated_resources.h"
#include "extensions/common/extension_id.h"
#include "ui/base/l10n/l10n_util.h"
BravePrompt::BravePrompt(ExtensionInstallPrompt::PromptType type) :
ExtensionInstallPrompt::Prompt(type) {
}
BravePrompt::~BravePrompt() {
}
base::string16 BravePrompt::GetDialogTitle() const {
if (!extensions::BraveExtensionProvider::IsVetted(extension())) {
if (type_ == ExtensionInstallPrompt::INSTALL_PROMPT ||
type_ == ExtensionInstallPrompt::INLINE_INSTALL_PROMPT) {
return l10n_util::GetStringFUTF16(IDS_UNVETTED_EXTENSION_INSTALL_PROMPT_TITLE,
base::UTF8ToUTF16(extension_->name()));
}
}
return ExtensionInstallPrompt::Prompt::GetDialogTitle();
}
@@ -0,0 +1,20 @@
/* 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_EXTENSIONS_BRAVE_EXTENSION_INSTALL_PROMPT_H_
#define BRAVE_BROWSER_EXTENSIONS_BRAVE_EXTENSION_INSTALL_PROMPT_H_
#include "chrome/browser/extensions/extension_install_prompt.h"
class BravePrompt : public ExtensionInstallPrompt::Prompt {
public:
explicit BravePrompt(ExtensionInstallPrompt::PromptType type);
~BravePrompt() override;
base::string16 GetDialogTitle() const override;
DISALLOW_COPY_AND_ASSIGN(BravePrompt);
};
#endif // BRAVE_BROWSER_EXTENSIONS_BRAVE_EXTENSION_INSTALL_PROMPT_H_
+18 -13
View File
@@ -15,12 +15,21 @@
namespace {
bool IsWhitelisted(const extensions::Extension* extension) {
// Allow PWAs to run
if (extension->GetType() == extensions::Manifest::TYPE_HOSTED_APP) {
return true;
}
static std::vector<std::string> whitelist({
bool IsBlacklisted(const extensions::Extension* extension) {
// This is a hardcoded list of extensions to block.
// Typically instead you can just use the brave/go-updater to list
// a blacklisted extension that you want to block for existing clients.
// mlklomjnahgiddgfdgjhibinlfibfffc is used for tests, it corresponds to
// brave/test/data/should-be-blocked-extension
return extension->id() == "mlklomjnahgiddgfdgjhibinlfibfffc";
}
} // namespace
namespace extensions {
bool BraveExtensionProvider::IsVetted(const Extension* extension) {
static std::vector<std::string> vetted_extensions({
brave_extension_id,
brave_webtorrent_extension_id,
pdfjs_extension_id,
@@ -83,14 +92,10 @@ bool IsWhitelisted(const extensions::Extension* extension) {
// Test ID: Brave Tor Client Updater
"ngicbhhaldfdgmjhilmnleppfpmkgbbk"
});
return std::find(whitelist.begin(), whitelist.end(),
extension->id()) != whitelist.end();
return std::find(vetted_extensions.begin(), vetted_extensions.end(),
extension->id()) != vetted_extensions.end();
}
} // namespace
namespace extensions {
BraveExtensionProvider::BraveExtensionProvider() {
}
@@ -108,7 +113,7 @@ std::string BraveExtensionProvider::GetDebugPolicyProviderName() const {
bool BraveExtensionProvider::UserMayLoad(const Extension* extension,
base::string16* error) const {
if (!IsWhitelisted(extension)) {
if (IsBlacklisted(extension)) {
if (error) {
*error =
l10n_util::GetStringFUTF16(IDS_EXTENSION_CANT_INSTALL_ON_BRAVE,
@@ -18,6 +18,7 @@ class BraveExtensionProvider : public ManagementPolicy::Provider {
base::string16* error) const override;
bool MustRemainInstalled(const Extension* extension,
base::string16* error) const override;
static bool IsVetted(const extensions::Extension* extension);
private:
DISALLOW_COPY_AND_ASSIGN(BraveExtensionProvider);
};
+2
View File
@@ -3,6 +3,8 @@ import("//build/config/features.gni")
source_set("net") {
configs += [ "//brave/build/geolocation" ]
sources = [
"brave_common_static_redirect_network_delegate_helper.cc",
"brave_common_static_redirect_network_delegate_helper.h",
"brave_network_delegate_base.cc",
"brave_network_delegate_base.h",
"brave_httpse_network_delegate_helper.cc",
@@ -0,0 +1,45 @@
/* 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/net/brave_common_static_redirect_network_delegate_helper.h"
#include "brave/common/network_constants.h"
#include "components/component_updater/component_updater_url_constants.h"
#include "extensions/common/extension_urls.h"
#include "extensions/common/url_pattern.h"
#include "net/url_request/url_request.h"
namespace brave {
// Update server checks happen from the profile context for admin policy installed extensions.
// Update server checks happen from the system context for normal update operations.
bool IsUpdaterURL(const GURL& gurl) {
static std::vector<URLPattern> updater_patterns({
URLPattern(URLPattern::SCHEME_HTTPS, std::string(component_updater::kUpdaterDefaultUrl) + "*"),
URLPattern(URLPattern::SCHEME_HTTP, std::string(component_updater::kUpdaterFallbackUrl) + "*"),
URLPattern(URLPattern::SCHEME_HTTPS, std::string(extension_urls::kChromeWebstoreUpdateURL) + "*")
});
bool braveRedirect = gurl.query().find("braveRedirect=true") != std::string::npos;
return std::any_of(updater_patterns.begin(), updater_patterns.end(),
[&gurl, braveRedirect](URLPattern pattern) {
return !braveRedirect && pattern.MatchesURL(gurl);
});
}
int OnBeforeURLRequest_CommonStaticRedirectWork(
net::URLRequest* request,
GURL* new_url,
const ResponseCallback& next_callback,
std::shared_ptr<BraveRequestInfo> ctx) {
GURL::Replacements replacements;
if (IsUpdaterURL(request->url())) {
replacements.SetQueryStr(request->url().query_piece());
*new_url = GURL(kBraveUpdatesExtensionsEndpoint).ReplaceComponents(replacements);
return net::OK;
}
return net::OK;
}
} // namespace brave
@@ -0,0 +1,27 @@
/* 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_NET_BRAVE_COMMON_STATIC_REDIRECT_NETWORK_DELEGATE_H_
#define BRAVE_BROWSER_NET_BRAVE_COMMON_STATIC_REDIRECT_NETWORK_DELEGATE_H_
#include "chrome/browser/net/chrome_network_delegate.h"
#include "brave/browser/net/url_context.h"
struct BraveRequestInfo;
namespace net {
class URLRequest;
}
namespace brave {
int OnBeforeURLRequest_CommonStaticRedirectWork(
net::URLRequest* request,
GURL* new_url,
const ResponseCallback& next_callback,
std::shared_ptr<BraveRequestInfo> ctx);
} // namespace brave
#endif // BRAVE_BROWSER_NET_BRAVE_COMMON_STATIC_REDIRECT_NETWORK_DELEGATE_H_
@@ -0,0 +1,74 @@
/* 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/net/brave_common_static_redirect_network_delegate_helper.h"
#include "brave/browser/net/url_context.h"
#include "brave/common/network_constants.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "components/component_updater/component_updater_url_constants.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "net/url_request/url_request_test_util.h"
#include "url/gurl.h"
#include "url/url_constants.h"
namespace {
class BraveCommonStaticRedirectNetworkDelegateHelperTest: public testing::Test {
public:
BraveCommonStaticRedirectNetworkDelegateHelperTest()
: thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
context_(new net::TestURLRequestContext(true)) {
}
~BraveCommonStaticRedirectNetworkDelegateHelperTest() override {}
void SetUp() override {
context_->Init();
}
net::TestURLRequestContext* context() { return context_.get(); }
private:
content::TestBrowserThreadBundle thread_bundle_;
std::unique_ptr<net::TestURLRequestContext> context_;
};
TEST_F(BraveCommonStaticRedirectNetworkDelegateHelperTest, ModifyComponentUpdaterURL) {
net::TestDelegate test_delegate;
std::string query_string("?foo=bar");
GURL url(std::string(component_updater::kUpdaterDefaultUrl) + query_string);
std::unique_ptr<net::URLRequest> request =
context()->CreateRequest(url, net::IDLE, &test_delegate,
TRAFFIC_ANNOTATION_FOR_TESTS);
std::shared_ptr<brave::BraveRequestInfo>
before_url_context(new brave::BraveRequestInfo());
brave::ResponseCallback callback;
GURL new_url;
GURL expected_url(std::string(kBraveUpdatesExtensionsEndpoint + query_string));
int ret =
OnBeforeURLRequest_CommonStaticRedirectWork(request.get(), &new_url, callback,
before_url_context);
EXPECT_EQ(new_url, expected_url);
EXPECT_EQ(ret, net::OK);
}
TEST_F(BraveCommonStaticRedirectNetworkDelegateHelperTest, NoModifyComponentUpdaterURL) {
net::TestDelegate test_delegate;
std::string query_string("?braveRedirect=true");
GURL url(std::string(component_updater::kUpdaterDefaultUrl) + query_string);
std::unique_ptr<net::URLRequest> request =
context()->CreateRequest(url, net::IDLE, &test_delegate,
TRAFFIC_ANNOTATION_FOR_TESTS);
std::shared_ptr<brave::BraveRequestInfo>
before_url_context(new brave::BraveRequestInfo());
brave::ResponseCallback callback;
GURL new_url;
GURL expected_url;
int ret =
OnBeforeURLRequest_CommonStaticRedirectWork(request.get(), &new_url, callback,
before_url_context);
EXPECT_EQ(new_url, expected_url);
EXPECT_EQ(ret, net::OK);
}
} // namespace
@@ -4,6 +4,7 @@
#include "brave/browser/net/brave_profile_network_delegate.h"
#include "brave/browser/net/brave_common_static_redirect_network_delegate_helper.h"
#include "brave/browser/net/brave_httpse_network_delegate_helper.h"
#include "brave/browser/net/brave_site_hacks_network_delegate_helper.h"
#include "brave/components/brave_rewards/browser/buildflags/buildflags.h"
@@ -21,8 +22,11 @@ BraveProfileNetworkDelegate::BraveProfileNetworkDelegate(
before_url_request_callbacks_.push_back(callback);
callback =
base::Bind(
brave::OnBeforeURLRequest_HttpsePreFileWork);
base::Bind(brave::OnBeforeURLRequest_HttpsePreFileWork);
before_url_request_callbacks_.push_back(callback);
callback =
base::Bind(brave::OnBeforeURLRequest_CommonStaticRedirectWork);
before_url_request_callbacks_.push_back(callback);
#if BUILDFLAG(BRAVE_REWARDS_ENABLED)
@@ -31,10 +35,8 @@ BraveProfileNetworkDelegate::BraveProfileNetworkDelegate(
#endif
brave::OnBeforeStartTransactionCallback start_transactions_callback =
base::Bind(
brave::OnBeforeStartTransaction_SiteHacksWork);
base::Bind(brave::OnBeforeStartTransaction_SiteHacksWork);
before_start_transaction_callbacks_.push_back(start_transactions_callback);
}
BraveProfileNetworkDelegate::~BraveProfileNetworkDelegate() {
@@ -5,11 +5,9 @@
#include "brave/browser/net/brave_static_redirect_network_delegate_helper.h"
#include "brave/common/network_constants.h"
#include "components/component_updater/component_updater_url_constants.h"
#include "extensions/common/url_pattern.h"
#include "net/url_request/url_request.h"
namespace brave {
int OnBeforeURLRequest_StaticRedirectWork(
@@ -110,4 +110,25 @@ TEST_F(BraveStaticRedirectNetworkDelegateHelperTest, ModifySafeBrowsingURLV5) {
EXPECT_EQ(ret, net::OK);
}
TEST_F(BraveStaticRedirectNetworkDelegateHelperTest, ModifyComponentUpdaterURL) {
net::TestDelegate test_delegate;
std::string query_string("?foo=bar");
GURL url(std::string(component_updater::kUpdaterDefaultUrl) + query_string);
std::unique_ptr<net::URLRequest> request =
context()->CreateRequest(url, net::IDLE, &test_delegate,
TRAFFIC_ANNOTATION_FOR_TESTS);
std::shared_ptr<brave::BraveRequestInfo>
before_url_context(new brave::BraveRequestInfo());
brave::ResponseCallback callback;
GURL new_url;
GURL expected_url(std::string(kBraveUpdatesExtensionsEndpoint + query_string));
int ret =
OnBeforeURLRequest_StaticRedirectWork(request.get(), &new_url, callback,
before_url_context);
EXPECT_EQ(new_url, expected_url);
EXPECT_EQ(ret, net::OK);
}
} // namespace
+4 -1
View File
@@ -4,9 +4,9 @@
#include "brave/browser/net/brave_system_network_delegate.h"
#include "brave/browser/net/brave_common_static_redirect_network_delegate_helper.h"
#include "brave/browser/net/brave_static_redirect_network_delegate_helper.h"
BraveSystemNetworkDelegate::BraveSystemNetworkDelegate(
extensions::EventRouterForwarder* event_router) :
BraveNetworkDelegateBase(event_router) {
@@ -14,6 +14,9 @@ BraveSystemNetworkDelegate::BraveSystemNetworkDelegate(
base::Bind(
brave::OnBeforeURLRequest_StaticRedirectWork);
before_url_request_callbacks_.push_back(callback);
callback = base::Bind(
brave::OnBeforeURLRequest_CommonStaticRedirectWork);
before_url_request_callbacks_.push_back(callback);
}
BraveSystemNetworkDelegate::~BraveSystemNetworkDelegate() {
@@ -52,7 +52,7 @@ void BraveWidevineContentSettingPluginBubbleModel::RunPluginsOnPage() {
PrefService* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs();
prefs->SetBoolean(kWidevineOptedIn, true);
RegisterWidevineCdmComponent(g_brave_browser_process->google_component_updater());
RegisterWidevineCdmComponent(g_brave_browser_process->component_updater());
ChromeSubresourceFilterClient::FromWebContents(web_contents())
->OnReloadRequested();
}
@@ -21,7 +21,7 @@ void RegisterWidevineCdmComponent(ComponentUpdateService* cus) {
prefs->GetBoolean(kWidevineOptedIn);
if (widevine_opted_in) {
RegisterWidevineCdmComponent_ChromiumImpl(
g_brave_browser_process->google_component_updater());
g_brave_browser_process->component_updater());
}
}
+3 -1
View File
@@ -1,6 +1,8 @@
#include "brave/common/network_constants.h"
const char kBraveUpdatesExtensionsEndpoint[] = "https://laptop-updates.brave.com/extensions";
const char kBraveUpdatesExtensionsEndpoint[] = "https://go-updater.brave.com/extensions";
// For debgugging:
// const char kBraveUpdatesExtensionsEndpoint[] = "http://localhost:8192/extensions";
const char kEmptyDataURI[] = "data:application/javascript;base64,MA==";
const char kJSDataURLPrefix[] = "data:application/javascript;base64,";
@@ -0,0 +1,21 @@
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index e30137f3c244cfeb22bacd36eb059913f9fd4c04..35e9433e15919bb5158e4b2e3a65e28b18cdb6db 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -13,6 +13,7 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/thread_task_runner_handle.h"
+#include "brave/browser/extensions/brave_extension_install_prompt.h"
#include "chrome/browser/extensions/extension_install_prompt_show_params.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/extensions/permissions_updater.h"
@@ -546,7 +547,7 @@ void ExtensionInstallPrompt::ShowDialog(
const SkBitmap* icon,
const ShowDialogCallback& show_dialog_callback) {
ShowDialog(done_callback, extension, icon,
- std::make_unique<Prompt>(INSTALL_PROMPT), show_dialog_callback);
+ std::make_unique<BravePrompt>(INSTALL_PROMPT), show_dialog_callback);
}
void ExtensionInstallPrompt::ShowDialog(
@@ -0,0 +1,30 @@
diff --git a/chrome/browser/extensions/extension_install_prompt.h b/chrome/browser/extensions/extension_install_prompt.h
index db454db003ec58d6a0f23f6e6c70a1f106350907..77c6350e77412d5a61adab52511548a00b7018c1 100644
--- a/chrome/browser/extensions/extension_install_prompt.h
+++ b/chrome/browser/extensions/extension_install_prompt.h
@@ -86,7 +86,7 @@ class ExtensionInstallPrompt {
class Prompt {
public:
explicit Prompt(PromptType type);
- ~Prompt();
+ virtual ~Prompt();
void AddPermissions(const extensions::PermissionMessages& permissions);
void SetIsShowingDetails(DetailsType type,
@@ -100,7 +100,7 @@ class ExtensionInstallPrompt {
PromptType type() const { return type_; }
// Getters for UI element labels.
- base::string16 GetDialogTitle() const;
+ virtual base::string16 GetDialogTitle() const;
int GetDialogButtons() const;
// Returns the empty string when there should be no "accept" button.
base::string16 GetAcceptButtonLabel() const;
@@ -165,6 +165,7 @@ class ExtensionInstallPrompt {
private:
friend class base::RefCountedThreadSafe<Prompt>;
+ friend class BravePrompt;
struct InstallPromptPermissions {
InstallPromptPermissions();
@@ -0,0 +1,13 @@
diff --git a/extensions/browser/updater/update_service.cc b/extensions/browser/updater/update_service.cc
index 93dda0f45fe1d3f44f229ff4fe5fc0ff6a02ab6c..865b867cde2234777a78c3b914f68123cfb681ee 100644
--- a/extensions/browser/updater/update_service.cc
+++ b/extensions/browser/updater/update_service.cc
@@ -32,7 +32,7 @@ namespace extensions {
namespace {
// 98% of update checks have 22 or less extensions.
-constexpr size_t kMaxExtensionsPerUpdate = 22;
+constexpr size_t kMaxExtensionsPerUpdate = 1;
void SendUninstallPingCompleteCallback(update_client::Error error) {}
+1
View File
@@ -31,6 +31,7 @@ test("brave_unit_tests") {
"//brave/browser/autoplay/autoplay_permission_context_unittest.cc",
"//brave/browser/brave_resources_util_unittest.cc",
"//brave/browser/brave_stats_updater_unittest.cc",
"//brave/browser/net/brave_common_static_redirect_network_delegate_helper_unittest.cc",
"//brave/browser/net/brave_site_hacks_network_delegate_helper_unittest.cc",
"//brave/browser/net/brave_static_redirect_network_delegate_helper_unittest.cc",
"//brave/chromium_src/chrome/browser/signin/account_consistency_disabled_unittest.cc",
+28
View File
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCzVwjhTBA7xISD
NxJ03pMGhuVVl3U1FAD0T8/85uEEF1R5ugI8H/MruN77vSqqsslhSez/WmOobRdj
+fLOWOixxcdcvXG0fCme4NcE1ArI0qKjOksKakv5wt1LIXZEmwOchL+Tn5nIC32z
al7UhBFHTbtPDFAmAAD3BPANRODAITSQk/+aG2Mf2topab2wK6IzKOjcil4HLRcw
Zse+3/AD9Ek2RNtcpjKeMVKFNyWXnDyZHGFSWLYSQKXiFu8hU9iFyxvLD/I2Wbhr
QJPlKh7WS78J3Hzb81H8TdDuAxQKfvSj3iwXVLmrbxzXzxOUebkRGMDPRLwvDd/Y
0YwXsnFpAgMBAAECggEACQNkCxytSS+ygDy9lPmVtpODhaZ3ycvgU2cKezmoT/IT
OQ3v7FEnwcgIDuteMFeNdvIF8vx6Oz4GWaw3d4bw5PRddWwBAbLmzZkbvV6hzx+E
9IKqwFKA0IPqZsr+/Go1B4IFddgk3LC1J9X9/5zGmIiP1CR4h7xi0AdjwCr4x7cd
5ei6M86g64tACWD+iWH5vc5TEq5zmrCrGD1hsujV0s9kzUhwsSSpI37UFT0qJRlz
O/D32b9dcnbP6hU6Bb+POHkFM3Bd91cL/xgDTOvVV6jJlikMPFw9lPk6jB+2MnEc
r897WF2tIMKsVVF7Bz5SFk/C+8RqjfLrGA0UE2gCzQKBgQDpARrdffQlhQtra2Kl
Xd2w4hQoncTn2vnX92aaIdR4NKosdahZpF7lgScelUwZGCvDfH+yRYaIf5kjno1b
q6fzx3vdVA9B4X17aP90IWucuiRX22PkruOtKkCjZ/HiFoKzgypRUEWGbUsrXojh
es4HxZ/Cmpr9F7NWd08JpL14JQKBgQDFChdAfzlt+U7kWLajjWR0Bl1ff8PnhUTZ
N+oXFww6JQo3ICcloY5WaJvKlBazBKYsVHWu28LVAFwMnmxm/BFJGcVPpRFUMbp/
9MnE7lhrBt3+eSv8sskJeXtAWBfkqkKzRRpIB26HIVIVf71bX4kyXOnrw4GY0rn1
KmQNPne+9QKBgQC4C01jIrgUYtCwWrQiltAjhZASvPvpf8fVVO/QU2R2RnMchxsh
I3ppoeh6eccQE02OLerXr58idldKEVTq0d3p6unl2x3qFeh98GPHIRbVRxqp4vs2
iQYBo9xGtjYTNWCr1rE4ZUVldzLm4NcR82SGMw2MM36052GarMbbgSq/mQKBgQCT
AfRXKpSueFNkCsw5OkS4TAdeOPTwx32WkyEUGR4GQ5xbhKGwcdjAn0uc2OAWsGFK
sbkbvNqgEKScxZYbP/WllJSh14YWSwPac8gWJb3SHE2EjuNCpiFX8EsEtrUc5erd
1bDGDMVqDHIxmByvD5hM+wWL4VHPs2kKgZYkS3cMAQKBgHtcOT7nXmwteU16Wm1M
S58BdPKpDV+vAUGriVxsGPeCFEALBTTqzCuAKwoYt6bQdN9mZl6bMmXMvMJkRoJA
3nEeAg3SE4mjB/fjpt7FEJ0vgKKn+FiJZL2uuoJQJjXVT/fvabMPsCeaNDoDxQfX
4za/FZKQ1vRtG3eR9K2X2Pn0
-----END PRIVATE KEY-----