| Index: third_party/WebKit/Source/core/editing/commands/UndoStack.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/commands/UndoStack.cpp b/third_party/WebKit/Source/core/editing/commands/UndoStack.cpp
|
| index 0839c553e07a4206087dbd898745e5002cad88fb..778e50f556ffbc4e5bc36735d705130aae9856a5 100644
|
| --- a/third_party/WebKit/Source/core/editing/commands/UndoStack.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/commands/UndoStack.cpp
|
| @@ -28,6 +28,7 @@
|
|
|
| #include "core/dom/ContainerNode.h"
|
| #include "core/editing/commands/UndoStep.h"
|
| +#include "platform/EventDispatchForbiddenScope.h"
|
| #include "wtf/TemporaryChange.h"
|
|
|
| namespace blink {
|
| @@ -60,6 +61,25 @@
|
| void UndoStack::registerRedoStep(UndoStep* step)
|
| {
|
| m_redoStack.append(step);
|
| +}
|
| +
|
| +void UndoStack::didUnloadFrame(const LocalFrame& frame)
|
| +{
|
| + EventDispatchForbiddenScope assertNoEventDispatch;
|
| + filterOutUndoSteps(m_undoStack, frame);
|
| + filterOutUndoSteps(m_redoStack, frame);
|
| +}
|
| +
|
| +void UndoStack::filterOutUndoSteps(UndoStepStack& stack, const LocalFrame& frame)
|
| +{
|
| + UndoStepStack newStack;
|
| + while (!stack.isEmpty()) {
|
| + UndoStep* step = stack.first().get();
|
| + if (!step->belongsTo(frame))
|
| + newStack.append(step);
|
| + stack.removeFirst();
|
| + }
|
| + stack.swap(newStack);
|
| }
|
|
|
| bool UndoStack::canUndo() const
|
|
|