Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
2011-04-13 Anders Carlsson <andersca@apple.com>
        Reviewed by Adam Roben.

        Convert WebProcess over to using disableTermination/enableTermination
        https://bugs.webkit.org/show_bug.cgi?id=58485

        * PluginProcess/PluginProcess.cpp:
        (WebKit::PluginProcess::getSitesWithData):
        (WebKit::PluginProcess::clearSiteData):
        Use the LocalTerminationDisabler RAII class.

        * Shared/ChildProcess.h:
        (WebKit::ChildProcess::LocalTerminationDisabler::LocalTerminationDisabler):
        (WebKit::ChildProcess::LocalTerminationDisabler::~LocalTerminationDisabler):
        Add RAII class for calling disableTermination/enableTermination.

        * WebProcess/ApplicationCache/WebApplicationCacheManager.cpp:
        (WebKit::WebApplicationCacheManager::getApplicationCacheOrigins):
        (WebKit::WebApplicationCacheManager::deleteEntriesForOrigin):
        (WebKit::WebApplicationCacheManager::deleteAllEntries):
        Use the LocalTerminationDisabler RAII class.

        * WebProcess/Cookies/WebCookieManager.cpp:
        (WebKit::WebCookieManager::getHostnamesWithCookies):
        (WebKit::WebCookieManager::deleteCookiesForHostname):
        (WebKit::WebCookieManager::deleteAllCookies):
        (WebKit::WebCookieManager::startObservingCookieChanges):
        (WebKit::WebCookieManager::setHTTPCookieAcceptPolicy):
        (WebKit::WebCookieManager::getHTTPCookieAcceptPolicy):
        Use the LocalTerminationDisabler RAII class.

        * WebProcess/Downloads/Download.cpp:
        (WebKit::Download::Download):
        Call disableTermination().

        (WebKit::Download::~Download):
        Call enableTermination().

        * WebProcess/Downloads/DownloadManager.cpp:
        (WebKit::DownloadManager::downloadFinished):
        Remove call to terminateIfPossible.

        * WebProcess/KeyValueStorage/WebKeyValueStorageManager.cpp:
        (WebKit::WebKeyValueStorageManager::getKeyValueStorageOrigins):
        (WebKit::WebKeyValueStorageManager::deleteEntriesForOrigin):
        (WebKit::WebKeyValueStorageManager::deleteAllEntries):
        Use the LocalTerminationDisabler RAII class.

        * WebProcess/MediaCache/WebMediaCacheManager.cpp:
        (WebKit::WebMediaCacheManager::getHostnamesWithMediaCache):
        (WebKit::WebMediaCacheManager::clearCacheForHostname):
        (WebKit::WebMediaCacheManager::clearCacheForAllHostnames):
        Use the LocalTerminationDisabler RAII class.

        * WebProcess/ResourceCache/WebResourceCacheManager.cpp:
        (WebKit::WebResourceCacheManager::getCacheOrigins):
        (WebKit::WebResourceCacheManager::clearCacheForOrigin):
        (WebKit::WebResourceCacheManager::clearCacheForAllOrigins):
        Use the LocalTerminationDisabler RAII class.

        * WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
        (WebKit::WebDatabaseManager::getDatabasesByOrigin):
        (WebKit::WebDatabaseManager::getDatabaseOrigins):
        (WebKit::WebDatabaseManager::deleteDatabaseWithNameForOrigin):
        (WebKit::WebDatabaseManager::deleteDatabasesForOrigin):
        (WebKit::WebDatabaseManager::deleteAllDatabases):
        (WebKit::WebDatabaseManager::setQuotaForOrigin):
        Use the LocalTerminationDisabler RAII class.

        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::createWebPage):
        Call disableTermination().

        (WebKit::WebProcess::removeWebPage):
        Call enableTermination().

        (WebKit::WebProcess::shouldTerminate):
        Move logic from terminateIfPossible over here.

        (WebKit::WebProcess::terminate):
        Move logic from terminateIfPossible over here.

        (WebKit::WebProcess::getSitesWithPluginData):
        (WebKit::WebProcess::clearPluginSiteData):
        Use the LocalTerminationDisabler RAII class.

        * WebProcess/WebProcess.h:
        Publically inherit from ChildProcess, LocalTerminationDisabler needs to be accessible
        from the WebProcess class.


