| Index: webkit/dom_storage/dom_storage_host.cc
|
| diff --git a/webkit/dom_storage/dom_storage_host.cc b/webkit/dom_storage/dom_storage_host.cc
|
| index a8637e0641bb9224623ef5c2e84f5bdf1a597e1c..1883d8aff9b232a3514975cef509fef65d6f1b4c 100644
|
| --- a/webkit/dom_storage/dom_storage_host.cc
|
| +++ b/webkit/dom_storage/dom_storage_host.cc
|
| @@ -61,6 +61,15 @@ bool DomStorageHost::ExtractAreaValues(
|
| // for sending a bad message.
|
| return true;
|
| }
|
| + if (!area->IsLoadedInMemory()) {
|
| + DomStorageNamespace* ns = GetNamespace(connection_id);
|
| + DCHECK(!ns);
|
| + if (ns->CountInMemoryAreas() > kMaxInMemoryAreas) {
|
| + ns->PurgeUnopenedAreas();
|
| + if (ns->CountInMemoryAreas() > kMaxInMemoryAreas)
|
| + ns->PurgeMemory();
|
| + }
|
| + }
|
| area->ExtractValues(map);
|
| return true;
|
| }
|
| @@ -146,6 +155,13 @@ DomStorageArea* DomStorageHost::GetOpenArea(int connection_id) {
|
| return found->second.area_;
|
| }
|
|
|
| +DomStorageNamespace* DomStorageHost::GetNamespace(int connection_id) {
|
| + AreaMap::iterator found = connections_.find(connection_id);
|
| + if (found == connections_.end())
|
| + return NULL;
|
| + return found->second.namespace_;
|
| +}
|
| +
|
| // NamespaceAndArea
|
|
|
| DomStorageHost::NamespaceAndArea::NamespaceAndArea() {}
|
|
|