OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/dom_storage/dom_storage_namespace.h" | 5 #include "content/browser/dom_storage/dom_storage_namespace.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 session_storage_database_.get(), task_runner_.get()); | 52 session_storage_database_.get(), task_runner_.get()); |
53 } | 53 } |
54 areas_[origin] = AreaHolder(area, 1); | 54 areas_[origin] = AreaHolder(area, 1); |
55 return area; | 55 return area; |
56 } | 56 } |
57 | 57 |
58 void DOMStorageNamespace::CloseStorageArea(DOMStorageArea* area) { | 58 void DOMStorageNamespace::CloseStorageArea(DOMStorageArea* area) { |
59 AreaHolder* holder = GetAreaHolder(area->origin()); | 59 AreaHolder* holder = GetAreaHolder(area->origin()); |
60 DCHECK(holder); | 60 DCHECK(holder); |
61 DCHECK_EQ(holder->area_.get(), area); | 61 DCHECK_EQ(holder->area_.get(), area); |
62 --(holder->open_count_); | 62 if (!--(holder->open_count_) && holder->area_->HasUncommittedChanges()) |
| 63 holder->area_->ScheduleImmediateCommit(); |
63 // TODO(michaeln): Clean up areas that aren't needed in memory anymore. | 64 // TODO(michaeln): Clean up areas that aren't needed in memory anymore. |
64 // The in-process-webkit based impl didn't do this either, but would be nice. | 65 // The in-process-webkit based impl didn't do this either, but would be nice. |
65 } | 66 } |
66 | 67 |
67 DOMStorageArea* DOMStorageNamespace::GetOpenStorageArea(const GURL& origin) { | 68 DOMStorageArea* DOMStorageNamespace::GetOpenStorageArea(const GURL& origin) { |
68 AreaHolder* holder = GetAreaHolder(origin); | 69 AreaHolder* holder = GetAreaHolder(origin); |
69 if (holder && holder->open_count_) | 70 if (holder && holder->open_count_) |
70 return holder->area_.get(); | 71 return holder->area_.get(); |
71 return NULL; | 72 return NULL; |
72 } | 73 } |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 | 194 |
194 DOMStorageNamespace::AreaHolder::AreaHolder( | 195 DOMStorageNamespace::AreaHolder::AreaHolder( |
195 DOMStorageArea* area, int count) | 196 DOMStorageArea* area, int count) |
196 : area_(area), open_count_(count) { | 197 : area_(area), open_count_(count) { |
197 } | 198 } |
198 | 199 |
199 DOMStorageNamespace::AreaHolder::~AreaHolder() { | 200 DOMStorageNamespace::AreaHolder::~AreaHolder() { |
200 } | 201 } |
201 | 202 |
202 } // namespace content | 203 } // namespace content |
OLD | NEW |