Canonical link: https://commits.webkit.org/73531@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@83774 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
Anders Carlsson committed Apr 13, 2011
1 parent ef792be commit c22e8e8
Show file tree
Hide file tree
Showing 13 changed files with 182 additions and 59 deletions.
91 changes: 91 additions & 0 deletions Source/WebKit2/ChangeLog
@@ -1,3 +1,94 @@
2011-04-13 Anders Carlsson <andersca@apple.com>

Reviewed by Adam Roben.

Convert WebProcess over to using disableTermination/enableTermination
https://bugs.webkit.org/show_bug.cgi?id=58485

* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::getSitesWithData):
(WebKit::PluginProcess::clearSiteData):
Use the LocalTerminationDisabler RAII class.

* Shared/ChildProcess.h:
(WebKit::ChildProcess::LocalTerminationDisabler::LocalTerminationDisabler):
(WebKit::ChildProcess::LocalTerminationDisabler::~LocalTerminationDisabler):
Add RAII class for calling disableTermination/enableTermination.

* WebProcess/ApplicationCache/WebApplicationCacheManager.cpp:
(WebKit::WebApplicationCacheManager::getApplicationCacheOrigins):
(WebKit::WebApplicationCacheManager::deleteEntriesForOrigin):
(WebKit::WebApplicationCacheManager::deleteAllEntries):
Use the LocalTerminationDisabler RAII class.

* WebProcess/Cookies/WebCookieManager.cpp:
(WebKit::WebCookieManager::getHostnamesWithCookies):
(WebKit::WebCookieManager::deleteCookiesForHostname):
(WebKit::WebCookieManager::deleteAllCookies):
(WebKit::WebCookieManager::startObservingCookieChanges):
(WebKit::WebCookieManager::setHTTPCookieAcceptPolicy):
(WebKit::WebCookieManager::getHTTPCookieAcceptPolicy):
Use the LocalTerminationDisabler RAII class.

* WebProcess/Downloads/Download.cpp:
(WebKit::Download::Download):
Call disableTermination().

(WebKit::Download::~Download):
Call enableTermination().

* WebProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::downloadFinished):
Remove call to terminateIfPossible.

* WebProcess/KeyValueStorage/WebKeyValueStorageManager.cpp:
(WebKit::WebKeyValueStorageManager::getKeyValueStorageOrigins):
(WebKit::WebKeyValueStorageManager::deleteEntriesForOrigin):
(WebKit::WebKeyValueStorageManager::deleteAllEntries):
Use the LocalTerminationDisabler RAII class.

* WebProcess/MediaCache/WebMediaCacheManager.cpp:
(WebKit::WebMediaCacheManager::getHostnamesWithMediaCache):
(WebKit::WebMediaCacheManager::clearCacheForHostname):
(WebKit::WebMediaCacheManager::clearCacheForAllHostnames):
Use the LocalTerminationDisabler RAII class.

* WebProcess/ResourceCache/WebResourceCacheManager.cpp:
(WebKit::WebResourceCacheManager::getCacheOrigins):
(WebKit::WebResourceCacheManager::clearCacheForOrigin):
(WebKit::WebResourceCacheManager::clearCacheForAllOrigins):
Use the LocalTerminationDisabler RAII class.

* WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
(WebKit::WebDatabaseManager::getDatabasesByOrigin):
(WebKit::WebDatabaseManager::getDatabaseOrigins):
(WebKit::WebDatabaseManager::deleteDatabaseWithNameForOrigin):
(WebKit::WebDatabaseManager::deleteDatabasesForOrigin):
(WebKit::WebDatabaseManager::deleteAllDatabases):
(WebKit::WebDatabaseManager::setQuotaForOrigin):
Use the LocalTerminationDisabler RAII class.

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::createWebPage):
Call disableTermination().

(WebKit::WebProcess::removeWebPage):
Call enableTermination().

(WebKit::WebProcess::shouldTerminate):
Move logic from terminateIfPossible over here.

(WebKit::WebProcess::terminate):
Move logic from terminateIfPossible over here.

(WebKit::WebProcess::getSitesWithPluginData):
(WebKit::WebProcess::clearPluginSiteData):
Use the LocalTerminationDisabler RAII class.

* WebProcess/WebProcess.h:
Publically inherit from ChildProcess, LocalTerminationDisabler needs to be accessible
from the WebProcess class.

2011-04-13 Steve Falkenburg <sfalken@apple.com>

Reviewed by Adam Roben.
Expand Down
8 changes: 2 additions & 6 deletions Source/WebKit2/PluginProcess/PluginProcess.cpp
Expand Up @@ -167,20 +167,18 @@ void PluginProcess::createWebProcessConnection()

void PluginProcess::getSitesWithData(uint64_t callbackID)
{
disableTermination();
LocalTerminationDisabler terminationDisabler(*this);

Vector<String> sites;
if (NetscapePluginModule* module = netscapePluginModule())
sites = module->sitesWithData();

m_connection->send(Messages::PluginProcessProxy::DidGetSitesWithData(sites, callbackID), 0);

enableTermination();
}

void PluginProcess::clearSiteData(const Vector<String>& sites, uint64_t flags, uint64_t maxAgeInSeconds, uint64_t callbackID)
{
disableTermination();
LocalTerminationDisabler terminationDisabler(*this);

if (NetscapePluginModule* module = netscapePluginModule()) {
if (sites.isEmpty()) {
Expand All @@ -193,8 +191,6 @@ void PluginProcess::clearSiteData(const Vector<String>& sites, uint64_t flags, u
}

m_connection->send(Messages::PluginProcessProxy::DidClearSiteData(callbackID), 0);

enableTermination();
}

} // namespace WebKit
Expand Down
17 changes: 17 additions & 0 deletions Source/WebKit2/Shared/ChildProcess.h
Expand Up @@ -40,6 +40,23 @@ class ChildProcess : protected CoreIPC::Connection::Client {
void disableTermination();
void enableTermination();

class LocalTerminationDisabler {
public:
explicit LocalTerminationDisabler(ChildProcess& childProcess)
: m_childProcess(childProcess)
{
m_childProcess.disableTermination();
}

~LocalTerminationDisabler()
{
m_childProcess.enableTermination();
}

private:
ChildProcess& m_childProcess;
};

protected:
explicit ChildProcess(double terminationTimeout);
~ChildProcess();
Expand Down
Expand Up @@ -56,6 +56,8 @@ void WebApplicationCacheManager::didReceiveMessage(CoreIPC::Connection* connecti

void WebApplicationCacheManager::getApplicationCacheOrigins(uint64_t callbackID)
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

HashSet<RefPtr<SecurityOrigin>, SecurityOriginHash> origins;

#if ENABLE(OFFLINE_WEB_APPLICATIONS)
Expand All @@ -79,27 +81,28 @@ void WebApplicationCacheManager::getApplicationCacheOrigins(uint64_t callbackID)
}

WebProcess::shared().connection()->send(Messages::WebApplicationCacheManagerProxy::DidGetApplicationCacheOrigins(identifiers, callbackID), 0);
WebProcess::shared().terminateIfPossible();
}

void WebApplicationCacheManager::deleteEntriesForOrigin(const SecurityOriginData& originData)
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

#if ENABLE(OFFLINE_WEB_APPLICATIONS)
RefPtr<SecurityOrigin> origin = SecurityOrigin::create(originData.protocol, originData.host, originData.port);
if (!origin)
return;

ApplicationCache::deleteCacheForOrigin(origin.get());
#endif
WebProcess::shared().terminateIfPossible();
}

