Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  TextUpdater.h   Sprache: unbekannt

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

100%


[ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

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.

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge