Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/accessible/base/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  TextUpdater.h   Sprache: C

 
/* -*- 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/. */


#ifndef mozilla_a11y_TextUpdater_h__
#define mozilla_a11y_TextUpdater_h__

#include "AccEvent.h"
#include "HyperTextAccessible.h"

namespace mozilla {
namespace a11y {

/**
 * 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.
   */

  static void Run(DocAccessible* aDocument, TextLeafAccessible* aTextLeaf,
                  const nsAString& aNewText);

 private:
  TextUpdater(DocAccessible* aDocument, TextLeafAccessible* aTextLeaf)
      : mDocument(aDocument),
        mTextLeaf(aTextLeaf),
        mHyperText(nullptr),
        mTextOffset(-1) {}

  ~TextUpdater() {
    mDocument = nullptr;
    mTextLeaf = nullptr;
    mHyperText = nullptr;
  }

  /**
   * 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);

 private:
  TextUpdater();
  TextUpdater(const TextUpdater&);
  TextUpdater& operator=(const TextUpdater&);

  /**
   * 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.
   */

  inline void 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.
   */

  inline void 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.
   */

  const static uint32_t kMaxStrLen = 1 << 6;

 private:
  DocAccessible* mDocument;
  TextLeafAccessible* mTextLeaf;
  HyperTextAccessible* mHyperText;
  int32_t mTextOffset;
};

}  // namespace a11y
}  // namespace mozilla

#endif

Messung V0.5
C=92 H=100 G=95

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.