Skip to content

Commit 3189303

Browse files
authored
browser(webkit): close crashed pages on exit (#2958)
1 parent 0aff9be commit 3189303

File tree

2 files changed

+39
-9
lines changed

2 files changed

+39
-9
lines changed

browser_patches/webkit/BUILD_NUMBER

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
1306
2-
Changed: [email protected] Wed Jul 8 18:31:52 PDT 2020
1+
1307
2+
Changed: [email protected] Wed Jul 15 10:44:00 PDT 2020

browser_patches/webkit/patches/bootstrap.diff

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9803,10 +9803,10 @@ index 0000000000000000000000000000000000000000..f356c613945fd263889bc74166bef2b2
98039803
+} // namespace WebKit
98049804
diff --git a/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp
98059805
new file mode 100644
9806-
index 0000000000000000000000000000000000000000..cea80a8f37fe56b3dc6eb3b36744c70c43a74282
9806+
index 0000000000000000000000000000000000000000..012629e3d4e4b892a8c23c3984ab30409b9c2b1a
98079807
--- /dev/null
98089808
+++ b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp
9809-
@@ -0,0 +1,819 @@
9809+
@@ -0,0 +1,821 @@
98109810
+/*
98119811
+ * Copyright (C) 2019 Microsoft Corporation.
98129812
+ *
@@ -10242,11 +10242,13 @@ index 0000000000000000000000000000000000000000..cea80a8f37fe56b3dc6eb3b36744c70c
1024210242
+void InspectorPlaywrightAgent::close(Ref<CloseCallback>&& callback)
1024310243
+{
1024410244
+ Vector<WebPageProxy*> pages;
10245-
+ for (auto& pool : WebProcessPool::allProcessPools()) {
10246-
+ for (auto& process : pool->processes()) {
10247-
+ for (auto* page : process->pages())
10248-
+ pages.append(page);
10249-
+ }
10245+
+ // If Web Process crashed it will be disconnected from its pool until
10246+
+ // the page reloads. So we cannot discover such processes and the pages
10247+
+ // by traversing all process pools and their processes. Instead we look at
10248+
+ // all existing Web Processes wether in a pool or not.
10249+
+ for (auto* process : WebProcessProxy::allProcessesForInspector()) {
10250+
+ for (auto* page : process->pages())
10251+
+ pages.append(page);
1025010252
+ }
1025110253
+ for (auto* page : pages)
1025210254
+ page->closePage();
@@ -12285,6 +12287,34 @@ index 7a10eab7a8637b7c35471fe71098f4bc83298171..b3ba8f5734d9ec539e8ecf5756ee4e1b
1228512287
#endif
1228612288

1228712289
bool m_memoryCacheDisabled { false };
12290+
diff --git a/Source/WebKit/UIProcess/WebProcessProxy.cpp b/Source/WebKit/UIProcess/WebProcessProxy.cpp
12291+
index ab1e837ddb4042cb9c2c969d6a2a918ab2cc0817..f04d862c4f703c4bc4c3b892878b4d4daf378559 100644
12292+
--- a/Source/WebKit/UIProcess/WebProcessProxy.cpp
12293+
+++ b/Source/WebKit/UIProcess/WebProcessProxy.cpp
12294+
@@ -115,6 +115,11 @@ static HashMap<ProcessIdentifier, WebProcessProxy*>& allProcesses()
12295+
return map;
12296+
}
12297+
12298+
+Vector<WebProcessProxy*> WebProcessProxy::allProcessesForInspector()
12299+
+{
12300+
+ return copyToVector(allProcesses().values());
12301+
+}
12302+
+
12303+
WebProcessProxy* WebProcessProxy::processForIdentifier(ProcessIdentifier identifier)
12304+
{
12305+
return allProcesses().get(identifier);
12306+
diff --git a/Source/WebKit/UIProcess/WebProcessProxy.h b/Source/WebKit/UIProcess/WebProcessProxy.h
12307+
index b1fb0ffb2ebed809af665955d16b5546b6f05fef..87e24456952e58846c6bbc3fe76466b7222b2e5d 100644
12308+
--- a/Source/WebKit/UIProcess/WebProcessProxy.h
12309+
+++ b/Source/WebKit/UIProcess/WebProcessProxy.h
12310+
@@ -131,6 +131,7 @@ public:
12311+
~WebProcessProxy();
12312+
12313+
static void forWebPagesWithOrigin(PAL::SessionID, const WebCore::SecurityOriginData&, const Function<void(WebPageProxy&)>&);
12314+
+ static Vector<WebProcessProxy*> allProcessesForInspector();
12315+
12316+
WebConnection* webConnection() const { return m_webConnection.get(); }
12317+
1228812318
diff --git a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp b/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
1228912319
index ce9bd7f8b84119d90a838b5afee04b8bf79e2dd2..add34235c20d4b20f001baa4a977496b2e4eb661 100644
1229012320
--- a/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp

0 commit comments

Comments
 (0)