Skip to content

Commit

Permalink
Don't reuse cached storages for another Page.
Browse files Browse the repository at this point in the history
  • Loading branch information
goodov committed Jun 21, 2021
1 parent 905e15e commit 47e6c36
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

namespace blink {

class EphemeralStorageNamespaces;
class ExceptionState;
class LocalDOMWindow;
class StorageArea;
Expand All @@ -35,6 +36,7 @@ class BraveDOMWindowStorage final
StorageArea* ephemeralSessionStorage();
StorageArea* ephemeralLocalStorage();

mutable Member<EphemeralStorageNamespaces> ephemeral_storage_namespaces_;
mutable Member<StorageArea> ephemeral_session_storage_;
mutable Member<StorageArea> ephemeral_local_storage_;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,16 +181,20 @@ StorageArea* BraveDOMWindowStorage::sessionStorage(
}

StorageArea* BraveDOMWindowStorage::ephemeralSessionStorage() {
if (ephemeral_session_storage_)
return ephemeral_session_storage_;

LocalDOMWindow* window = GetSupplementable();
Page* page = window->GetFrame()->GetDocument()->GetPage();
EphemeralStorageNamespaces* namespaces =
EphemeralStorageNamespaces::From(page, window);
if (!namespaces)
return nullptr;

if (ephemeral_session_storage_ &&
ephemeral_storage_namespaces_ == namespaces) {
return ephemeral_session_storage_;
}

ephemeral_storage_namespaces_ = namespaces;

auto storage_area =
namespaces->session_storage()->GetCachedArea(window->GetSecurityOrigin());

Expand All @@ -213,16 +217,19 @@ StorageArea* BraveDOMWindowStorage::localStorage(
}

StorageArea* BraveDOMWindowStorage::ephemeralLocalStorage() {
if (ephemeral_local_storage_)
return ephemeral_local_storage_;

LocalDOMWindow* window = GetSupplementable();
Page* page = window->GetFrame()->GetDocument()->GetPage();
EphemeralStorageNamespaces* namespaces =
EphemeralStorageNamespaces::From(page, window);
if (!namespaces)
return nullptr;

if (ephemeral_local_storage_ && ephemeral_storage_namespaces_ == namespaces) {
return ephemeral_local_storage_;
}

ephemeral_storage_namespaces_ = namespaces;

auto storage_area =
namespaces->local_storage()->GetCachedArea(window->GetSecurityOrigin());

Expand All @@ -237,6 +244,7 @@ StorageArea* BraveDOMWindowStorage::ephemeralLocalStorage() {
}

void BraveDOMWindowStorage::Trace(Visitor* visitor) const {
visitor->Trace(ephemeral_storage_namespaces_);
visitor->Trace(ephemeral_session_storage_);
visitor->Trace(ephemeral_local_storage_);
Supplement<LocalDOMWindow>::Trace(visitor);
Expand Down

0 comments on commit 47e6c36

Please sign in to comment.