diff options
Diffstat (limited to 'Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp | 49 |
1 files changed, 37 insertions, 12 deletions
diff --git a/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp b/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp index 22a41a12d..38299871c 100644 --- a/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp +++ b/Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Apple Inc. All rights reserved. + * Copyright (C) 2011, 2013 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -34,26 +34,42 @@ #include "WebResourceCacheManagerProxyMessages.h" #include "WebSecurityOrigin.h" +#if ENABLE(NETWORK_PROCESS) +#include "NetworkProcessMessages.h" +#endif + using namespace WebCore; namespace WebKit { +const char* WebResourceCacheManagerProxy::supplementName() +{ + return "WebResourceCacheManagerProxy"; +} + PassRefPtr<WebResourceCacheManagerProxy> WebResourceCacheManagerProxy::create(WebContext* webContext) { return adoptRef(new WebResourceCacheManagerProxy(webContext)); } WebResourceCacheManagerProxy::WebResourceCacheManagerProxy(WebContext* webContext) - : m_webContext(webContext) + : WebContextSupplement(webContext) { - m_webContext->addMessageReceiver(Messages::WebResourceCacheManagerProxy::messageReceiverName(), this); + WebContextSupplement::context()->addMessageReceiver(Messages::WebResourceCacheManagerProxy::messageReceiverName(), this); } WebResourceCacheManagerProxy::~WebResourceCacheManagerProxy() { } -void WebResourceCacheManagerProxy::invalidate() +// WebContextSupplement + +void WebResourceCacheManagerProxy::contextDestroyed() +{ + invalidateCallbackMap(m_arrayCallbacks); +} + +void WebResourceCacheManagerProxy::processDidClose(WebProcessProxy*) { invalidateCallbackMap(m_arrayCallbacks); } @@ -63,6 +79,16 @@ bool WebResourceCacheManagerProxy::shouldTerminate(WebProcessProxy*) const return m_arrayCallbacks.isEmpty(); } +void WebResourceCacheManagerProxy::refWebContextSupplement() +{ + APIObject::ref(); +} + +void WebResourceCacheManagerProxy::derefWebContextSupplement() +{ + APIObject::deref(); +} + void WebResourceCacheManagerProxy::getCacheOrigins(PassRefPtr<ArrayCallback> prpCallback) { RefPtr<ArrayCallback> callback = prpCallback; @@ -70,7 +96,7 @@ void WebResourceCacheManagerProxy::getCacheOrigins(PassRefPtr<ArrayCallback> prp m_arrayCallbacks.set(callbackID, callback.release()); // FIXME (Multi-WebProcess): <rdar://problem/12239765> When multi-process is enabled, we need to aggregate the callback data from all processes. - m_webContext->sendToAllProcessesRelaunchingThemIfNecessary(Messages::WebResourceCacheManager::GetCacheOrigins(callbackID)); + context()->sendToAllProcessesRelaunchingThemIfNecessary(Messages::WebResourceCacheManager::GetCacheOrigins(callbackID)); } void WebResourceCacheManagerProxy::didGetCacheOrigins(const Vector<SecurityOriginData>& origins, uint64_t callbackID) @@ -87,18 +113,17 @@ void WebResourceCacheManagerProxy::clearCacheForOrigin(WebSecurityOrigin* origin securityOrigin.port = origin->port(); // FIXME (Multi-WebProcess): <rdar://problem/12239765> There is no need to relaunch all processes. One process to take care of persistent cache is enough. - m_webContext->sendToAllProcessesRelaunchingThemIfNecessary(Messages::WebResourceCacheManager::ClearCacheForOrigin(securityOrigin, cachesToClear)); + context()->sendToAllProcessesRelaunchingThemIfNecessary(Messages::WebResourceCacheManager::ClearCacheForOrigin(securityOrigin, cachesToClear)); } void WebResourceCacheManagerProxy::clearCacheForAllOrigins(ResourceCachesToClear cachesToClear) { - // FIXME (Multi-WebProcess): <rdar://problem/12239765> There is no need to relaunch all processes. One process to take care of persistent cache is enough. - m_webContext->sendToAllProcessesRelaunchingThemIfNecessary(Messages::WebResourceCacheManager::ClearCacheForAllOrigins(cachesToClear)); -} +#if ENABLE(NETWORK_PROCESS) + context()->sendToNetworkingProcessRelaunchingIfNecessary(Messages::NetworkProcess::ClearCacheForAllOrigins(cachesToClear)); +#endif -void WebResourceCacheManagerProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder) -{ - didReceiveWebResourceCacheManagerProxyMessage(connection, messageID, decoder); + // FIXME (Multi-WebProcess): <rdar://problem/12239765> There is no need to relaunch all processes. One process to take care of persistent cache is enough. + context()->sendToAllProcessesRelaunchingThemIfNecessary(Messages::WebResourceCacheManager::ClearCacheForAllOrigins(cachesToClear)); } } // namespace WebKit |