| Index: third_party/WebKit/Source/modules/storage/DOMWindowStorage.cpp
|
| diff --git a/third_party/WebKit/Source/modules/storage/DOMWindowStorage.cpp b/third_party/WebKit/Source/modules/storage/DOMWindowStorage.cpp
|
| index 24eca7cfa0cf9648294b05b9a8d57d8635c89226..2394a3b15384caf4aa761c2632e4a86ebcca6ab1 100644
|
| --- a/third_party/WebKit/Source/modules/storage/DOMWindowStorage.cpp
|
| +++ b/third_party/WebKit/Source/modules/storage/DOMWindowStorage.cpp
|
| @@ -18,14 +18,12 @@
|
| namespace blink {
|
|
|
| DOMWindowStorage::DOMWindowStorage(LocalDOMWindow& window)
|
| - : ContextClient(window.frame()), m_window(&window) {}
|
| + : Supplement<LocalDOMWindow>(window) {}
|
|
|
| DEFINE_TRACE(DOMWindowStorage) {
|
| - visitor->trace(m_window);
|
| visitor->trace(m_sessionStorage);
|
| visitor->trace(m_localStorage);
|
| Supplement<LocalDOMWindow>::trace(visitor);
|
| - ContextClient::trace(visitor);
|
| }
|
|
|
| // static
|
| @@ -58,13 +56,11 @@ Storage* DOMWindowStorage::localStorage(DOMWindow& window,
|
|
|
| Storage* DOMWindowStorage::sessionStorage(
|
| ExceptionState& exceptionState) const {
|
| - if (!m_window->isCurrentlyDisplayedInFrame())
|
| - return nullptr;
|
| -
|
| - Document* document = m_window->document();
|
| - if (!document)
|
| + if (!host()->frame())
|
| return nullptr;
|
|
|
| + Document* document = host()->frame()->document();
|
| + DCHECK(document);
|
| String accessDeniedMessage = "Access is denied for this document.";
|
| if (!document->getSecurityOrigin()->canAccessLocalStorage()) {
|
| if (document->isSandboxed(SandboxOrigin))
|
| @@ -79,7 +75,7 @@ Storage* DOMWindowStorage::sessionStorage(
|
| }
|
|
|
| if (m_sessionStorage) {
|
| - if (!m_sessionStorage->area()->canAccessStorage(m_window->frame())) {
|
| + if (!m_sessionStorage->area()->canAccessStorage(document->frame())) {
|
| exceptionState.throwSecurityError(accessDeniedMessage);
|
| return nullptr;
|
| }
|
| @@ -93,21 +89,21 @@ Storage* DOMWindowStorage::sessionStorage(
|
| StorageArea* storageArea =
|
| StorageNamespaceController::from(page)->sessionStorage()->storageArea(
|
| document->getSecurityOrigin());
|
| - if (!storageArea->canAccessStorage(m_window->frame())) {
|
| + if (!storageArea->canAccessStorage(document->frame())) {
|
| exceptionState.throwSecurityError(accessDeniedMessage);
|
| return nullptr;
|
| }
|
|
|
| - m_sessionStorage = Storage::create(m_window->frame(), storageArea);
|
| + m_sessionStorage = Storage::create(document->frame(), storageArea);
|
| return m_sessionStorage;
|
| }
|
|
|
| Storage* DOMWindowStorage::localStorage(ExceptionState& exceptionState) const {
|
| - if (!m_window->isCurrentlyDisplayedInFrame())
|
| - return nullptr;
|
| - Document* document = m_window->document();
|
| - if (!document)
|
| + if (!host()->frame())
|
| return nullptr;
|
| +
|
| + Document* document = host()->frame()->document();
|
| + DCHECK(document);
|
| String accessDeniedMessage = "Access is denied for this document.";
|
| if (!document->getSecurityOrigin()->canAccessLocalStorage()) {
|
| if (document->isSandboxed(SandboxOrigin))
|
| @@ -121,7 +117,7 @@ Storage* DOMWindowStorage::localStorage(ExceptionState& exceptionState) const {
|
| return nullptr;
|
| }
|
| if (m_localStorage) {
|
| - if (!m_localStorage->area()->canAccessStorage(m_window->frame())) {
|
| + if (!m_localStorage->area()->canAccessStorage(document->frame())) {
|
| exceptionState.throwSecurityError(accessDeniedMessage);
|
| return nullptr;
|
| }
|
| @@ -133,11 +129,11 @@ Storage* DOMWindowStorage::localStorage(ExceptionState& exceptionState) const {
|
| return nullptr;
|
| StorageArea* storageArea =
|
| StorageNamespace::localStorageArea(document->getSecurityOrigin());
|
| - if (!storageArea->canAccessStorage(m_window->frame())) {
|
| + if (!storageArea->canAccessStorage(document->frame())) {
|
| exceptionState.throwSecurityError(accessDeniedMessage);
|
| return nullptr;
|
| }
|
| - m_localStorage = Storage::create(m_window->frame(), storageArea);
|
| + m_localStorage = Storage::create(document->frame(), storageArea);
|
| return m_localStorage;
|
| }
|
|
|
|
|