Title: [166337] trunk/Source/WebCore
Revision
166337
Author
bb...@apple.com
Date
2014-03-26 20:45:38 -0700 (Wed, 26 Mar 2014)

Log Message

Web Replay: disable page cache during capture/replay
https://bugs.webkit.org/show_bug.cgi?id=130672

Reviewed by Timothy Hatcher.

Save, set, and restore page cache settings at the correct times.

No new tests. If this code fails, then the tests for network replay will fail.

* replay/ReplayController.cpp:
(WebCore::ReplayController::setForceDeterministicSettings): Added.
(WebCore::ReplayController::startCapturing):
(WebCore::ReplayController::stopCapturing):
(WebCore::ReplayController::cancelPlayback):
(WebCore::ReplayController::replayToPosition):
* replay/ReplayController.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (166336 => 166337)


--- trunk/Source/WebCore/ChangeLog	2014-03-27 03:41:40 UTC (rev 166336)
+++ trunk/Source/WebCore/ChangeLog	2014-03-27 03:45:38 UTC (rev 166337)
@@ -1,3 +1,22 @@
+2014-03-26  Brian Burg  <bb...@apple.com>
+
+        Web Replay: disable page cache during capture/replay
+        https://bugs.webkit.org/show_bug.cgi?id=130672
+
+        Reviewed by Timothy Hatcher.
+
+        Save, set, and restore page cache settings at the correct times.
+
+        No new tests. If this code fails, then the tests for network replay will fail.
+
+        * replay/ReplayController.cpp:
+        (WebCore::ReplayController::setForceDeterministicSettings): Added.
+        (WebCore::ReplayController::startCapturing):
+        (WebCore::ReplayController::stopCapturing):
+        (WebCore::ReplayController::cancelPlayback):
+        (WebCore::ReplayController::replayToPosition):
+        * replay/ReplayController.h:
+
 2014-03-26  Sam Weinig  <s...@webkit.org>
 
         Convert more of HTMLConverter to C++

Modified: trunk/Source/WebCore/replay/ReplayController.cpp (166336 => 166337)


--- trunk/Source/WebCore/replay/ReplayController.cpp	2014-03-27 03:41:40 UTC (rev 166336)
+++ trunk/Source/WebCore/replay/ReplayController.cpp	2014-03-27 03:45:38 UTC (rev 166337)
@@ -44,6 +44,7 @@
 #include "ReplaySessionSegment.h"
 #include "ReplayingInputCursor.h"
 #include "ScriptController.h"
+#include "Settings.h"
 #include "UserInputBridge.h"
 #include "WebReplayInputs.h"
 #include <replay/EmptyInputCursor.h>
@@ -65,6 +66,19 @@
 {
 }
 
+void ReplayController::setForceDeterministicSettings(bool shouldForce)
+{
+    ASSERT(shouldForce ^ (m_sessionState == SessionState::Inactive));
+
+    if (shouldForce) {
+        m_savedSettings.usesPageCache = m_page.settings().usesPageCache();
+
+        m_page.settings().setUsesPageCache(false);
+    } else {
+        m_page.settings().setUsesPageCache(m_savedSettings.usesPageCache);
+    }
+}
+
 void ReplayController::setSessionState(SessionState state)
 {
     ASSERT(state != m_sessionState);
@@ -199,6 +213,7 @@
     ASSERT(m_segmentState == SegmentState::Unloaded);
 
     setSessionState(SessionState::Capturing);
+    setForceDeterministicSettings(true);
 
     LOG(WebReplay, "%-20s Starting capture.\n", "ReplayController");
     InspectorInstrumentation::captureStarted(&m_page);
@@ -216,6 +231,7 @@
     completeSegment();
 
     setSessionState(SessionState::Inactive);
+    setForceDeterministicSettings(false);
 
     LOG(WebReplay, "%-20s Stopping capture.\n", "ReplayController");
     InspectorInstrumentation::captureStopped(&m_page);
@@ -263,6 +279,7 @@
     ASSERT(m_segmentState == SegmentState::Loaded);
     unloadSegment();
     m_sessionState = SessionState::Inactive;
+    setForceDeterministicSettings(false);
     InspectorInstrumentation::playbackFinished(&m_page);
 }
 
@@ -274,8 +291,10 @@
 
     m_dispatchSpeed = speed;
 
-    if (m_sessionState != SessionState::Replaying)
+    if (m_sessionState != SessionState::Replaying) {
         setSessionState(SessionState::Replaying);
+        setForceDeterministicSettings(true);
+    }
 
     if (m_segmentState == SegmentState::Unloaded)
         loadSegmentAtIndex(position.segmentOffset);

Modified: trunk/Source/WebCore/replay/ReplayController.h (166336 => 166337)


--- trunk/Source/WebCore/replay/ReplayController.h	2014-03-27 03:41:40 UTC (rev 166336)
+++ trunk/Source/WebCore/replay/ReplayController.h	2014-03-27 03:45:38 UTC (rev 166337)
@@ -151,7 +151,16 @@
     EventLoopInputDispatcher& dispatcher() const;
 
     void setSessionState(SessionState);
+    void setForceDeterministicSettings(bool);
 
+    struct SavedSettings {
+        bool usesPageCache;
+
+        SavedSettings()
+            : usesPageCache(false)
+        { }
+    };
+
     Page& m_page;
 
     RefPtr<ReplaySessionSegment> m_loadedSegment;
@@ -170,6 +179,7 @@
     SessionState m_sessionState;
 
     DispatchSpeed m_dispatchSpeed;
+    SavedSettings m_savedSettings;
 };
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to