void WebPluginSiteDataManager::didClearSiteDataForSinglePlugin(uint64_t callbackID) { ClearSiteDataState* state = m_pendingClearSiteData.get(callbackID); ASSERT(state); state->didClearSiteDataForSinglePlugin(); }
void WebPluginSiteDataManager::clearSiteData(ImmutableArray* sites, uint64_t flags, uint64_t maxAgeInSeconds, PassRefPtr<VoidCallback> prpCallback) { RefPtr<VoidCallback> callback = prpCallback; if (!m_webContext) { callback->invalidate(); return; } Vector<String> sitesVector; // If the array is empty, don't do anything. if (sites) { if (!sites->size()) { callback->performCallback(); return; } for (size_t i = 0; i < sites->size(); ++i) { if (WebString* site = sites->at<WebString>(i)) sitesVector.append(site->string()); } } uint64_t callbackID = callback->callbackID(); m_voidCallbacks.set(callbackID, callback.release()); ASSERT(!m_pendingClearSiteData.contains(callbackID)); ClearSiteDataState* state = new ClearSiteDataState(this, sitesVector, flags, maxAgeInSeconds, callbackID); m_pendingClearSiteData.set(callbackID, adoptPtr(state)); state->clearSiteDataForNextPlugin(); }
void WebPluginSiteDataManager::clearSiteData(ImmutableArray* sites, uint64_t flags, uint64_t maxAgeInSeconds, PassRefPtr<VoidCallback> prpCallback) { RefPtr<VoidCallback> callback = prpCallback; if (!m_webContext) { callback->invalidate(); return; } Vector<String> sitesVector; // If the array is empty, don't do anything. if (sites) { if (!sites->size()) { callback->performCallback(); return; } for (size_t i = 0; i < sites->size(); ++i) { if (WebString* site = sites->at<WebString>(i)) sitesVector.append(site->string()); } } uint64_t callbackID = callback->callbackID(); m_voidCallbacks.set(callbackID, callback.release()); #if ENABLE(PLUGIN_PROCESS) ASSERT(!m_pendingClearSiteData.contains(callbackID)); ClearSiteDataState* state = new ClearSiteDataState(this, sitesVector, flags, maxAgeInSeconds, callbackID); m_pendingClearSiteData.set(callbackID, state); state->clearSiteDataForNextPlugin(); #else m_webContext->relaunchProcessIfNecessary(); Vector<PluginModuleInfo> plugins = m_webContext->pluginInfoStore().plugins(); Vector<String> pluginPaths; for (size_t i = 0; i < plugins.size(); ++i) pluginPaths.append(plugins[i].path); ASSERT(m_webContext->processModel() == ProcessModelSharedSecondaryProcess); // Plugin process is required for multiple WebProcess mode. m_webContext->sendToAllProcessesRelaunchingThemIfNecessary(Messages::WebProcess::ClearPluginSiteData(pluginPaths, sitesVector, flags, maxAgeInSeconds, callbackID)); #endif }
void WebPluginSiteDataManager::clearSiteData(ImmutableArray* sites, uint64_t flags, uint64_t maxAgeInSeconds, PassRefPtr<VoidCallback> prpCallback) { RefPtr<VoidCallback> callback = prpCallback; if (!m_webContext) { callback->invalidate(); return; } Vector<String> sitesVector; // If the array is empty, don't do anything. if (sites) { if (!sites->size()) { callback->performCallback(); return; } for (size_t i = 0; i < sites->size(); ++i) { if (WebString* site = sites->at<WebString>(i)) sitesVector.append(site->string()); } } uint64_t callbackID = callback->callbackID(); m_voidCallbacks.set(callbackID, callback.release()); #if ENABLE(PLUGIN_PROCESS) ASSERT(!m_pendingClearSiteData.contains(callbackID)); ClearSiteDataState* state = new ClearSiteDataState(this, sitesVector, flags, maxAgeInSeconds, callbackID); m_pendingClearSiteData.set(callbackID, state); state->clearSiteDataForNextPlugin(); #else m_webContext->relaunchProcessIfNecessary(); Vector<String> pluginPaths; m_webContext->pluginInfoStore()->getPluginPaths(pluginPaths); m_webContext->ensureWebProcess(); m_webContext->process()->send(Messages::WebProcess::ClearPluginSiteData(pluginPaths, sitesVector, flags, maxAgeInSeconds, callbackID), 0); #endif }