⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accessibilityobject.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    VisiblePosition endPosition = endOfLine(nextVisiblePos);    // as long as the position hasn't reached the end of the doc,  keep searching for a valid line end position    // There are cases like when the position is next to a floating object that'll return null for end of line. This code will avoid returning null.    while (endPosition.isNull() && nextVisiblePos.isNotNull()) {        nextVisiblePos = nextVisiblePos.next();        endPosition = endOfLine(nextVisiblePos);    }    return endPosition;}VisiblePosition AccessibilityObject::previousLineStartPosition(const VisiblePosition& visiblePos) const{    if (visiblePos.isNull())        return VisiblePosition();    // make sure we move off of a line start    VisiblePosition prevVisiblePos = visiblePos.previous();    if (prevVisiblePos.isNull())        return VisiblePosition();    VisiblePosition startPosition = startOfLine(prevVisiblePos);    // as long as the position hasn't reached the beginning of the doc,  keep searching for a valid line start position    // There are cases like when the position is next to a floating object that'll return null for start of line. This code will avoid returning null.    if (startPosition.isNull()) {        while (startPosition.isNull() && prevVisiblePos.isNotNull()) {            prevVisiblePos = prevVisiblePos.previous();            startPosition = startOfLine(prevVisiblePos);        }    } else        startPosition = updateAXLineStartForVisiblePosition(startPosition);    return startPosition;}VisiblePosition AccessibilityObject::nextSentenceEndPosition(const VisiblePosition& visiblePos) const{    // FIXME: FO 2 IMPLEMENT (currently returns incorrect answer)    // Related? <rdar://problem/3927736> Text selection broken in 8A336    if (visiblePos.isNull())        return VisiblePosition();    // make sure we move off of a sentence end    VisiblePosition nextVisiblePos = visiblePos.next();    if (nextVisiblePos.isNull())        return VisiblePosition();    // an empty line is considered a sentence. If it's skipped, then the sentence parser will not    // see this empty line.  Instead, return the end position of the empty line.    VisiblePosition endPosition;        String lineString = plainText(makeRange(startOfLine(nextVisiblePos), endOfLine(nextVisiblePos)).get());    if (lineString.isEmpty())        endPosition = nextVisiblePos;    else        endPosition = endOfSentence(nextVisiblePos);    return endPosition;}VisiblePosition AccessibilityObject::previousSentenceStartPosition(const VisiblePosition& visiblePos) const{    // FIXME: FO 2 IMPLEMENT (currently returns incorrect answer)    // Related? <rdar://problem/3927736> Text selection broken in 8A336    if (visiblePos.isNull())        return VisiblePosition();    // make sure we move off of a sentence start    VisiblePosition previousVisiblePos = visiblePos.previous();    if (previousVisiblePos.isNull())        return VisiblePosition();    // treat empty line as a separate sentence.    VisiblePosition startPosition;        String lineString = plainText(makeRange(startOfLine(previousVisiblePos), endOfLine(previousVisiblePos)).get());    if (lineString.isEmpty())        startPosition = previousVisiblePos;    else        startPosition = startOfSentence(previousVisiblePos);    return startPosition;}VisiblePosition AccessibilityObject::nextParagraphEndPosition(const VisiblePosition& visiblePos) const{    if (visiblePos.isNull())        return VisiblePosition();    // make sure we move off of a paragraph end    VisiblePosition nextPos = visiblePos.next();    if (nextPos.isNull())        return VisiblePosition();    return endOfParagraph(nextPos);}VisiblePosition AccessibilityObject::previousParagraphStartPosition(const VisiblePosition& visiblePos) const{    if (visiblePos.isNull())        return VisiblePosition();    // make sure we move off of a paragraph start    VisiblePosition previousPos = visiblePos.previous();    if (previousPos.isNull())        return VisiblePosition();    return startOfParagraph(previousPos);}// NOTE: Consider providing this utility method as AX APIVisiblePosition AccessibilityObject::visiblePositionForIndex(unsigned, bool) const{    return VisiblePosition();}AccessibilityObject* AccessibilityObject::accessibilityObjectForPosition(const VisiblePosition& visiblePos) const{    if (visiblePos.isNull())        return 0;    RenderObject* obj = visiblePos.deepEquivalent().node()->renderer();    if (!obj)        return 0;    return obj->document()->axObjectCache()->getOrCreate(obj);}int AccessibilityObject::lineForPosition(const VisiblePosition& visiblePos) const{    if (visiblePos.isNull())        return 0;    unsigned lineCount = 0;    VisiblePosition currentVisiblePos = visiblePos;    VisiblePosition savedVisiblePos;    // move up until we get to the top    // FIXME: This only takes us to the top of the rootEditableElement, not the top of the    // top document.    while (currentVisiblePos.isNotNull() && !(inSameLine(currentVisiblePos, savedVisiblePos))) {        ++lineCount;        savedVisiblePos = currentVisiblePos;        VisiblePosition prevVisiblePos = previousLinePosition(currentVisiblePos, 0);        currentVisiblePos = prevVisiblePos;    }    return lineCount - 1;}// NOTE: Consider providing this utility method as AX APIPlainTextRange AccessibilityObject::plainTextRangeForVisiblePositionRange(const VisiblePositionRange& positionRange) const{    int index1 = index(positionRange.start);    int index2 = index(positionRange.end);    if (index1 < 0 || index2 < 0 || index1 > index2)        return PlainTextRange();    return PlainTextRange(index1, index2 - index1);}// NOTE: Consider providing this utility method as AX APIint AccessibilityObject::index(const VisiblePosition&) const{    return -1;}// Given a line number, the range of characters of the text associated with this accessibility// object that contains the line number.PlainTextRange AccessibilityObject::doAXRangeForLine(unsigned) const{    return PlainTextRange();}// The composed character range in the text associated with this accessibility object that// is specified by the given screen coordinates. This parameterized attribute returns the// complete range of characters (including surrogate pairs of multi-byte glyphs) at the given// screen coordinates.// NOTE: This varies from AppKit when the point is below the last line. AppKit returns an// an error in that case. We return textControl->text().length(), 1. Does this matter?PlainTextRange AccessibilityObject::doAXRangeForPosition(const IntPoint& point) const{    int i = index(visiblePositionForPoint(point));    if (i < 0)        return PlainTextRange();    return PlainTextRange(i, 1);}// The composed character range in the text associated with this accessibility object that// is specified by the given index value. This parameterized attribute returns the complete// range of characters (including surrogate pairs of multi-byte glyphs) at the given index.PlainTextRange AccessibilityObject::doAXRangeForIndex(unsigned) const{    return PlainTextRange();}// Given a character index, the range of text associated with this accessibility object// over which the style in effect at that character index applies.PlainTextRange AccessibilityObject::doAXStyleRangeForIndex(unsigned index) const{    VisiblePositionRange range = styleRangeForPosition(visiblePositionForIndex(index, false));    return plainTextRangeForVisiblePositionRange(range);}// A substring of the text associated with this accessibility object that is// specified by the given character range.String AccessibilityObject::doAXStringForRange(const PlainTextRange&) const{    return String();}// The bounding rectangle of the text associated with this accessibility object that is// specified by the given range. This is the bounding rectangle a sighted user would see// on the display screen, in pixels.IntRect AccessibilityObject::doAXBoundsForRange(const PlainTextRange&) const{    return IntRect();}// Given an indexed character, the line number of the text associated with this accessibility// object that contains the character.unsigned AccessibilityObject::doAXLineForIndex(unsigned index){    return lineForPosition(visiblePositionForIndex(index, false));}FrameView* AccessibilityObject::documentFrameView() const {     const AccessibilityObject* object = this;    while (object && !object->isAccessibilityRenderObject())         object = object->parentObject();            if (!object)        return 0;    return object->documentFrameView();}    AccessibilityObject* AccessibilityObject::doAccessibilityHitTest(const IntPoint&) const{    return 0;}AccessibilityObject* AccessibilityObject::focusedUIElement() const{    return 0;}AccessibilityObject* AccessibilityObject::observableObject() const{    return 0;}AccessibilityRole AccessibilityObject::roleValue() const{    return UnknownRole;}    AccessibilityRole AccessibilityObject::ariaRoleAttribute() const{    return UnknownRole;}bool AccessibilityObject::isPresentationalChildOfAriaRole() const{    return false;}bool AccessibilityObject::ariaRoleHasPresentationalChildren() const{    return false;}void AccessibilityObject::clearChildren(){    m_haveChildren = false;    m_children.clear();}void AccessibilityObject::childrenChanged(){    return;}void AccessibilityObject::addChildren(){}void AccessibilityObject::selectedChildren(AccessibilityChildrenVector&){}void AccessibilityObject::visibleChildren(AccessibilityChildrenVector&){}    unsigned AccessibilityObject::axObjectID() const{    return m_id;}void AccessibilityObject::setAXObjectID(unsigned axObjectID){    m_id = axObjectID;}const String& AccessibilityObject::actionVerb() const{    // FIXME: Need to add verbs for select elements.    DEFINE_STATIC_LOCAL(const String, buttonAction, (AXButtonActionVerb()));    DEFINE_STATIC_LOCAL(const String, textFieldAction, (AXTextFieldActionVerb()));    DEFINE_STATIC_LOCAL(const String, radioButtonAction, (AXRadioButtonActionVerb()));    DEFINE_STATIC_LOCAL(const String, checkedCheckBoxAction, (AXCheckedCheckBoxActionVerb()));    DEFINE_STATIC_LOCAL(const String, uncheckedCheckBoxAction, (AXUncheckedCheckBoxActionVerb()));    DEFINE_STATIC_LOCAL(const String, linkAction, (AXLinkActionVerb()));    DEFINE_STATIC_LOCAL(const String, noAction, ());    switch (roleValue()) {        case ButtonRole:            return buttonAction;        case TextFieldRole:        case TextAreaRole:            return textFieldAction;        case RadioButtonRole:            return radioButtonAction;        case CheckBoxRole:            return isChecked() ? checkedCheckBoxAction : uncheckedCheckBoxAction;        case LinkRole:        case WebCoreLinkRole:            return linkAction;        default:            return noAction;    }}void AccessibilityObject::updateBackingStore(){}    } // namespace WebCore

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -