Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: third_party/WebKit/Source/modules/storage/StorageArea.cpp

Issue 1507633003: Clarify ordinary page handling. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: whitespace Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All Rights Reserved. 2 * Copyright (C) 2009 Google Inc. All Rights Reserved.
3 * (C) 2008 Apple Inc. 3 * (C) 2008 Apple Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 return result; 154 return result;
155 } 155 }
156 156
157 size_t StorageArea::memoryBytesUsedByCache() 157 size_t StorageArea::memoryBytesUsedByCache()
158 { 158 {
159 return m_storageArea->memoryBytesUsedByCache(); 159 return m_storageArea->memoryBytesUsedByCache();
160 } 160 }
161 161
162 void StorageArea::dispatchLocalStorageEvent(const String& key, const String& old Value, const String& newValue, SecurityOrigin* securityOrigin, const KURL& pageU RL, WebStorageArea* sourceAreaInstance, bool originatedInProcess) 162 void StorageArea::dispatchLocalStorageEvent(const String& key, const String& old Value, const String& newValue, SecurityOrigin* securityOrigin, const KURL& pageU RL, WebStorageArea* sourceAreaInstance, bool originatedInProcess)
163 { 163 {
164 // FIXME: This looks suspicious. Why doesn't this use allPages instead? 164 // Iterate over all pages that have a StorageNamespaceController supplement.
165 const WillBePersistentHeapHashSet<RawPtrWillBeWeakMember<Page>>& pages = Pag e::ordinaryPages(); 165 for (Page* page : Page::ordinaryPages()) {
166 for (Page* page : pages) {
167 for (Frame* frame = page->mainFrame(); frame; frame = frame->tree().trav erseNext()) { 166 for (Frame* frame = page->mainFrame(); frame; frame = frame->tree().trav erseNext()) {
168 // FIXME: We do not yet have a way to dispatch events to out-of-proc ess frames. 167 // FIXME: We do not yet have a way to dispatch events to out-of-proc ess frames.
169 if (!frame->isLocalFrame()) 168 if (!frame->isLocalFrame())
170 continue; 169 continue;
171 LocalFrame* localFrame = toLocalFrame(frame); 170 LocalFrame* localFrame = toLocalFrame(frame);
172 LocalDOMWindow* localWindow = localFrame->localDOMWindow(); 171 LocalDOMWindow* localWindow = localFrame->localDOMWindow();
173 Storage* storage = DOMWindowStorage::from(*localWindow).optionalLoca lStorage(); 172 Storage* storage = DOMWindowStorage::from(*localWindow).optionalLoca lStorage();
174 if (storage && localFrame->document()->securityOrigin()->canAccess(s ecurityOrigin) && !isEventSource(storage, sourceAreaInstance)) 173 if (storage && localFrame->document()->securityOrigin()->canAccess(s ecurityOrigin) && !isEventSource(storage, sourceAreaInstance))
175 localFrame->localDOMWindow()->enqueueWindowEvent(StorageEvent::c reate(EventTypeNames::storage, key, oldValue, newValue, pageURL, storage)); 174 localFrame->localDOMWindow()->enqueueWindowEvent(StorageEvent::c reate(EventTypeNames::storage, key, oldValue, newValue, pageURL, storage));
176 } 175 }
177 if (InspectorDOMStorageAgent* agent = StorageNamespaceController::from(p age)->inspectorAgent()) 176 if (InspectorDOMStorageAgent* agent = StorageNamespaceController::from(p age)->inspectorAgent())
178 agent->didDispatchDOMStorageEvent(key, oldValue, newValue, LocalStor age, securityOrigin); 177 agent->didDispatchDOMStorageEvent(key, oldValue, newValue, LocalStor age, securityOrigin);
179 } 178 }
180 } 179 }
181 180
182 static Page* findPageWithSessionStorageNamespace(const WebStorageNamespace& sess ionNamespace) 181 static Page* findPageWithSessionStorageNamespace(const WebStorageNamespace& sess ionNamespace)
183 { 182 {
184 // FIXME: This looks suspicious. Why doesn't this use allPages instead? 183 // Iterate over all pages that have a StorageNamespaceController supplement.
185 const WillBePersistentHeapHashSet<RawPtrWillBeWeakMember<Page>>& pages = Pag e::ordinaryPages(); 184 for (Page* page : Page::ordinaryPages()) {
186 for (Page* page : pages) {
187 const bool dontCreateIfMissing = false; 185 const bool dontCreateIfMissing = false;
188 StorageNamespace* storageNamespace = StorageNamespaceController::from(pa ge)->sessionStorage(dontCreateIfMissing); 186 StorageNamespace* storageNamespace = StorageNamespaceController::from(pa ge)->sessionStorage(dontCreateIfMissing);
189 if (storageNamespace && storageNamespace->isSameNamespace(sessionNamespa ce)) 187 if (storageNamespace && storageNamespace->isSameNamespace(sessionNamespa ce))
190 return page; 188 return page;
191 } 189 }
192 return nullptr; 190 return nullptr;
193 } 191 }
194 192
195 void StorageArea::dispatchSessionStorageEvent(const String& key, const String& o ldValue, const String& newValue, SecurityOrigin* securityOrigin, const KURL& pag eURL, const WebStorageNamespace& sessionNamespace, WebStorageArea* sourceAreaIns tance, bool originatedInProcess) 193 void StorageArea::dispatchSessionStorageEvent(const String& key, const String& o ldValue, const String& newValue, SecurityOrigin* securityOrigin, const KURL& pag eURL, const WebStorageNamespace& sessionNamespace, WebStorageArea* sourceAreaIns tance, bool originatedInProcess)
196 { 194 {
(...skipping 16 matching lines...) Expand all
213 } 211 }
214 212
215 bool StorageArea::isEventSource(Storage* storage, WebStorageArea* sourceAreaInst ance) 213 bool StorageArea::isEventSource(Storage* storage, WebStorageArea* sourceAreaInst ance)
216 { 214 {
217 ASSERT(storage); 215 ASSERT(storage);
218 StorageArea* area = storage->area(); 216 StorageArea* area = storage->area();
219 return area->m_storageArea == sourceAreaInstance; 217 return area->m_storageArea == sourceAreaInstance;
220 } 218 }
221 219
222 } // namespace blink 220 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698