Commit 509b2715 authored by Nate Chapin's avatar Nate Chapin Committed by Commit Bot

Speculative fix #2 for crbug.com/1082652

Bug: 1082652
Change-Id: I6ae0fb65bd223e275d690cd903ae91b36846d6e6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2207943
Auto-Submit: Nate Chapin <japhet@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Nate Chapin <japhet@chromium.org>
Cr-Commit-Position: refs/heads/master@{#770140}
parent 43d24a1c
......@@ -64,20 +64,20 @@ IdleSpellCheckController::~IdleSpellCheckController() = default;
void IdleSpellCheckController::Trace(Visitor* visitor) const {
visitor->Trace(cold_mode_requester_);
visitor->Trace(spell_check_requeseter_);
ExecutionContextLifecycleObserver::Trace(visitor);
}
IdleSpellCheckController::IdleSpellCheckController(LocalDOMWindow& window)
IdleSpellCheckController::IdleSpellCheckController(
LocalDOMWindow& window,
SpellCheckRequester& requester)
: ExecutionContextLifecycleObserver(&window),
state_(State::kInactive),
idle_callback_handle_(kInvalidHandle),
last_processed_undo_step_sequence_(0),
cold_mode_requester_(
MakeGarbageCollected<ColdModeSpellCheckRequester>(window)) {}
SpellCheckRequester& IdleSpellCheckController::GetSpellCheckRequester() const {
return GetWindow().GetSpellChecker().GetSpellCheckRequester();
}
MakeGarbageCollected<ColdModeSpellCheckRequester>(window)),
spell_check_requeseter_(requester) {}
LocalDOMWindow& IdleSpellCheckController::GetWindow() const {
DCHECK(GetExecutionContext());
......@@ -107,7 +107,7 @@ void IdleSpellCheckController::Deactivate() {
cold_mode_timer_.Cancel();
cold_mode_requester_->ClearProgress();
DisposeIdleCallback();
GetSpellCheckRequester().Deactivate();
spell_check_requeseter_->Deactivate();
}
void IdleSpellCheckController::SetNeedsInvocation() {
......@@ -173,7 +173,7 @@ void IdleSpellCheckController::HotModeInvocation(IdleDeadline* deadline) {
// TODO(xiaochengh): Figure out if this has any performance impact.
GetDocument().UpdateStyleAndLayout(DocumentUpdateReason::kEditing);
HotModeSpellCheckRequester requester(GetSpellCheckRequester());
HotModeSpellCheckRequester requester(*spell_check_requeseter_);
requester.CheckSpellingAt(
GetWindow().GetFrame()->Selection().GetSelectionInDOMTree().Extent());
......
......@@ -34,7 +34,7 @@ class CORE_EXPORT IdleSpellCheckController final
USING_GARBAGE_COLLECTED_MIXIN(IdleSpellCheckController);
public:
explicit IdleSpellCheckController(LocalDOMWindow&);
explicit IdleSpellCheckController(LocalDOMWindow&, SpellCheckRequester&);
~IdleSpellCheckController();
enum class State {
......@@ -97,6 +97,7 @@ class CORE_EXPORT IdleSpellCheckController final
int idle_callback_handle_;
uint64_t last_processed_undo_step_sequence_;
const Member<ColdModeSpellCheckRequester> cold_mode_requester_;
Member<SpellCheckRequester> spell_check_requeseter_;
TaskHandle cold_mode_timer_;
friend class IdleSpellCheckControllerTest;
......
......@@ -105,7 +105,9 @@ SpellChecker::SpellChecker(LocalDOMWindow& window)
: window_(&window),
spell_check_requester_(MakeGarbageCollected<SpellCheckRequester>(window)),
idle_spell_check_controller_(
MakeGarbageCollected<IdleSpellCheckController>(window)) {}
MakeGarbageCollected<IdleSpellCheckController>(
window,
*spell_check_requester_)) {}
LocalFrame& SpellChecker::GetFrame() const {
DCHECK(window_->GetFrame());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment