Skip to content

Commit d008d21

Browse files
electron-botMarshallOfSound
authored andcommitted
chore: bump chromium to 2a7aff41ce73adc0eeee67d364989 (master) (electron#18505)
* chore: bump chromium in DEPS to 07463d3cd628b037c11f36022cb4c788db4628e3 * chore: update patches * fix: Don't leak system network context when nw service is disabled https://chromium-review.googlesource.com/c/chromium/src/+/1632494 NetworkService is now deleted by using SequnceLocalStorageSlot on the IO thread when the service is disabled, which expects all associated NetworkContexts on that sequence to be destroyed. * chore: bump chromium in DEPS to 7c16850e7e40990e141f47101b737ec1092175a1 * fix: Destroy all network contexts before primary network context * Simplify out-of-process service registration https://chromium-review.googlesource.com/c/chromium/src/+/1615882 * [ThreadPool] Rename base::ThreadPool to base::ThreadPoolInstance https://chromium-review.googlesource.com/c/chromium/src/+/1634851 * chore: update patches * fix: -Winconsistent-missing-override warnings * chore: bump chromium in DEPS to 93ebfaccc12715df1d5426797998eed0932f7ae1 * Change CreateBrowserMainParts to return unique_ptrs https://chromium-review.googlesource.com/c/chromium/src/+/1632532 * chore: update patches * chore: bump chromium in DEPS to e656555ffb87bdd05e248d0a3ef9dd9d3433e17b * chore: bump chromium in DEPS to 111e7a8d2e3ae9d70e535009d6afb066ac906063 * chore: bump chromium in DEPS to 9b6b84670d32a7aff41ce73adc0eeee67d364989 * chore: update patches * chore: remove ShouldInterceptResourceAsStream as it is removed upstream Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1639597 * chore: remove ResourceDispatcherHostCreated as it is removed upstream Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1610892 * chore: CreateWithStrongBinding --> CreateWithSelfOwnedReceiver Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1636722 * chore: rename all blink media enums Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1639237 * chore: add accidentally removed patch content back
1 parent 641e1d6 commit d008d21

File tree

61 files changed

+268
-397
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+268
-397
lines changed

Diff for: DEPS

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ gclient_gn_args = [
1010

1111
vars = {
1212
'chromium_version':
13-
'ab588d36191964c4bca8de5c320534d95606c861',
13+
'9b6b84670d32a7aff41ce73adc0eeee67d364989',
1414
'node_version':
1515
'b823596192bb790f9ea2a61022b55bf50e6daa83',
1616
'nan_version':

Diff for: atom/app/node_main.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ int NodeMain(int argc, char* argv[]) {
4848
gin::V8Initializer::LoadV8Natives();
4949

5050
// V8 requires a task scheduler apparently
51-
base::ThreadPool::CreateAndStartWithDefaultParams("Electron");
51+
base::ThreadPoolInstance::CreateAndStartWithDefaultParams("Electron");
5252

5353
// Initialize gin::IsolateHolder.
5454
JavascriptEnvironment gin_env(loop);
@@ -116,7 +116,7 @@ int NodeMain(int argc, char* argv[]) {
116116
// gin::IsolateHolder waits for tasks running in ThreadPool in its
117117
// destructor and thus must be destroyed before ThreadPool starts skipping
118118
// CONTINUE_ON_SHUTDOWN tasks.
119-
base::ThreadPool::GetInstance()->Shutdown();
119+
base::ThreadPoolInstance::Get()->Shutdown();
120120

121121
v8::V8::Dispose();
122122

Diff for: atom/browser/atom_browser_client.cc

+3-22
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@
7979
#include "services/device/public/cpp/geolocation/location_provider.h"
8080
#include "services/network/public/cpp/features.h"
8181
#include "services/network/public/cpp/resource_request_body.h"
82-
#include "services/proxy_resolver/public/mojom/proxy_resolver.mojom.h"
8382
#include "ui/base/l10n/l10n_util.h"
8483
#include "ui/base/resource/resource_bundle.h"
8584
#include "v8/include/v8.h"
@@ -111,8 +110,6 @@
111110

112111
#if BUILDFLAG(ENABLE_PRINTING)
113112
#include "chrome/browser/printing/printing_message_filter.h"
114-
#include "chrome/services/printing/public/mojom/constants.mojom.h"
115-
#include "components/services/pdf_compositor/public/interfaces/pdf_compositor.mojom.h"
116113
#endif // BUILDFLAG(ENABLE_PRINTING)
117114

118115
using content::BrowserThread;
@@ -715,23 +712,6 @@ network::mojom::NetworkContext* AtomBrowserClient::GetSystemNetworkContext() {
715712
return g_browser_process->system_network_context_manager()->GetContext();
716713
}
717714

718-
void AtomBrowserClient::RegisterOutOfProcessServices(
719-
OutOfProcessServiceMap* services) {
720-
(*services)[proxy_resolver::mojom::kProxyResolverServiceName] =
721-
base::BindRepeating(&l10n_util::GetStringUTF16,
722-
IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME);
723-
724-
#if BUILDFLAG(ENABLE_PRINTING)
725-
(*services)[printing::mojom::kServiceName] =
726-
base::BindRepeating(&l10n_util::GetStringUTF16,
727-
IDS_UTILITY_PROCESS_PDF_COMPOSITOR_SERVICE_NAME);
728-
729-
(*services)[printing::mojom::kChromePrintingServiceName] =
730-
base::BindRepeating(&l10n_util::GetStringUTF16,
731-
IDS_UTILITY_PROCESS_PRINTING_SERVICE_NAME);
732-
#endif
733-
}
734-
735715
base::Optional<service_manager::Manifest>
736716
AtomBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
737717
if (name == content::mojom::kBrowserServiceName)
@@ -748,9 +728,10 @@ net::NetLog* AtomBrowserClient::GetNetLog() {
748728
return g_browser_process->net_log();
749729
}
750730

751-
content::BrowserMainParts* AtomBrowserClient::CreateBrowserMainParts(
731+
std::unique_ptr<content::BrowserMainParts>
732+
AtomBrowserClient::CreateBrowserMainParts(
752733
const content::MainFunctionParams& params) {
753-
return new AtomBrowserMainParts(params);
734+
return std::make_unique<AtomBrowserMainParts>(params);
754735
}
755736

756737
void AtomBrowserClient::WebNotificationAllowed(

Diff for: atom/browser/atom_browser_client.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ class AtomBrowserClient : public content::ContentBrowserClient,
145145
bool in_memory,
146146
const base::FilePath& relative_partition_path) override;
147147
network::mojom::NetworkContext* GetSystemNetworkContext() override;
148-
void RegisterOutOfProcessServices(OutOfProcessServiceMap* services) override;
149148
base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
150149
base::StringPiece name) override;
151150
std::vector<service_manager::Manifest> GetExtraServiceManifests() override;
@@ -154,7 +153,7 @@ class AtomBrowserClient : public content::ContentBrowserClient,
154153
content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override;
155154
content::PlatformNotificationService* GetPlatformNotificationService(
156155
content::BrowserContext* browser_context) override;
157-
content::BrowserMainParts* CreateBrowserMainParts(
156+
std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts(
158157
const content::MainFunctionParams&) override;
159158
base::FilePath GetDefaultDownloadDirectory() override;
160159
scoped_refptr<network::SharedURLLoaderFactory>

Diff for: atom/browser/atom_browser_context.cc

+5-4
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,12 @@ AtomBrowserContext::~AtomBrowserContext() {
110110
NotifyWillBeDestroyed(this);
111111
ShutdownStoragePartitions();
112112

113-
BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE,
114-
std::move(resource_context_));
115-
116-
if (!base::FeatureList::IsEnabled(network::features::kNetworkService))
113+
if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) {
117114
io_handle_->ShutdownOnUIThread();
115+
} else {
116+
BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE,
117+
std::move(resource_context_));
118+
}
118119

119120
// Notify any keyed services of browser context destruction.
120121
BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices(

Diff for: atom/browser/atom_resource_dispatcher_host_delegate.cc

-74
Original file line numberDiff line numberDiff line change
@@ -27,80 +27,6 @@ using content::BrowserThread;
2727

2828
namespace atom {
2929

30-
namespace {
31-
32-
#if BUILDFLAG(ENABLE_PDF_VIEWER)
33-
void OnPdfResourceIntercepted(
34-
const GURL& original_url,
35-
int render_process_host_id,
36-
int render_frame_id,
37-
const content::ResourceRequestInfo::WebContentsGetter&
38-
web_contents_getter) {
39-
content::WebContents* web_contents = web_contents_getter.Run();
40-
if (!web_contents)
41-
return;
42-
43-
auto* web_preferences = WebContentsPreferences::From(web_contents);
44-
if (!web_preferences || !web_preferences->IsEnabled(options::kPlugins)) {
45-
auto* browser_context = web_contents->GetBrowserContext();
46-
auto* download_manager =
47-
content::BrowserContext::GetDownloadManager(browser_context);
48-
49-
download_manager->DownloadUrl(
50-
content::DownloadUrlParameters::CreateForWebContentsMainFrame(
51-
web_contents, original_url, NO_TRAFFIC_ANNOTATION_YET));
52-
return;
53-
}
54-
55-
// The URL passes the original pdf resource url, that will be requested
56-
// by the webui page.
57-
// chrome://pdf-viewer/index.html?src=https://somepage/123.pdf
58-
content::NavigationController::LoadURLParams params(GURL(base::StringPrintf(
59-
"%sindex.html?%s=%s", kPdfViewerUIOrigin, kPdfPluginSrc,
60-
net::EscapeUrlEncodedData(original_url.spec(), false).c_str())));
61-
62-
content::RenderFrameHost* frame_host =
63-
content::RenderFrameHost::FromID(render_process_host_id, render_frame_id);
64-
if (!frame_host) {
65-
return;
66-
}
67-
68-
params.frame_tree_node_id = frame_host->GetFrameTreeNodeId();
69-
web_contents->GetController().LoadURLWithParams(params);
70-
}
71-
#endif // BUILDFLAG(ENABLE_PDF_VIEWER)
72-
73-
} // namespace
74-
7530
AtomResourceDispatcherHostDelegate::AtomResourceDispatcherHostDelegate() {}
7631

77-
bool AtomResourceDispatcherHostDelegate::ShouldInterceptResourceAsStream(
78-
net::URLRequest* request,
79-
const std::string& mime_type,
80-
GURL* origin,
81-
std::string* payload) {
82-
#if BUILDFLAG(ENABLE_PDF_VIEWER)
83-
content::ResourceRequestInfo* info =
84-
content::ResourceRequestInfo::ForRequest(request);
85-
86-
int render_process_host_id;
87-
int render_frame_id;
88-
if (!info->GetAssociatedRenderFrame(&render_process_host_id,
89-
&render_frame_id)) {
90-
return false;
91-
}
92-
93-
if (mime_type == "application/pdf") {
94-
*origin = GURL(kPdfViewerUIOrigin);
95-
base::PostTaskWithTraits(
96-
FROM_HERE, {BrowserThread::UI},
97-
base::BindOnce(&OnPdfResourceIntercepted, request->url(),
98-
render_process_host_id, render_frame_id,
99-
info->GetWebContentsGetterForRequest()));
100-
return true;
101-
}
102-
#endif // BUILDFLAG(ENABLE_PDF_VIEWER)
103-
return false;
104-
}
105-
10632
} // namespace atom

Diff for: atom/browser/atom_resource_dispatcher_host_delegate.h

-6
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,6 @@ class AtomResourceDispatcherHostDelegate
1616
public:
1717
AtomResourceDispatcherHostDelegate();
1818

19-
// content::ResourceDispatcherHostDelegate:
20-
bool ShouldInterceptResourceAsStream(net::URLRequest* request,
21-
const std::string& mime_type,
22-
GURL* origin,
23-
std::string* payload) override;
24-
2519
private:
2620
DISALLOW_COPY_AND_ASSIGN(AtomResourceDispatcherHostDelegate);
2721
};

Diff for: atom/browser/browser_process_impl.h

-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ class BrowserProcessImpl : public BrowserProcess {
4848
void PostDestroyThreads();
4949
void PostMainMessageLoopRun();
5050

51-
void ResourceDispatcherHostCreated() override {}
5251
void EndSession() override {}
5352
void FlushLocalStateAndReply(base::OnceClosure reply) override {}
5453
bool IsShuttingDown() override;

Diff for: atom/browser/io_thread.cc

+31-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include <utility>
88

9+
#include "atom/browser/net/url_request_context_getter.h"
910
#include "components/net_log/chrome_net_log.h"
1011
#include "content/public/browser/browser_thread.h"
1112
#include "content/public/browser/network_service_instance.h"
@@ -35,6 +36,24 @@ IOThread::~IOThread() {
3536
BrowserThread::SetIOThreadDelegate(nullptr);
3637
}
3738

39+
void IOThread::RegisterURLRequestContextGetter(
40+
atom::URLRequestContextGetter* getter) {
41+
base::AutoLock lock(lock_);
42+
43+
DCHECK(!base::FeatureList::IsEnabled(network::features::kNetworkService));
44+
DCHECK_EQ(0u, request_context_getters_.count(getter));
45+
request_context_getters_.insert(getter);
46+
}
47+
48+
void IOThread::DeregisterURLRequestContextGetter(
49+
atom::URLRequestContextGetter* getter) {
50+
base::AutoLock lock(lock_);
51+
52+
DCHECK(!base::FeatureList::IsEnabled(network::features::kNetworkService));
53+
DCHECK_EQ(1u, request_context_getters_.count(getter));
54+
request_context_getters_.erase(getter);
55+
}
56+
3857
void IOThread::Init() {
3958
if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) {
4059
std::unique_ptr<network::URLRequestContextBuilderMojo> builder =
@@ -55,20 +74,24 @@ void IOThread::Init() {
5574
network_service->ConfigureHttpAuthPrefs(
5675
std::move(http_auth_dynamic_params_));
5776

58-
system_network_context_ =
59-
network_service
60-
->CreateNetworkContextWithBuilder(
61-
std::move(network_context_request_),
62-
std::move(network_context_params_), std::move(builder),
63-
&system_request_context_)
64-
.release();
77+
system_network_context_ = network_service->CreateNetworkContextWithBuilder(
78+
std::move(network_context_request_), std::move(network_context_params_),
79+
std::move(builder), &system_request_context_);
6580
}
6681
}
6782

6883
void IOThread::CleanUp() {
69-
if (!base::FeatureList::IsEnabled(network::features::kNetworkService))
84+
if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) {
7085
system_request_context_->proxy_resolution_service()->OnShutdown();
7186

87+
base::AutoLock lock(lock_);
88+
for (auto* getter : request_context_getters_) {
89+
getter->NotifyContextShuttingDown();
90+
}
91+
92+
system_network_context_.reset();
93+
}
94+
7295
if (net_log_)
7396
net_log_->ShutDownBeforeThreadPool();
7497
}

Diff for: atom/browser/io_thread.h

+17-7
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,18 @@
66
#define ATOM_BROWSER_IO_THREAD_H_
77

88
#include <memory>
9+
#include <set>
910

1011
#include "atom/browser/net/system_network_context_manager.h"
1112
#include "base/macros.h"
13+
#include "base/synchronization/lock.h"
1214
#include "content/public/browser/browser_thread_delegate.h"
1315
#include "services/network/public/mojom/network_service.mojom.h"
1416

17+
namespace atom {
18+
class URLRequestContextGetter;
19+
}
20+
1521
namespace net {
1622
class URLRequestContext;
1723
}
@@ -27,6 +33,9 @@ class IOThread : public content::BrowserThreadDelegate {
2733
SystemNetworkContextManager* system_network_context_manager);
2834
~IOThread() override;
2935

36+
void RegisterURLRequestContextGetter(atom::URLRequestContextGetter* getter);
37+
void DeregisterURLRequestContextGetter(atom::URLRequestContextGetter* getter);
38+
3039
protected:
3140
// BrowserThreadDelegate Implementation, runs on the IO thread.
3241
void Init() override;
@@ -39,13 +48,7 @@ class IOThread : public content::BrowserThreadDelegate {
3948

4049
// When the network service is disabled, this holds on to a
4150
// content::NetworkContext class that owns |system_request_context_|.
42-
// TODO(deepak1556): primary network context has to be destroyed after
43-
// other active contexts, but since the ownership of latter is not released
44-
// before IO thread is destroyed, it results in a DCHECK failure.
45-
// We leak the reference to primary context to workaround this issue,
46-
// since there is only one instance for the entire lifetime of app, it is
47-
// safe.
48-
network::mojom::NetworkContext* system_network_context_;
51+
std::unique_ptr<network::mojom::NetworkContext> system_network_context_;
4952
net::URLRequestContext* system_request_context_;
5053

5154
// These are set on the UI thread, and then consumed during initialization on
@@ -59,6 +62,13 @@ class IOThread : public content::BrowserThreadDelegate {
5962
network::mojom::HttpAuthStaticParamsPtr http_auth_static_params_;
6063
network::mojom::HttpAuthDynamicParamsPtr http_auth_dynamic_params_;
6164

65+
// |lock_| protects access to |request_context_getters_|.
66+
base::Lock lock_;
67+
68+
// List of all request contexts that needs to be notified when
69+
// IO thread is shutting down.
70+
std::set<atom::URLRequestContextGetter*> request_context_getters_;
71+
6272
DISALLOW_COPY_AND_ASSIGN(IOThread);
6373
};
6474

Diff for: atom/browser/media/media_stream_devices_controller.cc

+12-10
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,10 @@ MediaStreamDevicesController::MediaStreamDevicesController(
4242

4343
MediaStreamDevicesController::~MediaStreamDevicesController() {
4444
if (!callback_.is_null()) {
45-
std::move(callback_).Run(blink::MediaStreamDevices(),
46-
blink::MEDIA_DEVICE_FAILED_DUE_TO_SHUTDOWN,
47-
std::unique_ptr<content::MediaStreamUI>());
45+
std::move(callback_).Run(
46+
blink::MediaStreamDevices(),
47+
blink::mojom::MediaStreamRequestResult::FAILED_DUE_TO_SHUTDOWN,
48+
std::unique_ptr<content::MediaStreamUI>());
4849
}
4950
}
5051

@@ -60,7 +61,7 @@ bool MediaStreamDevicesController::TakeAction() {
6061

6162
// Deny the request if there is no device attached to the OS.
6263
if (!HasAnyAvailableDevice()) {
63-
Deny(blink::MEDIA_DEVICE_NO_HARDWARE);
64+
Deny(blink::mojom::MediaStreamRequestResult::NO_HARDWARE);
6465
return true;
6566
}
6667

@@ -146,12 +147,12 @@ void MediaStreamDevicesController::Accept() {
146147
}
147148
}
148149

149-
std::move(callback_).Run(devices, blink::MEDIA_DEVICE_OK,
150+
std::move(callback_).Run(devices, blink::mojom::MediaStreamRequestResult::OK,
150151
std::unique_ptr<content::MediaStreamUI>());
151152
}
152153

153154
void MediaStreamDevicesController::Deny(
154-
blink::MediaStreamRequestResult result) {
155+
blink::mojom::MediaStreamRequestResult result) {
155156
std::move(callback_).Run(blink::MediaStreamDevices(), result,
156157
std::unique_ptr<content::MediaStreamUI>());
157158
}
@@ -188,10 +189,11 @@ void MediaStreamDevicesController::HandleUserMediaRequest() {
188189
screen_id.ToString(), "Screen"));
189190
}
190191

191-
std::move(callback_).Run(devices,
192-
devices.empty() ? blink::MEDIA_DEVICE_NO_HARDWARE
193-
: blink::MEDIA_DEVICE_OK,
194-
std::unique_ptr<content::MediaStreamUI>());
192+
std::move(callback_).Run(
193+
devices,
194+
devices.empty() ? blink::mojom::MediaStreamRequestResult::NO_HARDWARE
195+
: blink::mojom::MediaStreamRequestResult::OK,
196+
std::unique_ptr<content::MediaStreamUI>());
195197
}
196198

197199
} // namespace atom

0 commit comments

Comments
 (0)