void WebApplicationCacheManager::deleteAllEntries()
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

#if ENABLE(OFFLINE_WEB_APPLICATIONS)
cacheStorage().deleteAllEntries();
#endif
WebProcess::shared().terminateIfPossible();
}

} // namespace WebKit
16 changes: 10 additions & 6 deletions Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp
Expand Up @@ -54,6 +54,8 @@ void WebCookieManager::didReceiveMessage(CoreIPC::Connection* connection, CoreIP

void WebCookieManager::getHostnamesWithCookies(uint64_t callbackID)
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

HashSet<String> hostnames;

WebCore::getHostnamesWithCookies(hostnames);
Expand All @@ -62,25 +64,27 @@ void WebCookieManager::getHostnamesWithCookies(uint64_t callbackID)
copyToVector(hostnames, hostnameList);

WebProcess::shared().connection()->send(Messages::WebCookieManagerProxy::DidGetHostnamesWithCookies(hostnameList, callbackID), 0);
WebProcess::shared().terminateIfPossible();
}

void WebCookieManager::deleteCookiesForHostname(const String& hostname)
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

WebCore::deleteCookiesForHostname(hostname);
WebProcess::shared().terminateIfPossible();
}

void WebCookieManager::deleteAllCookies()
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

WebCore::deleteAllCookies();
WebProcess::shared().terminateIfPossible();
}

void WebCookieManager::startObservingCookieChanges()
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

WebCore::startObservingCookieChanges();
WebProcess::shared().terminateIfPossible();
}

void WebCookieManager::stopObservingCookieChanges()
Expand All @@ -95,14 +99,14 @@ void WebCookieManager::dispatchCookiesDidChange()

void WebCookieManager::setHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy)
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());
platformSetHTTPCookieAcceptPolicy(policy);
WebProcess::shared().terminateIfPossible();
}

void WebCookieManager::getHTTPCookieAcceptPolicy(uint64_t callbackID)
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());
WebProcess::shared().connection()->send(Messages::WebCookieManagerProxy::DidGetHTTPCookieAcceptPolicy(platformGetHTTPCookieAcceptPolicy(), callbackID), 0);
WebProcess::shared().terminateIfPossible();
}

} // namespace WebKit
4 changes: 4 additions & 0 deletions Source/WebKit2/WebProcess/Downloads/Download.cpp
Expand Up @@ -52,11 +52,15 @@ Download::Download(uint64_t downloadID, const ResourceRequest& request)
#endif
{
ASSERT(m_downloadID);

WebProcess::shared().disableTermination();
}

Download::~Download()
{
platformInvalidate();

WebProcess::shared().enableTermination();
}

CoreIPC::Connection* Download::connection() const
Expand Down
2 changes: 0 additions & 2 deletions Source/WebKit2/WebProcess/Downloads/DownloadManager.cpp
Expand Up @@ -77,8 +77,6 @@ void DownloadManager::downloadFinished(Download* download)
m_downloads.remove(download->downloadID());

delete download;

WebProcess::shared().terminateIfPossible();
}

} // namespace WebKit
Expand Up @@ -57,6 +57,8 @@ void WebKeyValueStorageManager::didReceiveMessage(CoreIPC::Connection* connectio

void WebKeyValueStorageManager::getKeyValueStorageOrigins(uint64_t callbackID)
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

Vector<RefPtr<SecurityOrigin> > coreOrigins;

StorageTracker::tracker().origins(coreOrigins);
Expand All @@ -76,23 +78,23 @@ void WebKeyValueStorageManager::getKeyValueStorageOrigins(uint64_t callbackID)
}

