Title: [254857] trunk/Source/WebCore
Revision
254857
Author
[email protected]
Date
2020-01-21 09:52:52 -0800 (Tue, 21 Jan 2020)

Log Message

Unreviewed, rolling out r254753.

It turns out this is not dead code

Reverted changeset:

"Drop dead code related to local storage prewarming"
https://bugs.webkit.org/show_bug.cgi?id=206418
https://trac.webkit.org/changeset/254753

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (254856 => 254857)


--- trunk/Source/WebCore/ChangeLog	2020-01-21 17:51:45 UTC (rev 254856)
+++ trunk/Source/WebCore/ChangeLog	2020-01-21 17:52:52 UTC (rev 254857)
@@ -1,3 +1,15 @@
+2020-01-21  Chris Dumez  <[email protected]>
+
+        Unreviewed, rolling out r254753.
+
+        It turns out this is not dead code
+
+        Reverted changeset:
+
+        "Drop dead code related to local storage prewarming"
+        https://bugs.webkit.org/show_bug.cgi?id=206418
+        https://trac.webkit.org/changeset/254753
+
 2020-01-21  Sihui Liu  <[email protected]>
 
         Disable WebSQL everywhere by default except in tests

Modified: trunk/Source/WebCore/loader/DocumentLoader.cpp (254856 => 254857)


--- trunk/Source/WebCore/loader/DocumentLoader.cpp	2020-01-21 17:51:45 UTC (rev 254856)
+++ trunk/Source/WebCore/loader/DocumentLoader.cpp	2020-01-21 17:52:52 UTC (rev 254857)
@@ -1092,6 +1092,9 @@
         if (!isLoading())
             return;
 
+        if (auto* window = m_frame->document()->domWindow())
+            window->prewarmLocalStorageIfNecessary();
+
         bool userChosen;
         String encoding;
         if (overrideEncoding().isNull()) {

Modified: trunk/Source/WebCore/page/DOMWindow.cpp (254856 => 254857)


--- trunk/Source/WebCore/page/DOMWindow.cpp	2020-01-21 17:51:45 UTC (rev 254856)
+++ trunk/Source/WebCore/page/DOMWindow.cpp	2020-01-21 17:52:52 UTC (rev 254857)
@@ -439,6 +439,28 @@
     m_performance = nullptr;
 }
 
+void DOMWindow::prewarmLocalStorageIfNecessary()
+{
+    auto* page = this->page();
+
+    // No need to prewarm for ephemeral sessions since the data is in memory only.
+    if (!page || page->usesEphemeralSession())
+        return;
+
+    if (!page->mainFrame().mayPrewarmLocalStorage())
+        return;
+
+    auto localStorageResult = this->localStorage();
+    if (localStorageResult.hasException())
+        return;
+
+    auto* localStorage = localStorageResult.returnValue();
+    if (!localStorage)
+        return;
+
+    page->mainFrame().didPrewarmLocalStorage();
+}
+
 DOMWindow::~DOMWindow()
 {
     if (m_suspendedForDocumentSuspension)

Modified: trunk/Source/WebCore/page/DOMWindow.h (254856 => 254857)


--- trunk/Source/WebCore/page/DOMWindow.h	2020-01-21 17:51:45 UTC (rev 254856)
+++ trunk/Source/WebCore/page/DOMWindow.h	2020-01-21 17:52:52 UTC (rev 254857)
@@ -203,6 +203,8 @@
 
     void showModalDialog(const String& urlString, const String& dialogFeaturesString, DOMWindow& activeWindow, DOMWindow& firstWindow, const WTF::Function<void(DOMWindow&)>& prepareDialogFunction);
 
+    void prewarmLocalStorageIfNecessary();
+
     void alert(const String& message = emptyString());
     bool confirmForBindings(const String& message);
     String prompt(const String& message, const String& defaultValue);

Modified: trunk/Source/WebCore/page/Frame.cpp (254856 => 254857)


--- trunk/Source/WebCore/page/Frame.cpp	2020-01-21 17:51:45 UTC (rev 254856)
+++ trunk/Source/WebCore/page/Frame.cpp	2020-01-21 17:52:52 UTC (rev 254857)
@@ -117,6 +117,9 @@
 
 DEFINE_DEBUG_ONLY_GLOBAL(WTF::RefCountedLeakCounter, frameCounter, ("Frame"));
 
+// We prewarm local storage for at most 5 origins in a given page.
+static const unsigned maxlocalStoragePrewarmingCount { 5 };
+
 static inline Frame* parentFromOwnerElement(HTMLFrameOwnerElement* ownerElement)
 {
     if (!ownerElement)
@@ -985,6 +988,19 @@
         tree().removeChild(*child);
 }
 
+void Frame::didPrewarmLocalStorage()
+{
+    ASSERT(isMainFrame());
+    ASSERT(m_localStoragePrewarmingCount < maxlocalStoragePrewarmingCount);
+    ++m_localStoragePrewarmingCount;
+}
+
+bool Frame::mayPrewarmLocalStorage() const
+{
+    ASSERT(isMainFrame());
+    return m_localStoragePrewarmingCount < maxlocalStoragePrewarmingCount;
+}
+
 void Frame::selfOnlyRef()
 {
     ASSERT(isMainFrame());

Modified: trunk/Source/WebCore/page/Frame.h (254856 => 254857)


--- trunk/Source/WebCore/page/Frame.h	2020-01-21 17:51:45 UTC (rev 254856)
+++ trunk/Source/WebCore/page/Frame.h	2020-01-21 17:52:52 UTC (rev 254857)
@@ -291,6 +291,9 @@
 
     WEBCORE_EXPORT bool isAlwaysOnLoggingAllowed() const;
 
+    void didPrewarmLocalStorage();
+    bool mayPrewarmLocalStorage() const;
+
 // ========
 
     void selfOnlyRef();
@@ -353,6 +356,7 @@
     unsigned m_navigationDisableCount { 0 };
     unsigned m_selfOnlyRefCount { 0 };
     bool m_hasHadUserInteraction { false };
+    unsigned m_localStoragePrewarmingCount { 0 };
 
 protected:
     UniqueRef<EventHandler> m_eventHandler;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to