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

Side by Side Diff: Source/core/storage/StorageArea.cpp

Issue 317493002: Change FrameTree to return Frames instead of LocalFrames. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: dcheng's comment addressed Created 6 years, 6 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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 size_t StorageArea::memoryBytesUsedByCache() 138 size_t StorageArea::memoryBytesUsedByCache()
139 { 139 {
140 return m_storageArea->memoryBytesUsedByCache(); 140 return m_storageArea->memoryBytesUsedByCache();
141 } 141 }
142 142
143 void StorageArea::dispatchLocalStorageEvent(const String& key, const String& old Value, const String& newValue, SecurityOrigin* securityOrigin, const KURL& pageU RL, blink::WebStorageArea* sourceAreaInstance, bool originatedInProcess) 143 void StorageArea::dispatchLocalStorageEvent(const String& key, const String& old Value, const String& newValue, SecurityOrigin* securityOrigin, const KURL& pageU RL, blink::WebStorageArea* sourceAreaInstance, bool originatedInProcess)
144 { 144 {
145 // FIXME: This looks suspicious. Why doesn't this use allPages instead? 145 // FIXME: This looks suspicious. Why doesn't this use allPages instead?
146 const HashSet<Page*>& pages = Page::ordinaryPages(); 146 const HashSet<Page*>& pages = Page::ordinaryPages();
147 for (HashSet<Page*>::const_iterator it = pages.begin(); it != pages.end(); + +it) { 147 for (HashSet<Page*>::const_iterator it = pages.begin(); it != pages.end(); + +it) {
148 for (LocalFrame* frame = (*it)->mainFrame(); frame; frame = frame->tree( ).traverseNext()) { 148 for (Frame* frame = (*it)->mainFrame(); frame; frame = frame->tree().tra verseNext()) {
149 // FIXME: We do not yet have a way to dispatch events to out-of-proc ess frames.
150 if (!frame->isLocalFrame())
151 continue;
149 Storage* storage = frame->domWindow()->optionalLocalStorage(); 152 Storage* storage = frame->domWindow()->optionalLocalStorage();
150 if (storage && frame->document()->securityOrigin()->canAccess(securi tyOrigin) && !isEventSource(storage, sourceAreaInstance)) 153 if (storage && toLocalFrame(frame)->document()->securityOrigin()->ca nAccess(securityOrigin) && !isEventSource(storage, sourceAreaInstance))
151 frame->domWindow()->enqueueWindowEvent(StorageEvent::create(Even tTypeNames::storage, key, oldValue, newValue, pageURL, storage)); 154 frame->domWindow()->enqueueWindowEvent(StorageEvent::create(Even tTypeNames::storage, key, oldValue, newValue, pageURL, storage));
152 } 155 }
153 InspectorInstrumentation::didDispatchDOMStorageEvent(*it, key, oldValue, newValue, LocalStorage, securityOrigin); 156 InspectorInstrumentation::didDispatchDOMStorageEvent(*it, key, oldValue, newValue, LocalStorage, securityOrigin);
154 } 157 }
155 } 158 }
156 159
157 static Page* findPageWithSessionStorageNamespace(const blink::WebStorageNamespac e& sessionNamespace) 160 static Page* findPageWithSessionStorageNamespace(const blink::WebStorageNamespac e& sessionNamespace)
158 { 161 {
159 // FIXME: This looks suspicious. Why doesn't this use allPages instead? 162 // FIXME: This looks suspicious. Why doesn't this use allPages instead?
160 const HashSet<Page*>& pages = Page::ordinaryPages(); 163 const HashSet<Page*>& pages = Page::ordinaryPages();
161 for (HashSet<Page*>::const_iterator it = pages.begin(); it != pages.end(); + +it) { 164 for (HashSet<Page*>::const_iterator it = pages.begin(); it != pages.end(); + +it) {
162 const bool dontCreateIfMissing = false; 165 const bool dontCreateIfMissing = false;
163 StorageNamespace* storageNamespace = (*it)->sessionStorage(dontCreateIfM issing); 166 StorageNamespace* storageNamespace = (*it)->sessionStorage(dontCreateIfM issing);
164 if (storageNamespace && storageNamespace->isSameNamespace(sessionNamespa ce)) 167 if (storageNamespace && storageNamespace->isSameNamespace(sessionNamespa ce))
165 return *it; 168 return *it;
166 } 169 }
167 return 0; 170 return 0;
168 } 171 }
169 172
170 void StorageArea::dispatchSessionStorageEvent(const String& key, const String& o ldValue, const String& newValue, SecurityOrigin* securityOrigin, const KURL& pag eURL, const blink::WebStorageNamespace& sessionNamespace, blink::WebStorageArea* sourceAreaInstance, bool originatedInProcess) 173 void StorageArea::dispatchSessionStorageEvent(const String& key, const String& o ldValue, const String& newValue, SecurityOrigin* securityOrigin, const KURL& pag eURL, const blink::WebStorageNamespace& sessionNamespace, blink::WebStorageArea* sourceAreaInstance, bool originatedInProcess)
171 { 174 {
172 Page* page = findPageWithSessionStorageNamespace(sessionNamespace); 175 Page* page = findPageWithSessionStorageNamespace(sessionNamespace);
173 if (!page) 176 if (!page)
174 return; 177 return;
175 178
176 for (LocalFrame* frame = page->mainFrame(); frame; frame = frame->tree().tra verseNext()) { 179 for (Frame* frame = page->mainFrame(); frame; frame = frame->tree().traverse Next()) {
180 // FIXME: We do not yet have a way to dispatch events to out-of-process frames.
181 if (!frame->isLocalFrame())
182 continue;
177 Storage* storage = frame->domWindow()->optionalSessionStorage(); 183 Storage* storage = frame->domWindow()->optionalSessionStorage();
178 if (storage && frame->document()->securityOrigin()->canAccess(securityOr igin) && !isEventSource(storage, sourceAreaInstance)) 184 if (storage && toLocalFrame(frame)->document()->securityOrigin()->canAcc ess(securityOrigin) && !isEventSource(storage, sourceAreaInstance))
179 frame->domWindow()->enqueueWindowEvent(StorageEvent::create(EventTyp eNames::storage, key, oldValue, newValue, pageURL, storage)); 185 frame->domWindow()->enqueueWindowEvent(StorageEvent::create(EventTyp eNames::storage, key, oldValue, newValue, pageURL, storage));
180 } 186 }
181 InspectorInstrumentation::didDispatchDOMStorageEvent(page, key, oldValue, ne wValue, SessionStorage, securityOrigin); 187 InspectorInstrumentation::didDispatchDOMStorageEvent(page, key, oldValue, ne wValue, SessionStorage, securityOrigin);
182 } 188 }
183 189
184 bool StorageArea::isEventSource(Storage* storage, blink::WebStorageArea* sourceA reaInstance) 190 bool StorageArea::isEventSource(Storage* storage, blink::WebStorageArea* sourceA reaInstance)
185 { 191 {
186 ASSERT(storage); 192 ASSERT(storage);
187 StorageArea* area = storage->area(); 193 StorageArea* area = storage->area();
188 return area->m_storageArea == sourceAreaInstance; 194 return area->m_storageArea == sourceAreaInstance;
189 } 195 }
190 196
191 } // namespace WebCore 197 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/rendering/compositing/RenderLayerCompositor.cpp ('k') | Source/core/testing/Internals.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698