- Revision
- 143273
- Author
- [email protected]
- Date
- 2013-02-18 16:03:57 -0800 (Mon, 18 Feb 2013)
Log Message
Add StorageManager member functions for keeping track of session storage namespaces
https://bugs.webkit.org/show_bug.cgi?id=110163
Reviewed by Andreas Kling.
* UIProcess/Storage/StorageManager.cpp:
(WebKit::StorageManager::createSessionStorageNamespace):
(WebKit):
(WebKit::StorageManager::destroySessionStorageNamespace):
(WebKit::StorageManager::cloneSessionStorageNamespace):
(WebKit::StorageManager::createSessionStorageNamespaceInternal):
(WebKit::StorageManager::destroySessionStorageNamespaceInternal):
(WebKit::StorageManager::cloneSessionStorageNamespaceInternal):
* UIProcess/Storage/StorageManager.h:
(StorageManager):
* UIProcess/WebContext.h:
(WebKit::WebContext::storageManager):
(WebContext):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::createNewPage):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (143272 => 143273)
--- trunk/Source/WebKit2/ChangeLog 2013-02-19 00:00:47 UTC (rev 143272)
+++ trunk/Source/WebKit2/ChangeLog 2013-02-19 00:03:57 UTC (rev 143273)
@@ -1,5 +1,30 @@
2013-02-18 Anders Carlsson <[email protected]>
+ Add StorageManager member functions for keeping track of session storage namespaces
+ https://bugs.webkit.org/show_bug.cgi?id=110163
+
+ Reviewed by Andreas Kling.
+
+ * UIProcess/Storage/StorageManager.cpp:
+ (WebKit::StorageManager::createSessionStorageNamespace):
+ (WebKit):
+ (WebKit::StorageManager::destroySessionStorageNamespace):
+ (WebKit::StorageManager::cloneSessionStorageNamespace):
+ (WebKit::StorageManager::createSessionStorageNamespaceInternal):
+ (WebKit::StorageManager::destroySessionStorageNamespaceInternal):
+ (WebKit::StorageManager::cloneSessionStorageNamespaceInternal):
+ * UIProcess/Storage/StorageManager.h:
+ (StorageManager):
+ * UIProcess/WebContext.h:
+ (WebKit::WebContext::storageManager):
+ (WebContext):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::WebPageProxy):
+ (WebKit::WebPageProxy::close):
+ (WebKit::WebPageProxy::createNewPage):
+
+2013-02-18 Anders Carlsson <[email protected]>
+
StorageManager message handlers should take the connection
https://bugs.webkit.org/show_bug.cgi?id=110151
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (143272 => 143273)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2013-02-19 00:00:47 UTC (rev 143272)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2013-02-19 00:03:57 UTC (rev 143273)
@@ -46,6 +46,21 @@
{
}
+void StorageManager::createSessionStorageNamespace(uint64_t storageNamespaceID)
+{
+ m_queue->dispatch(bind(&StorageManager::createSessionStorageNamespaceInternal, this, storageNamespaceID));
+}
+
+void StorageManager::destroySessionStorageNamespace(uint64_t storageNamespaceID)
+{
+ m_queue->dispatch(bind(&StorageManager::destroySessionStorageNamespace, this, storageNamespaceID));
+}
+
+void StorageManager::cloneSessionStorageNamespace(uint64_t storageNamespaceID, uint64_t newStorageNamespaceID)
+{
+ m_queue->dispatch(bind(&StorageManager::cloneSessionStorageNamespace, this, storageNamespaceID, newStorageNamespaceID));
+}
+
void StorageManager::processWillOpenConnection(WebProcessProxy* webProcessProxy)
{
webProcessProxy->connection()->addWorkQueueMessageReceiver(Messages::StorageManager::messageReceiverName(), m_queue.get(), this);
@@ -71,4 +86,19 @@
// FIXME: Implement this.
}
+void StorageManager::createSessionStorageNamespaceInternal(uint64_t storageNamespaceID)
+{
+ // FIXME: Implement.
+}
+
+void StorageManager::destroySessionStorageNamespaceInternal(uint64_t storageNamespaceID)
+{
+ // FIXME: Implement.
+}
+
+void StorageManager::cloneSessionStorageNamespaceInternal(uint64_t storageNamespaceID, uint64_t newStorageNamespaceID)
+{
+ // FIXME: Implement.
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h (143272 => 143273)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h 2013-02-19 00:00:47 UTC (rev 143272)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h 2013-02-19 00:03:57 UTC (rev 143273)
@@ -43,6 +43,10 @@
static PassRefPtr<StorageManager> create();
~StorageManager();
+ void createSessionStorageNamespace(uint64_t storageNamespaceID);
+ void destroySessionStorageNamespace(uint64_t storageNamespaceID);
+ void cloneSessionStorageNamespace(uint64_t storageNamespaceID, uint64_t newStorageNamespaceID);
+
void processWillOpenConnection(WebProcessProxy*);
void processWillCloseConnection(WebProcessProxy*);
@@ -58,6 +62,10 @@
void destroyStorageArea(CoreIPC::Connection*, uint64_t storageAreaID);
void getValues(CoreIPC::Connection*, uint64_t storageAreaID, HashMap<String, String>& values);
+ void createSessionStorageNamespaceInternal(uint64_t storageNamespaceID);
+ void destroySessionStorageNamespaceInternal(uint64_t storageNamespaceID);
+ void cloneSessionStorageNamespaceInternal(uint64_t storageNamespaceID, uint64_t newStorageNamespaceID);
+
RefPtr<WorkQueue> m_queue;
};
Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (143272 => 143273)
--- trunk/Source/WebKit2/UIProcess/WebContext.h 2013-02-19 00:00:47 UTC (rev 143272)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h 2013-02-19 00:03:57 UTC (rev 143273)
@@ -141,6 +141,8 @@
// Disconnect the process from the context.
void disconnectProcess(WebProcessProxy*);
+ StorageManager& storageManager() const { return *m_storageManager; }
+
PassRefPtr<WebPageProxy> createWebPage(PageClient*, WebPageGroup*, WebPageProxy* relatedPage = 0);
const String& injectedBundlePath() const { return m_injectedBundlePath; }
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (143272 => 143273)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2013-02-19 00:00:47 UTC (rev 143272)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2013-02-19 00:03:57 UTC (rev 143273)
@@ -261,6 +261,7 @@
#endif
m_process->addMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID, this);
+ m_process->context()->storageManager().createSessionStorageNamespace(m_pageID);
}
WebPageProxy::~WebPageProxy()
@@ -543,6 +544,7 @@
m_process->send(Messages::WebPage::Close(), m_pageID);
m_process->removeWebPage(m_pageID);
m_process->removeMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_pageID);
+ m_process->context()->storageManager().destroySessionStorageNamespace(m_pageID);
}
bool WebPageProxy::tryClose()
@@ -2433,11 +2435,14 @@
void WebPageProxy::createNewPage(const ResourceRequest& request, const WindowFeatures& windowFeatures, uint32_t opaqueModifiers, int32_t opaqueMouseButton, uint64_t& newPageID, WebPageCreationParameters& newPageParameters)
{
RefPtr<WebPageProxy> newPage = m_uiClient.createNewPage(this, request, windowFeatures, static_cast<WebEvent::Modifiers>(opaqueModifiers), static_cast<WebMouseEvent::Button>(opaqueMouseButton));
- if (newPage) {
- newPageID = newPage->pageID();
- newPageParameters = newPage->creationParameters();
- } else
+ if (!newPage) {
newPageID = 0;
+ return;
+ }
+
+ newPageID = newPage->pageID();
+ newPageParameters = newPage->creationParameters();
+ process()->context()->storageManager().cloneSessionStorageNamespace(m_pageID, newPage->pageID());
}
void WebPageProxy::showPage()