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