/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/** * Used to find a difference between old and new text and fire text change * events.
*/ class TextUpdater { public: /** * Start text of the text leaf update.
*/ staticvoid Run(DocAccessible* aDocument, TextLeafAccessible* aTextLeaf, const nsAString& aNewText);
/** * Update text of the text leaf accessible, fire text change and value change * (if applicable) events for its container hypertext accessible.
*/ void DoUpdate(const nsAString& aNewText, const nsAString& aOldText,
uint32_t aSkipStart);
/** * Fire text change events based on difference between strings.
*/ void ComputeTextChangeEvents(const nsAString& aStr1, const nsAString& aStr2,
uint32_t* aEntries,
nsTArray<RefPtr<AccEvent> >& aEvents);
/** * Helper to create text change events for inserted text.
*/ inlinevoid FireInsertEvent(const nsAString& aText, uint32_t aAddlOffset,
nsTArray<RefPtr<AccEvent> >& aEvents) {
RefPtr<AccEvent> event = new AccTextChangeEvent(
mHyperText, mTextOffset + aAddlOffset, aText, true);
aEvents.AppendElement(event);
}
/** * Helper to create text change events for removed text.
*/ inlinevoid FireDeleteEvent(const nsAString& aText, uint32_t aAddlOffset,
nsTArray<RefPtr<AccEvent> >& aEvents) {
RefPtr<AccEvent> event = new AccTextChangeEvent(
mHyperText, mTextOffset + aAddlOffset, aText, false);
aEvents.AppendElement(event);
}
/** * The constant used to skip string difference calculation in case of long * strings.
*/ conststatic uint32_t kMaxStrLen = 1 << 6;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.