Title: [166337] trunk/Source/WebCore
Revision
166337
Author
[email protected]
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  <[email protected]>
+
+        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  <[email protected]>
 
         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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to