void StorageAreaImpl::setItem(const String& key, const String& value, ExceptionCode& ec, Frame* frame) { ASSERT(!m_isShutdown); ASSERT(!value.isNull()); blockUntilImportComplete(); if (privateBrowsingEnabled(frame)) { ec = QUOTA_EXCEEDED_ERR; return; } String oldValue; bool quotaException; RefPtr<StorageMap> newMap = m_storageMap->setItem(key, value, oldValue, quotaException); if (quotaException) { ec = QUOTA_EXCEEDED_ERR; return; } if (newMap) m_storageMap = newMap.release(); // Only notify the client if an item was actually changed if (oldValue != value) { if (m_storageAreaSync) m_storageAreaSync->scheduleItemForSync(key, value); StorageEventDispatcher::dispatch(key, oldValue, value, m_storageType, m_securityOrigin.get(), frame); } }
void WebPreferences::removePage(WebPageProxy& webPageProxy) { ASSERT(m_pages.contains(&webPageProxy)); m_pages.remove(&webPageProxy); if (privateBrowsingEnabled()) { --privateBrowsingPageCount; if (!privateBrowsingPageCount) WebContext::willStopUsingPrivateBrowsing(); } }
void WebPreferences::addPage(WebPageProxy& webPageProxy) { ASSERT(!m_pages.contains(&webPageProxy)); m_pages.add(&webPageProxy); if (privateBrowsingEnabled()) { if (!privateBrowsingPageCount) WebContext::willStartUsingPrivateBrowsing(); ++privateBrowsingPageCount; } }
void StorageAreaImpl::clear(Frame* frame) { ASSERT(!m_isShutdown); blockUntilImportComplete(); if (privateBrowsingEnabled(frame)) return; unsigned quota = m_storageMap->quota(); m_storageMap = StorageMap::create(quota); if (m_storageAreaSync) m_storageAreaSync->scheduleClear(); StorageEventDispatcher::dispatch(String(), String(), String(), m_storageType, m_securityOrigin.get(), frame); }
void StorageAreaImpl::removeItem(const String& key, Frame* frame) { ASSERT(!m_isShutdown); blockUntilImportComplete(); if (privateBrowsingEnabled(frame)) return; String oldValue; RefPtr<StorageMap> newMap = m_storageMap->removeItem(key, oldValue); if (newMap) m_storageMap = newMap.release(); // Only notify the client if an item was actually removed if (!oldValue.isNull()) { if (m_storageAreaSync) m_storageAreaSync->scheduleItemForSync(key, String()); StorageEventDispatcher::dispatch(key, oldValue, String(), m_storageType, m_securityOrigin.get(), frame); } }