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

📄 accessibilityobjectwrapper.mm

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 MM
📖 第 1 页 / 共 5 页
字号:
    static NSArray* groupAttrs = nil;    static NSArray* inputImageAttrs = nil;    NSMutableArray* tempArray;    if (attributes == nil) {        attributes = [[NSArray alloc] initWithObjects: NSAccessibilityRoleAttribute,                      NSAccessibilitySubroleAttribute,                      NSAccessibilityRoleDescriptionAttribute,                      NSAccessibilityChildrenAttribute,                      NSAccessibilityHelpAttribute,                      NSAccessibilityParentAttribute,                      NSAccessibilityPositionAttribute,                      NSAccessibilitySizeAttribute,                      NSAccessibilityTitleAttribute,                      NSAccessibilityDescriptionAttribute,                      NSAccessibilityValueAttribute,                      NSAccessibilityFocusedAttribute,                      NSAccessibilityEnabledAttribute,                      NSAccessibilityWindowAttribute,                      @"AXSelectedTextMarkerRange",                      @"AXStartTextMarker",                      @"AXEndTextMarker",                      @"AXVisited",                      NSAccessibilityLinkedUIElementsAttribute,                      NSAccessibilitySelectedAttribute,                      NSAccessibilityBlockQuoteLevelAttribute,                      NSAccessibilityTopLevelUIElementAttribute,                      nil];    }    if (commonMenuAttrs == nil) {        commonMenuAttrs = [[NSArray alloc] initWithObjects: NSAccessibilityRoleAttribute,                            NSAccessibilityRoleDescriptionAttribute,                            NSAccessibilityChildrenAttribute,                            NSAccessibilityParentAttribute,                            NSAccessibilityEnabledAttribute,                            NSAccessibilityPositionAttribute,                            NSAccessibilitySizeAttribute,                            nil];    }    if (anchorAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:NSAccessibilityURLAttribute];        [tempArray addObject:NSAccessibilityAccessKeyAttribute];        anchorAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (webAreaAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:@"AXLinkUIElements"];        [tempArray addObject:@"AXLoaded"];        [tempArray addObject:@"AXLayoutCount"];        [tempArray addObject:NSAccessibilityURLAttribute];        webAreaAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (textAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:NSAccessibilityNumberOfCharactersAttribute];        [tempArray addObject:NSAccessibilitySelectedTextAttribute];        [tempArray addObject:NSAccessibilitySelectedTextRangeAttribute];        [tempArray addObject:NSAccessibilityVisibleCharacterRangeAttribute];        [tempArray addObject:NSAccessibilityInsertionPointLineNumberAttribute];        [tempArray addObject:NSAccessibilityTitleUIElementAttribute];        [tempArray addObject:NSAccessibilityAccessKeyAttribute];        textAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (listBoxAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:NSAccessibilitySelectedChildrenAttribute];        [tempArray addObject:NSAccessibilityVisibleChildrenAttribute];        [tempArray addObject:NSAccessibilityOrientationAttribute];        [tempArray addObject:NSAccessibilityTitleUIElementAttribute];        [tempArray addObject:NSAccessibilityAccessKeyAttribute];        listBoxAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (rangeAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:NSAccessibilityTopLevelUIElementAttribute];        [tempArray addObject:NSAccessibilityValueAttribute];        [tempArray addObject:NSAccessibilityMinValueAttribute];        [tempArray addObject:NSAccessibilityMaxValueAttribute];        rangeAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (menuBarAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:commonMenuAttrs];        [tempArray addObject:NSAccessibilitySelectedChildrenAttribute];        [tempArray addObject:NSAccessibilityVisibleChildrenAttribute];        [tempArray addObject:NSAccessibilityTitleUIElementAttribute];        menuBarAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (menuAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:commonMenuAttrs];        [tempArray addObject:NSAccessibilitySelectedChildrenAttribute];        [tempArray addObject:NSAccessibilityVisibleChildrenAttribute];        [tempArray addObject:NSAccessibilityTitleUIElementAttribute];        menuAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (menuItemAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:commonMenuAttrs];        [tempArray addObject:NSAccessibilityTitleAttribute];        [tempArray addObject:NSAccessibilityHelpAttribute];        [tempArray addObject:NSAccessibilitySelectedAttribute];        [tempArray addObject:(NSString*)kAXMenuItemCmdCharAttribute];        [tempArray addObject:(NSString*)kAXMenuItemCmdVirtualKeyAttribute];        [tempArray addObject:(NSString*)kAXMenuItemCmdGlyphAttribute];        [tempArray addObject:(NSString*)kAXMenuItemCmdModifiersAttribute];        [tempArray addObject:(NSString*)kAXMenuItemMarkCharAttribute];        [tempArray addObject:(NSString*)kAXMenuItemPrimaryUIElementAttribute];        [tempArray addObject:NSAccessibilityServesAsTitleForUIElementsAttribute];        menuItemAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (menuButtonAttrs == nil) {        menuButtonAttrs = [[NSArray alloc] initWithObjects:NSAccessibilityRoleAttribute,            NSAccessibilityRoleDescriptionAttribute,            NSAccessibilityParentAttribute,            NSAccessibilityPositionAttribute,            NSAccessibilitySizeAttribute,            NSAccessibilityWindowAttribute,            NSAccessibilityTopLevelUIElementAttribute,            NSAccessibilityEnabledAttribute,            NSAccessibilityFocusedAttribute,            NSAccessibilityTitleAttribute,            NSAccessibilityChildrenAttribute, nil];    }    if (controlAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:NSAccessibilityTitleUIElementAttribute];        [tempArray addObject:NSAccessibilityAccessKeyAttribute];        controlAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (tableAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:NSAccessibilityRowsAttribute];        [tempArray addObject:NSAccessibilityVisibleRowsAttribute];        [tempArray addObject:NSAccessibilityColumnsAttribute];        [tempArray addObject:NSAccessibilityVisibleColumnsAttribute];        [tempArray addObject:NSAccessibilityVisibleCellsAttribute];        [tempArray addObject:(NSString *)kAXColumnHeaderUIElementsAttribute];        [tempArray addObject:NSAccessibilityRowHeaderUIElementsAttribute];        [tempArray addObject:NSAccessibilityHeaderAttribute];        tableAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (tableRowAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:NSAccessibilityIndexAttribute];        tableRowAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (tableColAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:NSAccessibilityIndexAttribute];        [tempArray addObject:NSAccessibilityHeaderAttribute];        [tempArray addObject:NSAccessibilityRowsAttribute];        [tempArray addObject:NSAccessibilityVisibleRowsAttribute];        tableColAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (tableCellAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:NSAccessibilityRowIndexRangeAttribute];        [tempArray addObject:NSAccessibilityColumnIndexRangeAttribute];        tableCellAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];            }    if (groupAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:attributes];        [tempArray addObject:NSAccessibilityTitleUIElementAttribute];        groupAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }    if (inputImageAttrs == nil) {        tempArray = [[NSMutableArray alloc] initWithArray:controlAttrs];        [tempArray addObject:NSAccessibilityURLAttribute];        [tempArray addObject:NSAccessibilityAccessKeyAttribute];        inputImageAttrs = [[NSArray alloc] initWithArray:tempArray];        [tempArray release];    }        if (m_object->isPasswordField())        return attributes;    if (m_object->isWebArea())        return webAreaAttrs;        if (m_object->isTextControl())        return textAttrs;    if (m_object->isAnchor() || m_object->isImage())        return anchorAttrs;    if (m_object->isDataTable())        return tableAttrs;    if (m_object->isTableRow())        return tableRowAttrs;    if (m_object->isTableColumn())        return tableColAttrs;    if (m_object->isTableCell())        return tableCellAttrs;        if (m_object->isListBox() || m_object->isList())        return listBoxAttrs;    if (m_object->isProgressIndicator() || m_object->isSlider())        return rangeAttrs;    if (m_object->isInputImage())        return inputImageAttrs;        if (m_object->isControl())        return controlAttrs;        if (m_object->isGroup())        return groupAttrs;        if (m_object->isMenu())        return menuAttrs;    if (m_object->isMenuBar())        return menuBarAttrs;    if (m_object->isMenuButton())        return menuButtonAttrs;    if (m_object->isMenuItem())        return menuItemAttrs;    return attributes;}- (VisiblePositionRange)visiblePositionRangeForTextMarkerRange:(WebCoreTextMarkerRange*) textMarkerRange{    return VisiblePositionRange(visiblePositionForStartOfTextMarkerRange(textMarkerRange), visiblePositionForEndOfTextMarkerRange(textMarkerRange));}- (NSArray*)renderWidgetChildren{    Widget* widget = m_object->widget();    if (!widget)        return nil;    return [(widget->platformWidget()) accessibilityAttributeValue: NSAccessibilityChildrenAttribute];}static void convertToVector(NSArray* array, AccessibilityObject::AccessibilityChildrenVector& vector){    unsigned length = [array count];    vector.reserveInitialCapacity(length);    for (unsigned i = 0; i < length; ++i) {        AccessibilityObject* obj = [[array objectAtIndex:i] accessibilityObject];        if (obj)            vector.append(obj);    }}static NSMutableArray* convertToNSArray(const AccessibilityObject::AccessibilityChildrenVector& vector){    unsigned length = vector.size();    NSMutableArray* array = [NSMutableArray arrayWithCapacity: length];    for (unsigned i = 0; i < length; ++i) {        AccessibilityObjectWrapper* wrapper = vector[i]->wrapper();        ASSERT(wrapper);        if (wrapper) {            // we want to return the attachment view instead of the object representing the attachment.            // otherwise, we get palindrome errors in the AX hierarchy            if (vector[i]->isAttachment() && [wrapper attachmentView])                [array addObject:[wrapper attachmentView]];            else                [array addObject:wrapper];        }    }    return array;}- (WebCoreTextMarkerRange*)textMarkerRangeForSelection{    VisibleSelection selection = m_object->selection();    if (selection.isNone())        return nil;    return textMarkerRangeFromVisiblePositions(selection.visibleStart(), selection.visibleEnd());}- (NSValue*)position{    IntRect rect = m_object->elementRect();        // The Cocoa accessibility API wants the lower-left corner.    NSPoint point = NSMakePoint(rect.x(), rect.bottom());    FrameView* frameView = m_object->documentFrameView();    if (frameView) {        NSView* view = frameView->documentView();        point = [[view window] convertBaseToScreen: [view convertPoint: point toView:nil]];    }    return [NSValue valueWithPoint: point];}typedef HashMap<int, NSString*> AccessibilityRoleMap;static const AccessibilityRoleMap& createAccessibilityRoleMap(){    struct RoleEntry {        AccessibilityRole value;        NSString* string;    };        static const RoleEntry roles[] = {        { UnknownRole, NSAccessibilityUnknownRole },        { ButtonRole, NSAccessibilityButtonRole },        { RadioButtonRole, NSAccessibilityRadioButtonRole },        { CheckBoxRole, NSAccessibilityCheckBoxRole },        { SliderRole, NSAccessibilitySliderRole },        { TabGroupRole, NSAccessibilityTabGroupRole },        { TextFieldRole, NSAccessibilityTextFieldRole },

⌨️ 快捷键说明

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