WebProcess::shared().connection()->send(Messages::WebKeyValueStorageManagerProxy::DidGetKeyValueStorageOrigins(identifiers, callbackID), 0);
WebProcess::shared().terminateIfPossible();
}

void WebKeyValueStorageManager::deleteEntriesForOrigin(const SecurityOriginData& originData)
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

RefPtr<SecurityOrigin> origin = SecurityOrigin::create(originData.protocol, originData.host, originData.port);
if (!origin)
return;

StorageTracker::tracker().deleteOrigin(origin.get());
WebProcess::shared().terminateIfPossible();
}

void WebKeyValueStorageManager::deleteAllEntries()
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());
StorageTracker::tracker().deleteAllOrigins();
WebProcess::shared().terminateIfPossible();
}

} // namespace WebKit
9 changes: 6 additions & 3 deletions Source/WebKit2/WebProcess/MediaCache/WebMediaCacheManager.cpp
Expand Up @@ -53,30 +53,33 @@ void WebMediaCacheManager::didReceiveMessage(CoreIPC::Connection* connection, Co

void WebMediaCacheManager::getHostnamesWithMediaCache(uint64_t callbackID)
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

Vector<String> mediaCacheHostnames;

#if ENABLE(VIDEO)
HTMLMediaElement::getSitesInMediaCache(mediaCacheHostnames);
#endif

WebProcess::shared().connection()->send(Messages::WebMediaCacheManagerProxy::DidGetHostnamesWithMediaCache(mediaCacheHostnames, callbackID), 0);
WebProcess::shared().terminateIfPossible();
}

void WebMediaCacheManager::clearCacheForHostname(const String& hostname)
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

#if ENABLE(VIDEO)
HTMLMediaElement::clearMediaCacheForSite(hostname);
#endif
WebProcess::shared().terminateIfPossible();
}

void WebMediaCacheManager::clearCacheForAllHostnames()
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

#if ENABLE(VIDEO)
HTMLMediaElement::clearMediaCache();
#endif
WebProcess::shared().terminateIfPossible();
}

} // namespace WebKit
Expand Up @@ -63,6 +63,8 @@ void WebResourceCacheManager::didReceiveMessage(CoreIPC::Connection* connection,

void WebResourceCacheManager::getCacheOrigins(uint64_t callbackID) const
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

MemoryCache::SecurityOriginSet origins;
memoryCache()->getOriginsWithCache(origins);

Expand Down Expand Up @@ -94,11 +96,12 @@ void WebResourceCacheManager::getCacheOrigins(uint64_t callbackID) const
}

WebProcess::shared().connection()->send(Messages::WebResourceCacheManagerProxy::DidGetCacheOrigins(identifiers, callbackID), 0);
WebProcess::shared().terminateIfPossible();
}

void WebResourceCacheManager::clearCacheForOrigin(SecurityOriginData originData, uint32_t cachesToClear) const
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

#if USE(CFURLCACHE)
ResourceCachesToClear resourceCachesToClear = static_cast<ResourceCachesToClear>(cachesToClear);
#else
Expand All @@ -120,15 +123,15 @@ void WebResourceCacheManager::clearCacheForOrigin(SecurityOriginData originData,
clearCFURLCacheForHostNames(hostArray.get());
}
#endif
WebProcess::shared().terminateIfPossible();
}

void WebResourceCacheManager::clearCacheForAllOrigins(uint32_t cachesToClear) const
{
WebProcess::LocalTerminationDisabler terminationDisabler(WebProcess::shared());

ResourceCachesToClear resourceCachesToClear = static_cast<ResourceCachesToClear>(cachesToClear);

WebProcess::shared().clearResourceCaches(resourceCachesToClear);
WebProcess::shared().terminateIfPossible();
}

} // namespace WebKit

0 comments on commit c22e8e8

Please sign in to comment.