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

📄 accessibilityobjectwrapper.mm

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 MM
📖 第 1 页 / 共 5 页
字号:
        }        return m_object->accessibilityDescription();    }        if ([attributeName isEqualToString: NSAccessibilityValueAttribute]) {        if (m_object->isAttachment()) {            if ([[[self attachmentView] accessibilityAttributeNames] containsObject:NSAccessibilityValueAttribute])                 return [[self attachmentView] accessibilityAttributeValue:NSAccessibilityValueAttribute];        }        if (m_object->isProgressIndicator() || m_object->isSlider())            return [NSNumber numberWithFloat:m_object->valueForRange()];        if (m_object->hasIntValue())            return [NSNumber numberWithInt:m_object->intValue()];        return m_object->stringValue();    }    if ([attributeName isEqualToString: NSAccessibilityMinValueAttribute])        return [NSNumber numberWithFloat:m_object->minValueForRange()];    if ([attributeName isEqualToString: NSAccessibilityMaxValueAttribute])        return [NSNumber numberWithFloat:m_object->maxValueForRange()];    if ([attributeName isEqualToString: NSAccessibilityHelpAttribute])        return m_object->helpText();    if ([attributeName isEqualToString: NSAccessibilityFocusedAttribute])        return [NSNumber numberWithBool: m_object->isFocused()];    if ([attributeName isEqualToString: NSAccessibilityEnabledAttribute])        return [NSNumber numberWithBool: m_object->isEnabled()];    if ([attributeName isEqualToString: NSAccessibilitySizeAttribute]) {        IntSize s = m_object->size();        return [NSValue valueWithSize: NSMakeSize(s.width(), s.height())];    }    if ([attributeName isEqualToString: NSAccessibilityPositionAttribute])        return [self position];    if ([attributeName isEqualToString: NSAccessibilityWindowAttribute] ||        [attributeName isEqualToString: NSAccessibilityTopLevelUIElementAttribute]) {        FrameView* fv = m_object->documentFrameView();        if (fv)            return [fv->platformWidget() window];        return nil;    }        if ([attributeName isEqualToString:NSAccessibilityAccessKeyAttribute]) {        AtomicString accessKey = m_object->accessKey();        if (accessKey.isNull())            return nil;        return accessKey;    }        if (m_object->isDataTable()) {        // TODO: distinguish between visible and non-visible rows        if ([attributeName isEqualToString:NSAccessibilityRowsAttribute] ||             [attributeName isEqualToString:NSAccessibilityVisibleRowsAttribute]) {            return convertToNSArray(static_cast<AccessibilityTable*>(m_object)->rows());        }        // TODO: distinguish between visible and non-visible columns        if ([attributeName isEqualToString:NSAccessibilityColumnsAttribute] ||             [attributeName isEqualToString:NSAccessibilityVisibleColumnsAttribute]) {            return convertToNSArray(static_cast<AccessibilityTable*>(m_object)->columns());        }                // HTML tables don't support these        if ([attributeName isEqualToString:NSAccessibilitySelectedColumnsAttribute] ||             [attributeName isEqualToString:NSAccessibilitySelectedRowsAttribute] ||            [attributeName isEqualToString:NSAccessibilitySelectedCellsAttribute])            return nil;                if ([attributeName isEqualToString:(NSString *)kAXColumnHeaderUIElementsAttribute]) {            AccessibilityObject::AccessibilityChildrenVector columnHeaders;            static_cast<AccessibilityTable*>(m_object)->columnHeaders(columnHeaders);            return convertToNSArray(columnHeaders);                    }                if ([attributeName isEqualToString:NSAccessibilityHeaderAttribute]) {            AccessibilityObject* headerContainer = static_cast<AccessibilityTable*>(m_object)->headerContainer();            if (headerContainer)                return headerContainer->wrapper();            return nil;        }        if ([attributeName isEqualToString:NSAccessibilityRowHeaderUIElementsAttribute]) {            AccessibilityObject::AccessibilityChildrenVector rowHeaders;            static_cast<AccessibilityTable*>(m_object)->rowHeaders(rowHeaders);            return convertToNSArray(rowHeaders);                                }                if ([attributeName isEqualToString:NSAccessibilityVisibleCellsAttribute]) {            AccessibilityObject::AccessibilityChildrenVector cells;            static_cast<AccessibilityTable*>(m_object)->cells(cells);            return convertToNSArray(cells);        }            }        if (m_object->isTableRow()) {        if ([attributeName isEqualToString:NSAccessibilityIndexAttribute])            return [NSNumber numberWithInt:static_cast<AccessibilityTableRow*>(m_object)->rowIndex()];    }        if (m_object->isTableColumn()) {        if ([attributeName isEqualToString:NSAccessibilityIndexAttribute])            return [NSNumber numberWithInt:static_cast<AccessibilityTableColumn*>(m_object)->columnIndex()];                // rows attribute for a column is the list of all the elements in that column at each row        if ([attributeName isEqualToString:NSAccessibilityRowsAttribute] ||             [attributeName isEqualToString:NSAccessibilityVisibleRowsAttribute]) {            return convertToNSArray(static_cast<AccessibilityTableColumn*>(m_object)->children());        }        if ([attributeName isEqualToString:NSAccessibilityHeaderAttribute]) {            AccessibilityObject* header = static_cast<AccessibilityTableColumn*>(m_object)->headerObject();            if (!header)                return nil;            return header->wrapper();        }    }        if (m_object->isTableCell()) {        if ([attributeName isEqualToString:NSAccessibilityRowIndexRangeAttribute]) {            pair<int, int> rowRange;            static_cast<AccessibilityTableCell*>(m_object)->rowIndexRange(rowRange);            return [NSValue valueWithRange:NSMakeRange(rowRange.first, rowRange.second)];        }          if ([attributeName isEqualToString:NSAccessibilityColumnIndexRangeAttribute]) {            pair<int, int> columnRange;            static_cast<AccessibilityTableCell*>(m_object)->columnIndexRange(columnRange);            return [NSValue valueWithRange:NSMakeRange(columnRange.first, columnRange.second)];        }      }        if ((m_object->isListBox() ||m_object->isList()) && [attributeName isEqualToString:NSAccessibilityOrientationAttribute])        return NSAccessibilityVerticalOrientationValue;    if ([attributeName isEqualToString: @"AXSelectedTextMarkerRange"])        return [self textMarkerRangeForSelection];        if (m_object->isAccessibilityRenderObject()) {        RenderObject* renderer = static_cast<AccessibilityRenderObject*>(m_object)->renderer();        if (!renderer)            return nil;                if ([attributeName isEqualToString: @"AXStartTextMarker"])            return textMarkerForVisiblePosition(startOfDocument(renderer->document()));        if ([attributeName isEqualToString: @"AXEndTextMarker"])            return textMarkerForVisiblePosition(endOfDocument(renderer->document()));        if ([attributeName isEqualToString:NSAccessibilityBlockQuoteLevelAttribute])            return [NSNumber numberWithInt:blockquoteLevel(renderer)];    } else {        if ([attributeName isEqualToString:NSAccessibilityBlockQuoteLevelAttribute]) {            AccessibilityObject* parent = m_object->parentObjectUnignored();            if (!parent)                return [NSNumber numberWithInt:0];            return [parent->wrapper() accessibilityAttributeValue:NSAccessibilityBlockQuoteLevelAttribute];                }    }        if ([attributeName isEqualToString: NSAccessibilityLinkedUIElementsAttribute]) {        AccessibilityObject::AccessibilityChildrenVector linkedUIElements;        m_object->linkedUIElements(linkedUIElements);        if (linkedUIElements.size() == 0)            return nil;        return convertToNSArray(linkedUIElements);    }    if ([attributeName isEqualToString: NSAccessibilitySelectedAttribute])        return [NSNumber numberWithBool:m_object->isSelected()];    if ([attributeName isEqualToString: NSAccessibilityServesAsTitleForUIElementsAttribute] && m_object->isMenuButton()) {        AccessibilityObject* uiElement = static_cast<AccessibilityRenderObject*>(m_object)->menuForMenuButton();        if (uiElement)            return [NSArray arrayWithObject:uiElement->wrapper()];    }    if ([attributeName isEqualToString:NSAccessibilityTitleUIElementAttribute]) {        AccessibilityObject* obj = m_object->titleUIElement();        if (obj)            return obj->wrapper();        return nil;    }        return nil;}- (id)accessibilityFocusedUIElement{    if (!m_object)        return nil;    m_object->updateBackingStore();    RefPtr<AccessibilityObject> focusedObj = m_object->focusedUIElement();    if (!focusedObj)        return nil;        return focusedObj->wrapper();}- (id)accessibilityHitTest:(NSPoint)point{    if (!m_object)        return nil;    m_object->updateBackingStore();    RefPtr<AccessibilityObject> axObject = m_object->doAccessibilityHitTest(IntPoint(point));    if (axObject)        return NSAccessibilityUnignoredAncestor(axObject->wrapper());    return NSAccessibilityUnignoredAncestor(self);}- (BOOL)accessibilityIsAttributeSettable:(NSString*)attributeName{    if (!m_object)        return nil;    m_object->updateBackingStore();    if ([attributeName isEqualToString: @"AXSelectedTextMarkerRange"])        return YES;    if ([attributeName isEqualToString: NSAccessibilityFocusedAttribute])        return m_object->canSetFocusAttribute();    if ([attributeName isEqualToString: NSAccessibilityValueAttribute])        return m_object->canSetValueAttribute();    if ([attributeName isEqualToString: NSAccessibilitySelectedAttribute])        return m_object->canSetSelectedAttribute();        if ([attributeName isEqualToString: NSAccessibilitySelectedChildrenAttribute])        return m_object->canSetSelectedChildrenAttribute();    if ([attributeName isEqualToString: NSAccessibilitySelectedTextAttribute] ||        [attributeName isEqualToString: NSAccessibilitySelectedTextRangeAttribute] ||        [attributeName isEqualToString: NSAccessibilityVisibleCharacterRangeAttribute])        return m_object->canSetTextRangeAttributes();        return NO;}// accessibilityShouldUseUniqueId is an AppKit method we override so that// objects will be given a unique ID, and therefore allow AppKit to know when they// become obsolete (e.g. when the user navigates to a new web page, making this one// unrendered but not deallocated because it is in the back/forward cache).// It is important to call NSAccessibilityUnregisterUniqueIdForUIElement in the// appropriate place (e.g. dealloc) to remove these non-retained references from// AppKit's id mapping tables. We do this in detach by calling unregisterUniqueIdForUIElement.//// Registering an object is also required for observing notifications. Only registered objects can be observed.- (BOOL)accessibilityIsIgnored{    if (!m_object)        return nil;    m_object->updateBackingStore();    if (m_object->isAttachment())        return [[self attachmentView] accessibilityIsIgnored];    return m_object->accessibilityIsIgnored();}- (NSArray* )accessibilityParameterizedAttributeNames{    if (!m_object)        return nil;    m_object->updateBackingStore();    if (m_object->isAttachment())         return nil;    static NSArray* paramAttrs = nil;    static NSArray* textParamAttrs = nil;    static NSArray* tableParamAttrs = nil;    if (paramAttrs == nil) {        paramAttrs = [[NSArray alloc] initWithObjects:                      @"AXUIElementForTextMarker",                      @"AXTextMarkerRangeForUIElement",                      @"AXLineForTextMarker",                      @"AXTextMarkerRangeForLine",                      @"AXStringForTextMarkerRange",                      @"AXTextMarkerForPosition",                      @"AXBoundsForTextMarkerRange",                      @"AXAttributedStringForTextMarkerRange",                      @"AXTextMarkerRangeForUnorderedTextMarkers",                      @"AXNextTextMarkerForTextMarker",                      @"AXPreviousTextMarkerForTextMarker",                      @"AXLeftWordTextMarkerRangeForTextMarker",                      @"AXRightWordTextMarkerRangeForTextMarker",                      @"AXLeftLineTextMarkerRangeForTextMarker",                      @"AXRightLineTextMarkerRangeForTextMarker",                      @"AXSentenceTextMarkerRangeForTextMarker",                      @"AXParagraphTextMarkerRangeForTextMarker",                      @"AXNextWordEndTextMarkerForTextMarker",                      @"AXPreviousWordStartTextMarkerForTextMarker",                      @"AXNextLineEndTextMarkerForTextMarker",                      @"AXPreviousLineStartTextMarkerForTextMarker",                      @"AXNextSentenceEndTextMarkerForTextMarker",                      @"AXPreviousSentenceStartTextMarkerForTextMarker",                      @"AXNextParagraphEndTextMarkerForTextMarker",                      @"AXPreviousParagraphStartTextMarkerForTextMarker",                      @"AXStyleTextMarkerRangeForTextMarker",                      @"AXLengthForTextMarkerRange",                      NSAccessibilityBoundsForRangeParameterizedAttribute,                      nil];    }    if (textParamAttrs == nil) {        NSMutableArray* tempArray = [[NSMutableArray alloc] initWithArray:paramAttrs]

⌨️ 快捷键说明

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