Source/WebKit2/ChangeLog

 12011-04-14 Jessie Berlin <jberlin@apple.com>
 2
 3 Reviewed by NOBODY (OOPS!).
 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 (WKContextSetWebProcessCanTerminateEarly):
 10 Call through to the WebContext.
 11 * UIProcess/API/C/WKContextPrivate.h:
 12
 13 * UIProcess/WebContext.cpp:
 14 (WebKit::WebContext::WebContext):
 15 Initialize m_webProcessCanTerminateEarly to true.
 16 (WebKit::WebContext::setWebProcessCanTerminateEarly):
 17 If the web process is allowed to terminate early and shouldTerminate returns true, tell the
 18 WebProcess to terminate.
 19 (WebKit::WebContext::shouldTerminate):
 20 Return false if the web process is not allowed to terminate early.
 21 * UIProcess/WebContext.h:
 22
1232011-04-14 Anders Carlsson <andersca@apple.com>
224
325 Reviewed by Dan Bernstein.
83906

Source/WebKit2/UIProcess/WebContext.cpp

@@WebContext::WebContext(ProcessModel proc
126126 , m_shouldPaintNativeControls(true)
127127 , m_initialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicyAlways)
128128#endif
 129 , m_webProcessCanTerminateEarly(true)
129130{
130131#ifndef NDEBUG
131132 WebKit::initializeLogChannelsIfNecessary();

@@void WebContext::ensureWebProcess()
261262 m_pendingMessagesToPostToInjectedBundle.clear();
262263}
263264
 265void WebContext::setWebProcessCanTerminateEarly(bool allowed)
 266{
 267 m_webProcessCanTerminateEarly = allowed;
 268 if (shouldTerminate(m_process.get()))
 269 m_process->terminate();
 270}
 271
264272bool 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_webProcessCanTerminateEarly)
 278 return false;
 279
269280 if (!m_downloads.isEmpty())
270281 return false;
271282
83869

Source/WebKit2/UIProcess/WebContext.h

@@public:
168168
169169 bool shouldTerminate(WebProcessProxy*);
170170
 171 void setWebProcessCanTerminateEarly(bool);
 172
171173private:
172174 WebContext(ProcessModel, const String& injectedBundlePath);
173175

@@private:
260262 String m_overrideDatabaseDirectory;
261263 String m_overrideIconDatabasePath;
262264 String m_overrideLocalStorageDirectory;
 265 bool m_webProcessCanTerminateEarly;
263266};
264267
265268template<typename U> inline bool WebContext::sendToAllProcesses(const U& message)
83869

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

@@void WKContextSetLocalStorageDirectory(W
217217{
218218 toImpl(contextRef)->setLocalStorageDirectory(toImpl(localStorageDirectory)->string());
219219}
 220
 221void WKContextSetWebProcessCanTerminateEarly(WKContextRef contextRef, bool canTerminate)
 222{
 223 toImpl(contextRef)->setWebProcessCanTerminateEarly(canTerminate);
 224}
83869

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

@@WK_EXPORT void WKContextSetIconDatabaseP
6161WK_EXPORT void WKContextSetDatabaseDirectory(WKContextRef context, WKStringRef databaseDirectory);
6262WK_EXPORT void WKContextSetLocalStorageDirectory(WKContextRef context, WKStringRef localStorageDirectory);
6363
 64// FIXME: This is a workaround for testing purposes only.
 65WK_EXPORT void WKContextSetWebProcessCanTerminateEarly(WKContextRef context, bool canTerminate);
 66
6467#ifdef __cplusplus
6568}
6669#endif
83869