bool StorageArea::canAccessStorage(LocalFrame* frame) { if (!frame || !frame->page()) return false; // LocalFrameLifecycleObserver is used to safely keep the cached // reference to the LocalFrame. Should the LocalFrame die before // this StorageArea does, that cached reference will be cleared. if (this->frame() == frame) return m_canAccessStorageCachedResult; StorageNamespaceController* controller = StorageNamespaceController::from(frame->page()); if (!controller) return false; bool result = controller->getStorageClient()->canAccessStorage(frame, m_storageType); // Move attention to the new LocalFrame. LocalFrameLifecycleObserver::setContext(frame); m_canAccessStorageCachedResult = result; return result; }
bool StorageArea::canAccessStorage(LocalFrame* frame) { if (!frame || !frame->page()) return false; // Should the LocalFrame die before this StorageArea does, // that cached reference will be cleared. if (m_frameUsedForCanAccessStorage == frame) return m_canAccessStorageCachedResult; StorageNamespaceController* controller = StorageNamespaceController::from(frame->page()); if (!controller) return false; bool result = controller->getStorageClient()->canAccessStorage(frame, m_storageType); // Move attention to the new LocalFrame. m_frameUsedForCanAccessStorage = frame; m_canAccessStorageCachedResult = result; return result; }