Skip to content

Commit 7dc9695

Browse files
author
Jessie Berlin
committed
WebKit2: Need a way to keep the WebProcess alive for testing purposes.
https://bugs.webkit.org/show_bug.cgi?id=58592 Reviewed by Sam Weinig. * UIProcess/API/C/WKContext.cpp: (WKContextDisableProcessTermination): (WKContextEnableProcessTermination): * UIProcess/API/C/WKContextPrivate.h: * UIProcess/WebContext.cpp: (WebKit::WebContext::WebContext): Initialize m_processTerminationEnabled to true. (WebKit::WebContext::enableProcessTermination): Set m_processTerminationEnabled to true, and try to terminate the web process. (WebKit::WebContext::shouldTerminate): If !m_processTerminationEnabled, return false. * UIProcess/WebContext.h: (WebKit::WebContext::disableProcessTermination): Set m_processTerminationEnabled to false; Canonical link: https://commits.webkit.org/73742@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@83988 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 979093c commit 7dc9695

5 files changed

Lines changed: 54 additions & 0 deletions

File tree

Source/WebKit2/ChangeLog

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1+
2011-04-15 Jessie Berlin <jberlin@apple.com>
2+
3+
Reviewed by Sam Weinig.
4+
5+
WebKit2: Need a way to keep the WebProcess alive for testing purposes.
6+
https://bugs.webkit.org/show_bug.cgi?id=58592
7+
8+
* UIProcess/API/C/WKContext.cpp:
9+
(WKContextDisableProcessTermination):
10+
(WKContextEnableProcessTermination):
11+
* UIProcess/API/C/WKContextPrivate.h:
12+
13+
* UIProcess/WebContext.cpp:
14+
(WebKit::WebContext::WebContext):
15+
Initialize m_processTerminationEnabled to true.
16+
(WebKit::WebContext::enableProcessTermination):
17+
Set m_processTerminationEnabled to true, and try to terminate the web process.
18+
(WebKit::WebContext::shouldTerminate):
19+
If !m_processTerminationEnabled, return false.
20+
* UIProcess/WebContext.h:
21+
(WebKit::WebContext::disableProcessTermination):
22+
Set m_processTerminationEnabled to false;
23+
124
2011-04-15 Nancy Piedra <nancy.piedra@nokia.com>
225

326
Reviewed by Laszlo Gombos.

Source/WebKit2/UIProcess/API/C/WKContext.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,3 +217,13 @@ void WKContextSetLocalStorageDirectory(WKContextRef contextRef, WKStringRef loca
217217
{
218218
toImpl(contextRef)->setLocalStorageDirectory(toImpl(localStorageDirectory)->string());
219219
}
220+
221+
void WKContextDisableProcessTermination(WKContextRef contextRef)
222+
{
223+
toImpl(contextRef)->disableProcessTermination();
224+
}
225+
226+
void WKContextEnableProcessTermination(WKContextRef contextRef)
227+
{
228+
toImpl(contextRef)->enableProcessTermination();
229+
}

Source/WebKit2/UIProcess/API/C/WKContextPrivate.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ WK_EXPORT void WKContextSetIconDatabasePath(WKContextRef context, WKStringRef ic
6161
WK_EXPORT void WKContextSetDatabaseDirectory(WKContextRef context, WKStringRef databaseDirectory);
6262
WK_EXPORT void WKContextSetLocalStorageDirectory(WKContextRef context, WKStringRef localStorageDirectory);
6363

64+
// FIXME: This is a workaround for testing purposes only and should be removed once a better
65+
// solution has been found for testing.
66+
WK_EXPORT void WKContextDisableProcessTermination(WKContextRef context);
67+
WK_EXPORT void WKContextEnableProcessTermination(WKContextRef context);
68+
6469
#ifdef __cplusplus
6570
}
6671
#endif

Source/WebKit2/UIProcess/WebContext.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ WebContext::WebContext(ProcessModel processModel, const String& injectedBundlePa
126126
, m_shouldPaintNativeControls(true)
127127
, m_initialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicyAlways)
128128
#endif
129+
, m_processTerminationEnabled(true)
129130
{
130131
#ifndef NDEBUG
131132
WebKit::initializeLogChannelsIfNecessary();
@@ -261,11 +262,21 @@ void WebContext::ensureWebProcess()
261262
m_pendingMessagesToPostToInjectedBundle.clear();
262263
}
263264

265+
void WebContext::enableProcessTermination()
266+
{
267+
m_processTerminationEnabled = true;
268+
if (shouldTerminate(m_process.get()))
269+
m_process->terminate();
270+
}
271+
264272
bool WebContext::shouldTerminate(WebProcessProxy* process)
265273
{
266274
// FIXME: Once we support multiple processes per context, this assertion won't hold.
267275
ASSERT(process == m_process);
268276

277+
if (!m_processTerminationEnabled)
278+
return false;
279+
269280
if (!m_downloads.isEmpty())
270281
return false;
271282

Source/WebKit2/UIProcess/WebContext.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ class WebContext : public APIObject {
168168

169169
bool shouldTerminate(WebProcessProxy*);
170170

171+
void disableProcessTermination() { m_processTerminationEnabled = false; }
172+
void enableProcessTermination();
173+
171174
private:
172175
WebContext(ProcessModel, const String& injectedBundlePath);
173176

@@ -260,6 +263,8 @@ class WebContext : public APIObject {
260263
String m_overrideDatabaseDirectory;
261264
String m_overrideIconDatabasePath;
262265
String m_overrideLocalStorageDirectory;
266+
267+
bool m_processTerminationEnabled;
263268
};
264269

265270
template<typename U> inline bool WebContext::sendToAllProcesses(const U& message)

0 commit comments

Comments
 (0)